diff --git a/doc/3.1.x/developer/Sirius Developer Manual.textile b/doc/3.1.x/developer/Sirius Developer Manual.textile
deleted file mode 100644
index f85b3a6..0000000
--- a/doc/3.1.x/developer/Sirius Developer Manual.textile
+++ /dev/null
@@ -1,18 +0,0 @@
-h1. Sirius Developer Manual
-
-This document gives an overview of the internals of the _Sirius_ platform, and describes the main APIs and extension points.
-* "*Architecture Overview*":Architecture_Overview.html provides a high-level view of how Sirius is structured.
-* "*Architecture and Concepts*":Architecture.html describes the general architecture of the system, the main concepts and top-level entry points in the APIs.
-* "*Meta-models*":Meta-models.html gives a high-level description of the various meta-models used internally by Sirius, to represent both _VSMs_ and representation files.
-* The Sirius platform is extensible, and the next sections describe some common extension scenarios:
-** "*Integration with Product Life Cycle Management*":integration-plm.html
-** "*Deploy a Modeler Description File*":integration-modeler_description_file_deployment.html
-** "*Provide custom save dialog*":extensions-provide_save_dialog.html
-** "*Provide custom arrange-all*":extensions-provide_custom-arrange-all.html
-** "*Provide custom style*":extensions-provide_custom_style.html
-** "*Provide tab-bar extensions*":extensions-provide_tabbar_extensions.html
-** "*Provide custom representation files migration*":extensions-provide_migrate_contribution.html
-** "*Provide custom repair participant*":extensions-provide_repair_contribution.html
-** "*Provide custom cell editor*":extensions-provide_celleditor.html
-* The Sirius platform publishs a set of API, and the next sections describe some which require particular attention:
-** "*SiriusCrossReferenceAdapter*":siriusCrossReferenceAdapter.html
diff --git a/doc/6.0.x/Glossary.html b/doc/6.0.x/Glossary.html
new file mode 100644
index 0000000..b4927d2
--- /dev/null
+++ b/doc/6.0.x/Glossary.html
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title>Glossary</title>
+    <link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+    <link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+  </head>
+  <body>
+    <h1 id="Glossary" class="page-header">Glossary</h1>
+
+    <p>This document provides definitions for the technical terms and concepts used in
+      Sirius, and in particular in the rest of this documentation.</p><p>For concepts
+      which concern end-users, it assumes some basic knowledge of Eclipse terminology. If
+      you are not familiar with it, please refer to the Eclipse documentation itself. For
+      concepts targeted to specifier (and developers), it also assumes knowledge of EMF
+      and relegated technologies (including Java for developers). Again, refer to the
+      documentation of these frameworks or tools as needed.</p>
+
+  <dl>
+    <dt id="Dialect">Dialect</dt>
+    <dd>A kind of representation supported by Sirius. Out of the box, Sirius
+      supports three dialects: diagrams, tables, and trees. Sequence diagrams and
+      cross-tables, which are special kinds of diagrams (resp. tables) can also be though
+      of as dialects, although technically they are not.</dd>
+
+    <dt id="ModelingProject">Modeling Project</dt>
+    <dd>A special kind of project in your workspace which makes it easy to manipulate
+      representation files and semantic models in a consistent way.</dd>
+
+    <dt id="Representation">Representation</dt>
+    <dd>A particular diagram, table, or tree which you created on your semantic model. It
+      is simply a more general term than &#171;diagram&#187; which is also usable for
+      other dialects.</dd>
+
+    <dt id="RepresentationFile">Representation File</dt>
+    <dd>A file in which Sirius stores all informations related to which representations you created,
+      what appears on them, the positions and colors of the elements, etc. This files have a
+      <code>.aird</code> extension (typically <code>representations.aird</code>).
+      Representation files reference the semantic model(s) they contain representations
+      for, but you semantic models are kept unaware (and unpolluted) of any
+      Sirius-specific data.</dd>
+
+    <dt id="Resource">Resource</dt>
+    <dd>A generic term for a file (in your workspace or inside a plug-in) which contains a
+      model. The file extension (e.g. <code>.uml</code>) indicates what kind of semantic
+      model it contains.</dd>
+
+    <dt id="SemanticModel">Semantic Model</dt>
+    <dd>The model (or models) which contains your business data. It can be stored in one
+      of several resources (files) which can reference each other. The type of semantic
+      model can be different for each user. It can be based on a standard (for
+      example <code>.uml</code> files for UML models) or based on a <em>Domain Specific Model</em>
+      (sometimes called <em>Domain Specific Language</em>) which was specially
+      created for your needs.</dd>
+    
+    <dt id="Viewpoint">Viewpoint</dt>
+    <dd>A set of consistent representation descriptions which provide a specific point of
+      view on some kind of semantic model. For example we could have a <em>UML Structural</em>
+      viewpoint, which describes the sub-set of all the standard UML
+      diagrams which deal only with structural aspects of UML models (as opposed to
+      behavioral or requirements aspects). Viewpoints are defined in
+      <em>Viewpoint Specification Models</em> and packaged as Eclipse plug-ins. Once you install such a
+      plug-in, the viewpoints it defines will be available to you (with all the representations
+      they define) on all compatible semantic models.</dd>
+    
+    <dt id="VSM_">VSM</dt>
+    <dd>See <a href="#VSM">Viewpoint Specification Model</a>.</dd>
+
+    <dt id="VSM">Viewpoint Specification Model</dt>
+    <dd>The model, stored in resources with the <code>.odesign</code> extension, in which an architect
+      defines and configures viewpoints and their associated representations.</dd>
+
+    <dt id="VSP_">VSP</dt>
+    <dd>See <a href="#VSP">Viewpoint Specification Project</a>.</dd>
+
+    <dt id="VSP">Viewpoint Specification Project</dt>
+    <dd>An Eclipse plug-in project which contains a <a href="#VSM">VSM</a> and registers it using the
+      proper extension point so that it can be deployed correctly.</dd>
+  </dl>
+  
+  </body>
+</html>
diff --git a/doc/6.0.x/Release_Notes.html b/doc/6.0.x/Release_Notes.html
new file mode 100644
index 0000000..af54d6e
--- /dev/null
+++ b/doc/6.0.x/Release_Notes.html
@@ -0,0 +1,1317 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Release_Notes</title>
+		<link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ReleaseNotesforSirius">Release Notes for Sirius</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#ReleaseNotesforSirius">Release Notes for Sirius</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#sirius6.0.2">Changes in Sirius 6.0.2</a>
+					</li>
+					<li>
+						<a href="#sirius6.0.1">Changes in Sirius 6.0.1</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius6.0.0">Changes in Sirius 6.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges2">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges2">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges2">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius5.1.1">Changes in Sirius 5.1.1</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges3">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges3">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius5.1.0">Changes in Sirius 5.1.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges4">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges3">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges4">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius5.0.1">Changes in Sirius 5.0.1</a>
+					</li>
+					<li>
+						<a href="#sirius5.0.0">Changes in Sirius 5.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges5">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges5">Developer-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges4">Specifier-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<p>This document contains the release notes for recent major releases of Sirius. See also 
+			<a href="Release_Notes_Previous.html">the release notes from previous versions</a> for details about older releases.
+		</p>
+		<h2 id="sirius6.0.2">Changes in Sirius 6.0.2</h2>
+		<p>Sirius 6.0.2 fixes an 
+			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=539333">important issue</a> which is present in all previous versions of Sirius but only manifests itself under Windows and when using Eclipse SimRel 2018-09 or later (technically, the bug appear when using Sirius with JFace 3.14.100 or later). The symptom is that the 
+			<em>Model Explorer</em> view fails to initialize with an error message about a 
+			<code>ClassCastException</code>.
+		</p>
+		<h2 id="sirius6.0.1">Changes in Sirius 6.0.1</h2>
+		<p>Sirius 6.0.1 is a service release which contains only important bug fixes compared to version 6.0.0.</p>
+		<p>
+			<em>Note:</em> The new (and still experimental) 
+			<em>Workflow</em> and 
+			<em>Server</em> features depend on a specific version of Eclipse Jetty which is available in the main Eclipse Photon repository. They can not be used under Oxygen (which include older and incompatible versions of Jetty).
+		</p>
+		<h3 id="UserVisibleChanges">User-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<a href="specifier/workflows/Workflows.html">Initial documentation</a> has been added for the &#8220;Workflow&#8221; feature introduced in 6.0.0 (which is still experimental). 
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-info">Modified</span> The Acceleo version has been changed from 3.7.2 to 3.7.4.</li>
+		</ul>
+		<h2 id="sirius6.0.0">Changes in Sirius 6.0.0</h2>
+		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> A new feature allows user to insert vertical blank space in sequence diagram. You can refer to the 
+				<a href="user/sequences/Sequence%20Diagrams.html#insert_vertical_blank_space">user documentation </a> for more details. 
+			</li>
+			<li><span class="label label-success">Added</span> A new feature called &#8220;Generic Edge Creation Tool&#8221; allows to create an edge by starting to select the source and the target before choosing the concrete edge creation tool. That allows to restrict the list of possible edge creation tools (possibly only one edge or no one) according to the selected source and target.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/genericEdgeCreationTool.png"/>
+		</p>
+		<ul>
+			<li> <span class="label label-success">Added</span> A new feature called &#8220;Link Note&#8221; has been added. It is a special kind of note which references any existing representation in the project. It is possible to navigate to the target representation by double clicking on a link note. You can refer to the 
+				<a href="user/diagrams/Diagrams.html#notes">user documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> The color palette for text, line and fill buttons, in appearance tab in properties view, has been enhanced. Before, when clicking on text, line or fill buttons, the available colors were only 12 arbitrary colors. Now, there are 50 maximum colors distributed in 10 columns. The displayed colors are
+				<ul>
+					<li>a shading of black to white then,</li>
+					<li>all fixed colors defined in VSM of all selected viewpoints and </li>
+					<li>the Sirius fixed colors following the colors of the rainbow.</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/color_palette.png"/>
+		</p>
+		<h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> An action is added in main toolbar to reload the VSM of installed plug-ins that may have changed. Refer to the 
+				<a href="specifier/general/Specifying_Viewpoints.html#reloadVSM">specifier documentation</a> for details.
+			</li>
+			<li><span class="label label-success">Added</span> In the VSM editor, when the cursor is inside an interpreted expression at a location which corresponds to a Java service invocation, hitting 
+				<strong>F3</strong> will navigate to the service implementation in a Java editor. See 
+				<a href="specifier/general/Writing_Queries.html#service_navigation">the documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> Specifier can now define a background color for a diagram representation. It is possible by specifying color in the 
+				<em>Background</em> property section of the 
+				<em>Diagram Description</em>. Pre-defined system colors and colors from the 
+				<em>User Color Palette</em> are supported. See 
+				<a href="specifier/diagrams/Diagrams.html#diagram_description">the documentation</a> for details.
+			</li>
+			<li><span class="label label-info">Modified</span> Warning: Java service throwing an 
+				<code>OperationCanceledException</code> with a message containing the specific key word "
+				<code>-RT-</code>" has now a specific behavior. In this case, the 
+				<code>OperationCanceledException</code> is rethrown to rollback the command if this Java service is called from an AQL expression or through the service interpreter. You can refer to 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=531487">bugzilla 531487</a> for more details.
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-info">Modified</span> The SWTBot test framework version has been upgraded toward SWTBot 2.6. The main impacts are described below:
+				<ul>
+					<li>The way we retrieved some views by using 
+						<code>bot.viewByTitle</code> (like &#8220;Problems&#8221; or &#8220;Error Log&#8221;) may not work anymore. Use 
+						<code>bot.viewByPartName</code> instead.
+					</li>
+					<li>
+						<code>org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot.contextMenu(String)</code> raise a 
+						<code>WidgetNotFoundException</code> instead of a 
+						<code>TimeoutException</code>.
+					</li>
+					<li>The 
+						<code>org.eclipse.sirius.tests.swtbot.support.utils.dnd.DndUtil</code> has been updated to be compatible with Oxygen and Photon platforms. Some methods may not work anymore on Neon platform.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> Some changes have been done in the image export tooling. Main impacts are described below:
+				<ul>
+					<li>The export of images, methods 
+						<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction.execute</code> and 
+						<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction.createImageFiles</code>, do not open UI Dialogs anymore. It throws an 
+						<code>java.lang.reflect.InvocationTargetException</code> that wraps the real cause of the error (
+						<code>org.eclipse.sirius.ui.tools.api.actions.export.SizeTooLargeException</code> or 
+						<code>java.lang.OutOfMemoryError</code>). Callers have to handle properly the exception.
+					</li>
+					<li>The mechanism allowing to authorize or forbid the export of an image, method 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService.isTooBig</code>, can now handle very large images that previously leads to incorrect exports.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> Since Sirius 5.0.0, 
+				<code>org.eclipse.sirius.ext.jface.viewers.IToolTipProvider</code> is not used anymore to provide a tooltip on diagram element decorations defined in the VSM. The tooltip is defined directly with an interpreted expression on 
+				<code>GenericDecorationDescription</code>, 
+				<code>MappingBasedDecoration</code> and 
+				<code>SemanticBasedDecoration</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IExpressionProposal</code> and its only implementation 
+				<code>DefaultExpressionProposal</code> (in the same package) have been removed. They were not used anywhere, expression completion API is actually defined in package 
+				<code>org.eclipse.sirius.common.tools.api.contentassist</code> which has its own types.  
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistry.reloadAllFromPlugins()</code> has been added to reload, from the runtime, all the VSMs of installed plug-ins and have the effect dynamically in the runtime.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistryImpl()</code> has been moved to 
+				<code>org.eclipse.sirius.business.internal.componentization</code> package.
+			</li>
+			<li><span class="label label-danger">Removed</span> The whole 
+				<code>contribution</code> metamodel, which lived in package 
+				<code>org.eclipse.sirius.description.contribution</code>, has been removed. It corresponded to an experimental feature which has been abandonned long ago.
+			</li>
+			<li><span class="label label-danger">Removed</span> The whole 
+				<code>DRefreshable.refresh()</code> EOperation has been removed from the metamodel, along with all its implementations. Client code that needs the functionality can use either 
+				<code>DialectManager.refresh()</code> for 
+				<code>DRepesentations</code> or the new 
+				<code>org.eclipse.sirius.diagram.tools.api.command.view.RefreshSiriusElement.refresh(DRefreshable)</code> static method for diagram elements (
+				<code>DRefreshable.refresh()</code> was a no-op for elements of other dialects). 
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.viewpointSpecificationModel</code> extension point has been removed. It was part of the same experimental feauture and not actually used in practice.
+			</li>
+			<li><span class="label label-danger">Removed</span> In 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper</code>, the method 
+				<code>getViewpointSelection()</code> has been removed. It used an internal type as argument which has also been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> In 
+				<code>org.eclipse.sirius.business.api.helper.SiriusResourceHelper</code>, the method 
+				<code>getCorrespondingViewpoint(Session session, URI, boolean)</code> has been removed. It was not used anywhere, the real one is 
+				<code>getCorrespondingViewpoint(Session, Viewpoint)</code> in the same class.
+			</li>
+			<li><span class="label label-danger">Removed</span> In 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code> (and all its implementations), the method 
+				<code>refreshEffectiveRepresentationDescription(DRepresentation, IProgressMonitor)</code> has been removed. It corresponded to an experimental feature which has been abandonned long ago. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramPreferencesKeys.PREF_DISPLAY_GENERIC_EDGE_CREATION_TOOL</code> has been added to make to possible to hide the new generic edge creation tool. See the 
+				<em>User-Visible Changes</em> or the user documentation for more details.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor.createStraightenContribution()</code> has been added to make accessible the creation of the Straighten To tabbar contribution item.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.customLayoutAlgorithmProvider</code> extension point has been added. It allows to contribute layout algorithms that can be configured directly in the VSM. This extension point comes with the following classes as API: 
+				<code>org.eclipse.sirius.diagram.ui.api.layout.CustomLayoutAlgorithmProvider</code>, 
+				<code>org.eclipse.sirius.diagram.ui.api.layout.CustomLayoutAlgorithm</code>, 
+				<code>org.eclipse.sirius.diagram.ui.api.layout.EnumChoice</code> and 
+				<code>org.eclipse.sirius.diagram.ui.api.layout.LayoutOptionFactory</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The class 
+				<code>org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelectionDialog</code> has been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tests.support.api.TestsUtil.isBeforeOxygenPlatform()</code> has been added to detect if the current platform corresponds to a version before Oxygen.
+			</li>
+			<li><span class="label label-info">Modified</span> A 
+				<code>String</code> parameter has been added to the method 
+				<code>org.eclipse.sirius.tests.support.api.TestsUtil.setTargetPlatform()</code>. This new parameter corresponds to the plug-in name from where the tests are currently launched (for example 
+				<code>org.eclipse.sirius.tests.swtbot.Activator.PLUGIN_ID</code>). It avoids to build a wrong target platform containing each Sirius plug-ins twice. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>org.eclipse.sirius.tests.swtbot.support.utils.dnd.DndUtil#dragAndDrop(AbstractSWTBot&lt;? extends Widget&gt;, AbstractSWTBot&lt;? extends Widget&gt;)</code> has been removed. When explicit drop coordinates are not needed, use the standard SWTbot 
+				<code>org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot.dragAndDrop(AbstractSWTBot&lt;? extends Widget&gt;)</code> method instead. 
+			</li>
+		</ul>
+		<h4 id="Migrations">Migrations</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A migration participant has been added to fix diagram with note attachment corrupted (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=533177">bugzilla #533177</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>13.0.0.201804031646</em>.
+			</li>
+		</ul>
+		<h4 id="TranslationKeysChanges">Translation Keys Changes</h4>
+		<h2 id="sirius5.1.1">Changes in Sirius 5.1.1</h2>
+		<h3 id="UserVisibleChanges3">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-info">Modified</span> When exporting a diagram as an image, it is now possible to choose an image size level. Before this, a preference called 
+				<em>AutoScale</em> was available and when it was enable, the diagram was scaled to the maximum size safely allowed by the system. Now, a new preference named 
+				<em>Size of exported images</em> is available in the 
+				<em>Sirius &gt; Sirius Diagram</em> preference page and offer this possibility. Setting size to 
+				<em>Max</em> generates same diagrams as by using the previous preference 
+				<em>AutoScale</em>. This can produce image with big size in long generation time. If 
+				<em>Size of exported images</em> is set to level 
+				<em>Nominal</em>, diagram will be exported with nominal size (quality will be lower but export time will be shorter). This new preference allows you to choose the tradeoff you want. The 
+				<a href="user/diagrams/Diagrams.html#Exportingimages">user documentation </a> details this change with an example. 
+			</li>
+			<li><span class="label label-info">Modified</span> The "
+				<em>Auto Size</em>" action can now be applied on region container. Before that, the action was available only for regions.
+			</li>
+			<li><span class="label label-info">Modified</span> The "
+				<em>Make Same Size</em>" action can now be applied on region container. If selected region containers have the same number of regions, the regions will have the same size. If the region container used for reference has more regions than the other(s), the last region of others will have the size of all remaining regions in the one used for reference.
+			</li>
+			<li><span class="label label-info">Modified</span> In diagrams, the selection by drawing a rectangle on container (using ALT key) now has the same behaviors than selection by drawing a rectangle on the diagram&#8217;s background. You can refer to 
+				<em>Selection</em> section of the 
+				<a href="user/diagrams/Diagrams.html#standardToolId">Standard Tools</a> chapter for more details on this tool.
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
+		<h4 id="Changesinorg.eclipse.sirius2">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.query.SiriusReferenceFinder.of(EObject)</code> has been added to provide an easy way to get the 
+				<code>SiriusReferenceFinder</code> from an 
+				<code>EObject</code> in the Sirius 
+				<code>Session</code>. 
+			</li>
+			<li><span class="label label-info">Modified</span> (experimental) The method 
+				<code>org.eclipse.sirius.business.api.query.SiriusReferenceFinder.getReferencingSiriusElements(Collection&lt;EObject&gt;, SearchScope)</code>. The SearchScope.LOADED_REPRESENTATIONS_SCOPE scope covers the search and result scope. Then, no additional resource will be loaded using this scope.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-warning">Deprecated</span> Preference 
+				<code>PREF_SCALE_DIAGRAMS_ON_EXPORT</code> from 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code> is now deprecated. User should use new preference 
+				<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys</code>: 
+				<code>PREF_SCALE_LEVEL_DIAGRAMS_ON_EXPORT</code>.
+			</li>
+			<li><span class="label label-success">Added</span> A new attribute 
+				<code>margin</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.business.api.DiagramExportResult</code>. This attribute indicates what margin has been used to produce a white frame during diagram export. This attribute is available from the getter 
+				<code>getMargin()</code>. A new constructor is also available to pass on the margin 
+				<code>org.eclipse.sirius.diagram.ui.business.api.DiagramExportResult.DiagramExportResult(DDiagram, double, int, Collection&lt;IPath&gt;)</code>. 
+			</li>
+			<li><span class="label label-info">Modified</span> If you previously override the default Sirius value for 
+				<code>SiriusDiagramUiPreferencesKeys.PREF_SCALE_DIAGRAMS_ON_EXPORT</code>, you must replace this override by an override of the new preference 
+				<code>SiriusUIPreferencesKeys.PREF_SCALE_LEVEL_DIAGRAMS_ON_EXPORT</code>. Example: 
+			</li>
+		</ul>
+		<pre>SiriusEditPlugin.getPlugin().getPreferenceStore().setDefault(SiriusUIPreferencesKeys.PREF_SCALE_LEVEL_DIAGRAMS_ON_EXPORT.name(),0); 
+
+</pre>
+		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A new preference has been added to 
+				<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys</code>: 
+				<code>PREF_SCALE_LEVEL_DIAGRAMS_ON_EXPORT</code>. It is used to control the scaling level behavior when exporting diagrams. Refer to the JavaDoc for the details. 
+			</li>
+			<li><span class="label label-success">Added</span> The type 
+				<code>org.eclipse.sirius.ui.business.api.dialect.ExportFormat</code> has a new attribute representing the scaling level to use for diagram export. It is defined by an integer type. Refer to the JavaDoc for details on its meaning.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support2">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>SiriusTestCase.loadModeler(URI, EditingDomain)</code> allows to load the VSM at the specified URI and register all its Viewpoints in the current testcase. There is a new method, 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase.loadModeler(URI, EditingDomain, boolean)</code>, to allow to load the VSM at the specified URI without registering its viewpoints. It can be useful to load a VSM for an editing domain of another session than the current session of the
+			</li>
+		</ul>
+		<p>testcase.</p>
+		<h2 id="sirius5.1.0">Changes in Sirius 5.1.0</h2>
+		<h3 id="UserVisibleChanges4">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> When exporting a diagram as an image, it is now possible to choose whether or not the diagram should be scaled. If disabled, the diagram will be exported with its normal size (equivalent to a 100% zoom level). If auto-scaling is enabled, the diagram will be scaled to the maximum size safely allowed by the system (this can be different on different OSes). Note that when auto-scaling is enabled, the image files produced may be larger than without. When exporting very large diagrams it is also possible that the diagram will be scaled 
+				<em>down</em> (i.e. with a zoom level smaller than 100%). Enabling auto-scaling can be chosen on a case by case basis from the export dialog; the initial value in the dialog can be controlled by a new preference available in the 
+				<em>Sirius &gt; Sirius Diagram</em> preference page.
+			</li>
+			<li><span class="label label-success">Added</span> The end user can now 
+				<a href="user/diagrams/Diagrams.html#RemoveBendpoints">remove all bend-points</a> on rectilinear edges. It was only possible on oblique edges before. This action is available on edge context menu &#8220;Remove Bend-points&#8221; or by using the shortcut &#8220;Ctrl&#8221; + &#8220;Shift&#8221; + &#8220;-&#8221;. If number of bend-points can not be reduced, remove action will be inefficient.
+			</li>
+			<li><span class="label label-success">Added</span> The status Synchronized/Unsynchronized of the diagram is now displayed in the status bar when the diagram editor has the focus or can be directly displayed 
+				<a href="user/diagrams/Diagrams.html#synchronized_diagram">in the diagram</a> with a decorator.
+			</li>
+			<li><span class="label label-success">Added</span> The user now have a drop down menu in the tabbar with all available straighten to edge actions. </li>
+			<li><span class="label label-success">Added</span> Straighten to actions on edge are now available even if the selection contains incompatible elements (edge labels for example). Their execution affects only compatible edges.</li>
+			<li><span class="label label-success">Added</span> Four new straighten actions are available (with top pinned, with bottom pinned, with left pinned, with right pinned) and allow to straighten edges from the opposed straightening axis point of view.</li>
+			<li><span class="label label-info">Modified</span> In a diagram, when selecting an edge or a node that are not fully displayed in the editor, now, the reveal is not done anymore, that is, the displayed content of the editor is not moved anymore. If the user want to fully see the selected element, he may drag the editor content using center mouse button. </li>
+			<li><span class="label label-info">Modified</span> In a diagram with 
+				<em>snapToGrid</em> enabled:
+				<ul>
+					<li>When performing a drag and drop from the model explorer or a palette tool to the diagram, the new created element is now snapped to the grid.</li>
+					<li>When performing an 
+						<em>Arrange all</em> or an 
+						<em>Arrange Linked Border Node</em> action, all diagram elements are now snapped to the grid.
+					</li>
+					<li>When performing a drag and drop or a tool that will create multiple elements, all created elements are still visible but now snapped to the grid. </li>
+					<li>When creating an edge with a tool that also create the associated border nodes, the border nodes are now snapped near the click location. Before, they were created to respect a shortest path.</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="./images/borderNodesWithSnapToGrid.png"/> 
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> In a sequence diagram, it is now possible to resize the combined fragment when the first or the last operand is selected (increase the size of the first operand to the top, or increase the size of the last operand to the bottom). Before, it was necessary to select the combined fragment itself to resize it. </li>
+			<li><span class="label label-info">Modified</span> In a sequence diagram, it is now possible to resize an 
+				<em>Execution</em> contained in an 
+				<em>Operand</em> without previously resize its 
+				<em>Operand</em> if more space is needed. The 
+				<em>Operand</em>, and if necessary the 
+				<em>Combined Fragment</em>, is resized too.
+			</li>
+			<li><span class="label label-info">Modified</span> In a diagram, the action 
+				<em>Show/Hide label</em> is now visible even if the selection contains invalid elements (ie elements without label). The action is applied only on valid elements of the selection.
+			</li>
+			<li><span class="label label-info">Modified</span> In a diagram, the Line Style actions (Tree, Oblique or Rectilinear Routing Style) is now visible in the contextual menu even if the selection contains invalid elements (other elements than edges). The action is applied only on valid elements of the selection.</li>
+			<li><span class="label label-info">Modified</span> When an user defines a custom bundled image shape for a figure (
+				<a href="developer/extensions-provide_custom_bundled_image_shape.html#bundleImageShape">bundleImageShape</a> ), opening or refreshing a diagram will not display exception anymore when the bundleImageShape extension is not valid. A warning is now displayed in the Error Log view to inform user of which attribute of the extension is not correct.
+			</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> An 
+				<a href="./user/general/Modeling%20Project.html#Migration">automatic migration</a> has been added in this version to fix diagram with edge labels corrupted (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=518870">bugzilla #518870</a> for more details). Contrary to all previous migrations, this one logs an information in the 
+				<em>Error Log</em> view to inform how many labels have been fixed in concerned diagrams. If detected as &#8220;corrupted label&#8221;, the label is reset to its default location (as if you launch the &#8220;Snap Back&#8221; action of it). If at least one label is detected as &#8220;corrupted label&#8221;, the layout is also potentially corrupted (nodes, children of the diagram, with x or y coordinate very big). In this case, the concerned nodes are moved near 5000 (or -5000) as new coordinate. A message is added in this case: 
+				<em>Some nodes have also been moved as the layout of this diagram is corrupted. A Reset Origin and/or manual layout is probably needed for this diagram.</em> The rules applied to detect a corrupted label are the following:
+				<ul>
+					<li>If the label is less than 250 pixels away from the reference point on its corresponding edge, the label is not considered as distant.</li>
+					<li>If the label is more than 1000 pixels away from the reference point on its corresponding edge, the label is considered as distant.</li>
+					<li>Between these 2 limits, the label is considered as distant if the distance between the center of the label and the edge is higher than &#8220;four times the size of the nearest segment&#8221;.</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> In manual refresh mode (
+				<em>Automatic Refresh</em> Sirius preference disabled), when the 
+				<em>Force Refresh</em> option of a tool is enabled in your VSM, only the current representation is refreshed when the tool is applied. Before this version, all open representations were refreshed.
+			</li>
+			<li><span class="label label-info">Modified</span> The filtering expression variables available in the properties view definition in the &#8216;Extends&#8217; tab were renamed to match the following pattern: featureName+&#8216;Description&#8217;.</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Reference Name</em> field of 
+				<em>Create instance</em> completion will display only features with a consistent type with the one specified in 
+				<em>Type Name</em> field (if a type has been specified).
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Type Name</em> field of 
+				<em>Create instance</em> completion will display only types consistent with the feature type specified in 
+				<em>Reference Name</em> field (if a valid feature has been specified).
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
+		<h4 id="Migrations2">Migrations</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A migration has been added to fix diagram with edge labels corrupted (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=518870">bugzilla #518870</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>12.1.0.201706291600</em>.
+			</li>
+			<li><span class="label label-success">Added</span> A new class 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures.SiriusDefaultSizeNodeFigure</code> has been added in plugin 
+				<code>org.eclipse.sirius.ext.gmf.runtime</code>. The goal of the class is to workaround a 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=519250">GMF bug</a>. So if you have created class which inherits from 
+				<code>org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure</code>, you must now use the new 
+				<code>SiriusDefaultSizeNodeFigure</code> instead.
+			</li>
+			<li><span class="label label-success">Added</span> A migration has been added to add an 
+				<code>uid</code> to all instances of type DRepresentation. This 
+				<code>uid</code> is used to reference the DRepresentation from the DRepresentationDescriptor. 
+				<code>DRepresentationDescriptor.repPath</code> has been changed to have 
+				<code>uid</code> as fragment. The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>12.1.0.201707281200</em>.
+			</li>
+			<li><span class="label label-success">Added</span> A migration has been added to fix diagram with edge bend-points corrupted (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=519044">bugzilla #519044</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>12.1.0.201708031200</em>.
+			</li>
+		</ul>
+		<h4 id="TranslationKeysChanges2">Translation Keys Changes</h4>
+		<p>See 
+			<a href="i18n_changes.html#sirius51">this document</a> for the complete list of message keys added or removed in Sirius 5.0.
+		</p>
+		<h4 id="replazyloading">Representations lazy loading (experimental).</h4>
+		<p>A new mode (currently experimental) is available to load representations on demand and not during session opening. This feature implies to serialize Sirius representations in separate resources. This mode can be activated by setting the system property 
+			<code>createLocalRepresentationInSeparateResource</code> at true. For more detail, see the developer documentation: 
+			<a href="./developer/representations_lazy_loading.html">Representations lazy loading (experimental)</a>.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius3">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A new convenience static method has been added on the 
+				<code>org.eclipse.sirius.business.api.session.Session</code> interface to retrieve the session an arbitrary 
+				<code>EObject</code> is part of: 
+				<code>Optional&lt;Session&gt; s = Session.of(myObject);</code>. It returns a 
+				<code>java.util.Optional&lt;Session&gt;</code> so all the usual patterns apply, e.g. 
+				<code>Session.of(obj).ifPresent(s -&gt; doSomething(s));</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.isLoadedRepresentation()</code> has been added to know if the representation linked with this {@link DRepresentationDescriptor} is loaded. By default, all representations are held in the same resource than the DRepresentationDescriptor, in that case the method will always return true.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSession.allAnalyses()</code> has been added in the interface to reflect the already existing 
+				<code>org.eclipse.sirius.business.internal.session.danalysis.DAnalysisSessionImpl.allAnalyses()</code> implementation.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager.getLoadedRepresentations(EObject, Session)</code> has been added to get all loaded representations in the given session with the given EObject as target.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getAllLoadedRepresentations(Session)</code> has been added to get all loaded representations in the given session.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.REPRESENTATIONS_FOLDER_NAME</code> constant has been added. This is the default folder where representations file (*.srm) are located if the system property &#8220;createLocalRepresentationInSeparateResource&#8221; is set at true.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tools.api.command.ui.UICallBack.shouldDeleteRepresentation(Set&lt;DRepresentationDescriptor&gt;)</code> has been added to be called when the user interface should prompt for a choice about the representation deletion.
+			</li>
+			<li><span class="label label-success">Added</span> (experimental) The new API 
+				<code>org.eclipse.sirius.business.api.query.SiriusReferenceFinder</code> and 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getSiriusReferenceFinder()</code> method to get it have been added. This API allows getting the DRepresentations or DRepresentationElements that reference the provided semantic object. It also allows getting the DRepresentationDescriptor which associated DRepresentation is or contains elements that reference the provided semantic object. This API will be useful for 
+				<a href="#replazyloading">representation lazy loading</a> as it may, in the future, not need to load all not yet loaded representations. For now, the use of this API will load all not loaded representations.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getRepresentationDescriptors(EObject, Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getAllRepresentationDescriptors(Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getRepresentationDescriptors(RepresentationDescription, Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The implementations of 
+				<code>getRepresentationDescriptors(EObject, Session)</code>, 
+				<code>getAllRepresentationDescriptors(Session)</code> and 
+				<code>getRepresentationDescriptors(RepresentationDescription, Session)</code> have been removed from 
+				<code>AbstractRepresentationDialectServices</code>. They are implemented in 
+				<code>DialectManagerImpl</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getRepresentations(EObject, Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getAllRepresentations(Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getRepresentations(RepresentationDescription, Session)</code> has been moved to 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>
+			</li>
+			<li><span class="label label-danger">Removed</span> The implementations of 
+				<code>getRepresentations(EObject, Session)</code>, 
+				<code>getAllRepresentations(Session)</code> and 
+				<code>getRepresentations(RepresentationDescription, Session)</code> have been removed from 
+				<code>AbstractRepresentationDialectServices</code>. They are implemented in 
+				<code>DialectManagerImpl</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer.setEObjectToBeIgnored(Predicate&lt;EObject&gt;)</code> has  been added to filter inverse references to prevent some references resolution.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.WorkspaceUtil.getFilesFromWorkspace(Collection&lt;IProject&gt;, String)</code> signature has been modified in 
+				<code>getFilesFromWorkspace(Collection&lt;IContainer&gt;, String)</code> to be more generic.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram2">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A new query has been added in 
+				<code>org.eclipse.sirius.diagram.business.api.query.DDiagramQuery</code>. This query, 
+				<code>getAllActivatedLayers</code>, returns all the activated layers (transient or not) of the given diagram. It should replace 
+				<code>DDiagram.getActivatedLayers</code> in several cases if you directly use it.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Three new preferences have been added to 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>: 
+				<code>PREF_SCALE_DIAGRAMS_ON_EXPORT</code>, 
+				<code>PREF_MAXIMUM_EXPORT_BUFFER_SIZE</code>, 
+				<code>PREF_MAXIMUM_EXPORT_BUFFER_SIZE_WINDOWS</code>. They are used to control the auto-scaling behavior when exporting diagrams. Refer to the JavaDoc for the details.
+			</li>
+			<li><span class="label label-success">Added</span> In 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService</code>, two new methods have been added:
+				<ul>
+					<li>
+						<code>setAllowDownScaling(boolean)</code>: when auto-scaling is enabled (which is controlled by the already existing 
+						<code>setAutoScalingEnabled()</code>), this is used to control if down-scaling is allowed or not. 
+					</li>
+					<li>
+						<code>getScalingFactor()</code>: after the export has been performed, this can be used to obtain the scaling factor that was effectively used.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.business.api.DiagramExportResult</code> has been added, which inherits from 
+				<code>ExportResult</code>. It is returned by the 
+				<code>DialectManager.exportWithResult()</code> methods when the representation exported is a diagram, and in addition to the information provided by 
+				<code>ExportResult</code> gives access to the scaling factor that was used when exporting the diagram.
+			</li>
+			<li><span class="label label-success">Added</span> The new preference 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys.PREF_SHOW_SYNCHRONIZE_STATUS_DECORATOR</code> has been added to say if the 
+				<a href="user/diagrams/Diagrams.html#synchronized_diagram">synchronize status</a> decorator must be shown or not.
+			</li>
+			<li><span class="label label-success">Added</span> A new method 
+				<code>checkShapesIntersect()</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ConnectionEditPartQuery</code> to check if source and target of the connection intersect (only intersect &#8211; not one contained in another).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.emf.edit">Changes in 
+			<code>org.eclipse.sirius.ext.emf.edit</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices</code> does not use 
+				<code>Collection</code> anymore as return type or parameter type in its services. 
+				<code>java.util.Collection</code> has been replaced by 
+				<code>java.util.List</code>. As mentioned in the 
+				<a href="./specifier/general/Writing_Queries.html#service_methods">specifier documentation</a>, it is recommended to use List or Set instead of Collection in java services signature.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> In 
+				<code>org.eclipse.sirius.ui.tools.api.dialogs.AbstractExportRepresentationsAsImagesDialog</code> a new method 
+				<code>isAutoScaleDiagram()</code> has been added to indicate (once the dialog has been closed) if the user has requested to enable auto-scaling on diagram export. 
+			</li>
+			<li><span class="label label-success">Added</span> In 
+				<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction</code>, a new method 
+				<code>setAutoScaleDiagram(boolean)</code> to ask for automatic scaling of diagrams on export.
+			</li>
+			<li><span class="label label-success">Added</span> In 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices</code>, two new methods 
+				<code>exportWithResult()</code> have been added. They are equivalent to the existing 
+				<code>export()</code> methods (which return 
+				<code>void</code>) except that they return an instance of the new type 
+				<code>org.eclipse.sirius.ui.business.api.dialect.ExportResult</code>. This gives access to the list of all the actual files produced by the export operation. Note that in the case of the diagram dialect, 
+				<code>exportWithResult()</code> actually returns a more specific 
+				<code>DiagramExportResult</code> with additional diagram-specific information.
+			</li>
+			<li><span class="label label-success">Added</span> The type 
+				<code>org.eclipse.sirius.ui.business.api.dialect.ExportFormat</code> has a new attribute representing the scaling policy to use for diagram. It is defined by a new enumerated type 
+				<code>ExportFormat.ScalingPolicy</code> which can have four different values: 
+				<code>WORKSPACE_DEFAULT</code>, 
+				<code>AUTO_SCALING</code>, 
+				<code>NO_SCALING</code>, 
+				<code>AUTO_SCALING_IF_LARGER</code>. Refer to the JavaDoc for details on their meanings.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.tools.api.wizards.CreateEMFModelWizard</code> is a new wizard that can be invoked to create instances of any metamodel. It will ask the end-user for a metamodel (
+				<code>EPackage</code>), a concrete type to instanciate as root element, and finally the local path of the file to create. See the class Javadoc for sample usage. Note that the first two pages of the wizard (EPackage and root type selection) can be customized through the 
+				<code>org.eclipse.sirius.common.package_meta_data</code> extension point to provide user-oriented name and documentation for an EPackage, and to suggest specific EClasses as good root candidates.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.tools.api.command.AbstractSWTCallback.shouldDeleteRepresentation(Set&lt;DRepresentationDescriptor&gt;)</code> default implementation has been added to prompt the confirm dialog.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.session.SessionEditorInput.SessionEditorInput(URI, URI, String, Session)</code> has been added to provide the 
+				<code>DRepresentationDescriptor</code> URI to retrieve the 
+				<code>DRepresentation</code> from the 
+				<code>DRepresentationDescriptor.getRepresentation()</code> method instead of performing a direct load.
+			</li>
+			<li><span class="label label-info">Modified</span> The org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.getSelectedElement() method is now protected instead of private to let sub-classes retrieving the selected element.</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.editor">Changes in 
+			<code>org.eclipse.sirius.ui.editor</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> New classes have been added in package 
+				<code>org.eclipse.sirius.ui.editor.api.pages</code>. They are the following: 
+				<code>AbstractSessionEditorPage</code>, 
+				<code>PageProvider</code>, 
+				<code>PageUpdateCOmmand</code>, 
+				<code>PositioningKind</code>, 
+				<code>PageUpdateCommandFactory</code>. These classes allow to provide custom pages to session editor instances.
+			</li>
+			<li><span class="label label-success">Added</span> An extension point 
+				<code>org.eclipse.sirius.ui.editor.sessionEditorPageProvider</code> has been added to allow custom page providing for session editor instances.
+			</li>
+		</ul>
+		<h2 id="sirius5.0.1">Changes in Sirius 5.0.1</h2>
+		<p>Sirius 5.0.1 is a maintenance release with only bugfixes and small tweaks to the UI of 
+			<a href="user/general/Aird_Editor.html">the aird editor</a>.
+		</p>
+		<h2 id="sirius5.0.0">Changes in Sirius 5.0.0</h2>
+		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> An new 
+				<em>aird editor</em> is available on 
+				<em>.aird</em> files. It provides an alternative, form-based GUI to visualize and manipulate sirius sessions which is not tied to the Modeling perspective or Model Explorer view. See 
+				<a href="user/general/Aird_Editor.html">the editor&#8217;s documentation</a> for more details.
+			</li>
+			<li><span class="label label-info">Modified</span> The label alignment of Notes from the Palette has been modified from Juno to Luna or newer versions of Eclipse. The label alignment had changed from 
+				<em>TOP</em> &amp; 
+				<em>CENTER</em> to 
+				<em>MIDDLE</em> &amp; 
+				<em>LEFT</em> (respectively). The initial alignment (
+				<em>TOP</em> &amp; 
+				<em>CENTER</em>) has been restored. This is done with an 
+				<a href="./user/general/Modeling%20Project.html#Migration">automatic migration</a> of the aird file.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Export diagram as images</em> action now adatps the output resolution based on the diagram size. This leads to better resolution for small to medium diagrams (and also bigger file) and to an operation which is no longer failing with out of memory errors in case of very big diagrams.
+			</li>
+			<li><span class="label label-info">Modified</span> The &#8220;straighten to&#8221; actions previously had a limitation concerning overlap detection. This is no longer the case. The previous known limitation has been removed from the documentation (
+				<i>In case of multi-selection, the overlap check is done in the current context of existing border nodes and not in the context of location of border nodes after each straighten edges.</i>).
+			</li>
+			<li><span class="label label-info">Modified</span> Decorators on diagram elements are drawn on top of other figures. If there is an overlap between a decorator of a figure A and another figure B that is over figure A, when user clicks on the decorator, the figure B is now selected (before it was the parent figure A).</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges5">Developer-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> It is now possible to automatically create one or several pre-configured widget(s) in a group if its domain class and if the meta-models of the properties view containing it have been specified. The widget(s) created will be infered from the features in the domain class (e.g. a properly configured 
+				<em>Checkbox</em> widget will be created for boolean attributes).
+			</li>
+			<li><span class="label label-success">Added</span> Property Views definitions now support extending and overriding Properties View Descriptions without modifying the original. See 
+				<a href="specifier/properties/Properties_View_Description.html#extensibility_features">the documentation</a> for details.
+			</li>
+			<li><span class="label label-success">Added</span> New model operations are available. You can now open a 
+				<a href="specifier/general/Model_Operations.html#dialog">dialog</a> or a 
+				<a href="specifier/general/Model_Operations.html#wizard">wizard</a> thanks to new dedicated model operations leveraging the Properties View language. You can also create new variable with the new 
+				<em>Let</em> model operation, see its 
+				<a href="specifier/general/Model_Operations.html#let">documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> In Property Views definitions, you can now create 
+				<em>Toolbar Actions</em> on pages and groups in order to define small buttons in their toolbars.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<em>Buttons</em> and 
+				<em>Widget Actions</em> can now use an image along with a label thanks to the new 
+				<em>Image expression</em>.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to execute some behavior when the end users will click on the 
+				<em>Reference Widget</em> thanks to the addition of an 
+				<em>Initial Operation</em>.
+			</li>
+			<li><span class="label label-success">Added</span> You can indicate that a 
+				<em>Dynamic Mapping For</em> should force the refresh of the user interface with the 
+				<em>Force Refresh</em> property.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<em>Categories</em> have been added in order to organize the pages and groups of the 
+				<em>Properties</em> DSL.
+			</li>
+			<li><span class="label label-info">Modified</span> The notion of transient layer has been introduced in Sirius 5.0. (Refer to 
+				<a href="specifier/diagrams/Diagrams.html#Transientlayer">Sirius Specifier</a> and 
+				<a href="user/diagrams/Diagrams.html#transientLayer">Sirius User</a> documentation in Diagram chapter). A transient layer is an additional layer containing only decorations or tools. If you have such layer in your VSM, users may encounter some unexpected behaviors. If the layer is not 
+				<em>active by default</em>, its activation state will not be persisted at session close. In other words, if a transient layer is enabled in a diagram and then the session is closed, at the next diagram opening, the layer will be disabled. If users have existing representations file, made with previous version, with such kind of layers activated, they will no longer enabled at the next opening in Sirius 5.0.0. If the layer is 
+				<em>active by default</em> then it will be automatically applied when opening your diagram. We consider this behavior as a known limitation and an enhancement may be done in a further release. In the meantime, there is a workaround which consists to add a fake mapping (that is any mapping with its fields empty) so that the layer will not be considered as transient.
+			</li>
+			<li><span class="label label-info">Modified</span> The tab used to configure the metamodels used by the Properties view description is now using the same interface as the metamodels tab used to configure the representations.</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>package::Class</code> syntax for domain classes and type names in the VSM is now fully supported and the new default. It means this syntax is interpreted by Sirius and completion is provided for it when the first 
+				<code>:</code> character is entered. The legacy syntax 
+				<code>package.Class</code> is still supported for compatibility.
+			</li>
+			<li><span class="label label-info">Modified</span> The organization of the contextual actions in the odesign for the 
+				<em>Properties</em> DSL has been improved.
+			</li>
+			<li><span class="label label-info">Modified</span> Most of the concepts of the 
+				<em>Properties</em> DSL can now have an identifier, a label and some documentation.
+			</li>
+		</ul>
+		<h4 id="Migrations3">Migrations</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A migration is added in this version to fix the alignment of the text in notes (as explained in user visible changes). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>12.0.0.201704070000</em>.
+			</li>
+		</ul>
+		<h4 id="TranslationKeysChanges3">Translation Keys Changes</h4>
+		<p>See 
+			<a href="i18n_changes.html#sirius50">this document</a> for the complete list of message keys added or removed in Sirius 5.0.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
+			<code>org.eclipse.sirius.common</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.setFeatureToBeCrossReferencedWhiteList(Collection&lt;EReference&gt;)</code> to set a white list of references that must be referenced even if the reference is derived.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.isIncluded(EReference)</code> has been overridden to consider features in the white list.
+			</li>
+			<li><span class="label label-success">Added</span> A new extension point, 
+				<code>org.eclipse.sirius.common.package_meta_data</code> has been added. It can be used to associate user-oriented meta-data to Ecore metamodels, identified by their 
+				<code>nsURI</code>: a user-oriented name/label (as opposed to the technical nsURI), a (short) description/documentation, and a list of suggested EClasses defined in the EPackage that are good candidates as root model elements. These meta-data are currently used only in the generic model creation wizard integrated in the aird editor.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.ui">Changes in 
+			<code>org.eclipse.sirius.common.ui</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.FeatureEditorDialog</code> class has been removed; use the 
+				<code>org.eclipse.emf.edit.ui.celleditor.FeatureEditorDialog</code> equivalent provided by EMF directly instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius4">Changes in 
+			<code>org.eclipse.sirius</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> An experimental mode to serialize representations in a different file is available with system property 
+				<code>createRepresentationInSeparateResource=true</code>. That means all new representations will be saved, when this property is enabled, in a separate file with 
+				<code>*.srm</code> extension.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription, boolean)</code> has been added to better control the checks done by already existing 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription)</code> method. The new boolean allow to deactivate the check verifying that the viewpoint of the given description must be activated so the method can return true.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.viewpoint.description.DAnnotation.references</code> feature has been added. It allows to have some information without having to search them into the entire model of the Sirius session. Ideally only elements from semantic resources of the session should be referenced or else it may broke the session behavior either because resolving too soon EObject in the session or because adding a resource that is not known by Sirius session.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getImpactedRepDescriptorFromDAnnotationData()</code> method has been added to help retrieve the 
+				<code>DRepresentationDescriptors</code> which owned 
+				<code>DAnnotation</code> are referencing a given 
+				<code>EObject</code> with 
+				<code>DAnnotation.references</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute has been added to hold the representation path since the 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is derived. This attribute is not intended to be modified by client. You should use 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.setRepresentation(DRepresentation)</code> or 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> instead.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> has been added to update the repPath attribute according to the given representation. This method is intended to be called if the representation instance is still the same but requires to recompute the repPath.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.FileQuery.isSrmFile()</code> has been added to indicate if the file extension is dedicated to a file containing representations.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point has been added to customize the resource location of new representations. See 
+				<a href="extensions-provide_representation_location_rule.html">Provide representation location rule (experimental)</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DRepresentationLocationRule</code> interface has been added to provide a customized rule to the 
+				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.REPRESENTATION_FILE_EXTENSION</code> constant has been added to reference the new *.srm extension.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.Session.getSrmResources()</code> has been added to provide the list of representation resources (serialized as *.srm files by default).
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isAirdOrSrmResource()</code> has been added to know whether the resource is a srm resource (
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code>) or an aird resource.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code> has been added to know whether the resource contains a 
+				<code>DRepresentation</code> as root element.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.migration.DiagramCrossReferencer.DiagramCrossReferencer(Collection&lt;Resource&gt;)</code> constructor has been added to compute the cross references on a list of resources.
+			</li>
+			<li><span class="label label-success">Added</span> A new 
+				<code>org.eclipse.sirius.modelOperationManager</code> extension point has been addded. It allows the contribution of new types of 
+				<em>Model Operations</em> which are then usable in modeler definitions (
+				<code>*.odesign</code>).
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is now derived, transient and volatile. The representation is compute by using the 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.business.api.query.DViewQuery.getAllContentInRepresentations(Predicate&lt;? super EObject&gt;)</code> now takes a 
+				<code>java.util.Predicate</code> (from Java 8) as argument instead of a 
+				<code>com.google.common.base.Predicate</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The extension point 
+				<code>org.eclipse.sirius.ui.modelingprojectresourcelistener</code> is no longer expected to be used. It is an internal extension point. Clients using this extension point to ignore some files as potential semantic models must now use the extension point 
+				<code>org.eclipse.sirius.resourceStrategy</code>. This extension point existed before Sirius 5.0.0 but was not API. It becomes API with Sirius 5.0.0, see the 
+				<a href="developer/extensions-provide_resource_strategy.html">developer documentation</a> for more details.
+				<ul>
+					<li>If you used to override protected methods 
+						<code>boolean isPotentialSemanticResource(IFile)</code> and 
+						<code>boolean isLoadableModel(IFile, Session)</code> of class 
+						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, you can now create a 
+						<code>resourceStrategy</code> of type 
+						<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.SEMANTIC_RESOURCE</code> and respectively override 
+						<code>boolean isPotentialSemanticResource(URI)</code> and 
+						<code>boolean isLoadableModel(URI,Session)</code>. As a reminder, to get an URI from an IFile, you can use: 
+						<code>URI.createPlatformResourceURI(iFile.getFullPath().toString(), true)</code>. And to get an IFile from an URI, you can use: 
+						<code>ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toPlatformString(true)))</code>.
+					</li>
+					<li>If you used to override protected methods 
+						<code>boolean isRepresentationsModel(IFile)</code> and 
+						<code>boolean isVsmModel(IFile)</code> of class 
+						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, they no longer exist. They correspond to core API and is not supposed to be overridden. They are accessible through API 
+						<code>org.eclipse.sirius.business.api.query.FileQuery.FileQuery(IFile)</code>.
+					</li>
+					<li>All necessary classes for extension point 
+						<code>org.eclipse.sirius.resourceStrategy</code> are now APIs:
+						<ul>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategyRegistry</code>: Registry to have access to all overridable services through a 
+								<code>ResourceStrategy</code>
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy</code>: Interface implemented by all resource strategies
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.AbstractResourceStrategyImpl</code>: Default implementation of above interface. All resource strategies contributed with the extension need to extend it.
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.LegacyReleaseResourceStrategyImpl</code> (previously named 
+								<code>DefaultResourceStrategyImpl</code>): A resource strategy with the code used before the optimization concerning the 
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.RELEASE_RESOURCE_AT_RESOURCESET_DISPOSE</code>. It is not used but can be quickly contributed by someone that want the previous behavior (before Sirius 4.0.0 M6).
+							</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> The already deprecated constructor of 
+				<code>org.eclipse.sirius.business.api.control.SiriusUncontrolCommand</code> with signature 
+				<code>SiriusUncontrolCommand(EObject, boolean, IProgressMonitor)</code> has been removed; instead, use the alternate constructor with an additional explicit 
+				<code>boolean shouldEndBySaving</code> parameter (set it to 
+				<code>true</code> to obtain the same behavior as the removed constructor).
+			</li>
+			<li><span class="label label-danger">Removed</span> In 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code>, methods 
+				<code>canCreateIdentifier</code> and 
+				<code>createIdentifier</code> have been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.business.api.dialect.identifier</code> package and all its content (
+				<code>AbstractRepresentationElementIdentifier</code> and 
+				<code>RepresentationElementIdentifier</code>) have been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Two new methods have been added to the interface 
+				<code>org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection.Callback</code>: 
+				<code>selectViewpoint(Viewpoint, Session, boolean, Set&lt;Viewpoint&gt;, IProgressMonitor)</code> and 
+				<code>deselectViewpoint(Viewpoint, Session, Set&lt;Viewpoint&gt;, IProgressMonitor)</code>. These methods add a new parameter that is a set of viewpoints compared to the same methods without these parameters. These set contains all viewpoints that will be deactivated/activated in addition of the one that is asked to be deactivated/activated. It allows the callback implementation to better handle viewpoint dependencies interaction by being able to know if missing dependencies will be activated or deactivated.
+			</li>
+			<li><span class="label label-success">Added</span> An interface 
+				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> has been added to gather 
+				<code>org.eclipse.sirius.ui.editor.SessionEditor</code> and 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectEditor</code> under the same abstraction. It allows to provide 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> saving functionalities for session editor or any new editor that is not a dialect editor. 
+			</li>
+			<li><span class="label label-success">Added</span> A method 
+				<code>getSiriusEditors()</code>  has been added to interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code>. It allows to retrieve all 
+				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> that are registered in the session.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.refreshEditor(DialectEditor, IProgressMonitor)</code> has been added to allow specifiers to do a full refresh of its dialect editor easily.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setBrowserMinWidth(int)</code> has been added to allow modification of the minimum width (with default value &#8220;0&#8221;) of the browser part of the viewpoint selection wizard.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setColumnWidthEquality(boolean)</code> has been added to allow modification of column width equality (with default value &#8220;false&#8221;) of the root composite of the viewpoint selection wizard.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.dialogs.AbstractExportRepresentationsAsImagesDialog.isExportDecorations()</code> has been added to know if decorations are displayed in the exported image.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.export(DRepresentation, Session, IPath, ExportFormat, IProgressMonitor, boolean)</code> method has been added. Compared to the previous method signature, the boolean parameter 
+				<code>exportDecorations</code> has been added to allow to choose if the diagram element decorations will be exported or not.
+			</li>
+			<li><span class="label label-info">Modified</span> The boolean parameter 
+				<code>exportDecorations</code> has been added to 
+				<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction.ExportAction(Session, Collection&lt;DRepresentation&gt;, IPath, ImageFileFormat, boolean, boolean)</code> constructor. It allows to choose if the diagram element decorations will be exported or not.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>attachEditor(DialectEditor)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>detachEditor(DialectEditor)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>detachEditor(DialectEditor, boolean)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its first parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.getContentContext(String, int)</code> has been made protected instead of private to allow to use it for sub types.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.removeDuplicatedProposals(List&lt;ContentProposal&gt;)</code> has been made protected instead of private to allow to use it in sub types.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.createLocalRepresentationsFile(IProject, IProgressMonitor)</code> has its return type changed from 
+				<code>void</code> to 
+				<code>Session</code> to allow callers to have access to the newly created session directly.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.views.ViewHelper.getContentProvider()</code> has been renamed into 
+				<code>createContentProvider()</code> and now returns a new instance on each invocation.
+			</li>
+			<li><span class="label label-danger">Removed</span> The old 
+				<em>Model Request Interpreter</em> view is not available anymore. It is superseded by the 
+				<em>Interpreter</em> view, which comes from the Acceleo project but does not actually depend on Acceleo or AQL and can be installed separately (using the feature 
+				<code>org.eclipse.acceleo.ui.interpreter</code>, which is available directly from the Sirius update-sites). The corresponding interface 
+				<code>org.eclipse.sirius.ui.tools.api.views.interpreterview.InterpreterView</code> has been removed. Technically, the implementation code for the old 
+				<em>Model Request Interpreter</em> view is still present if needed during the transition, but not exposed or used anywhere. It will be removed in a future version. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram3">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility class 
+				<code>org.eclipse.sirius.diagram.business.api.helper.decoration.DecorationHelper</code> has been added. It provides 
+				<code>updateDecorations(List&lt;Layer&gt;)</code> and 
+				<code>updateAllDecorations</code> methods that allow to update only decorations in a diagram.
+			</li>
+			<li><span class="label label-info">Moved</span> The method 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride.aroundRefresh(DDiagram)</code> has been moved to 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> to unify methods handling refresh extension under one interface. 
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension.aroundRefresh(DDiagram)</code> has been modified with a default behavior that is the one before introduction of the method to avoid breaking compatibility.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride</code> has been removed because its only method has been moved into 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> interface
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.diagram.business.internal.dialect.identifier</code> package and all its content (
+				<code>DiagramIdenttifier</code>, 
+				<code>NodeIdentifier</code>, 
+				<code>EdgeIdentifier</code>, 
+				<code>NodeContainerIdentifier</code>, and 
+				<code>NodeStyleIdentifier</code>) have been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Constants 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.SPECIFIC_STYLES</code> &amp; 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.VERTICAL_ALIGNMENT</code> have been added to retrieve the initial label alignment of Notes from the Palette (see 
+				<a href="Release_Notes.html#UserVisibleChanges">user-visible changes</a> ). Currently the vertical alignment can not be changed (potential new feature later).
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.SiriusDecoratorEditPolicy</code> has been added to improve the behavior of decorator selection.
+			</li>
+			<li><span class="label label-success">Added</span> A new decoration mechanism has been implemented. Now, Sirius uses a single 
+				<code>IDecorator</code> to decorate EditPart in diagram. That allows Sirius to manage the relative positioning between decorations.
+				<ul>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationDescriptorProvider</code> represents a provider able to give the decoration descriptors. 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorationDescriptorProvider</code> is an abstract class that can be inherited to implement 
+						<code>SiriusDecorationDescriptorProvider</code>.
+					</li>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.DecorationDescriptor</code> is a simple POJO that contains information needed to display decoration.
+					</li>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationProviderRegistry</code> allows to register and get 
+						<code>SiriusDecorationDescriptorProvider</code>.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> The preference 
+				<code>SiriusDiagramUiPreferencesKeys.PREF_AUTHORIZE_DECORATION_OVERLAP</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the overlap is authorized between decoration group on diagram element.
+				<ul>
+					<li><span class="label label-success">Added</span> The class 
+						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.DynamicDiagramUIPreferences</code> and the method 
+						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.getDynamicPreferences()</code> have been added to have good performances in getting the preference value.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> The preference 
+				<code>SiriusDiagramUiPreferencesKeys.PREF_PRINT_DECORATION</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the decorations of the diagram elements of a diagram will be printed, when printing a diagram.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService.DiagramEditPartService</code> class which can be used to export diagrams as images is now automatically adapting the output resolution for raster image based on maximum buffer size specified through the 
+				<code>plugin.propeties</code> file of the 
+				<code>org.eclipse.sirius.diagram.ui</code> plugin. This leads to a noticeable increase of the export image size (you can expect a 10 factor on small diagrams) and the method will no longer fail with OutOfMemory errors as bigger diagrams will lead to a lower output resolution. Implementers using this class can override the 
+				<code>DiagramEditPartService.getMaximumTotalSize()</code> method to return their own limit or 
+				<code>DiagramEditPartService.getExportResolutionFactor(DiagramEditPart, SiriusDiagramImageGenerator)</code> and return 
+				<code>1.0</code> to get back to the previous behavior.
+			</li>
+			<li><span class="label label-info">Moved</span> The methods of interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
+				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
+				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
+			</li>
+			<li><span class="label label-info">Moved</span> The methods of interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
+				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
+				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>getFormatData(FormatDataKey key)</code> and 
+				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
+				<ul>
+					<li><span class="label label-danger">Removed</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorator</code> is removed because now useless.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>getFormatData(FormatDataKey key)</code> and 
+				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>DTableElementSynchronizer</code> 
+				<em>EClass</em> has been removed from the table meta-model. It only defined 
+				<em>EOperations</em> and has been replaced with an equivalent (internal) plain Java class.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui">Changes in 
+			<code>org.eclipse.sirius.tree.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The enum class for Sirius tree preferences 
+				<code>org.eclipse.sirius.tree.ui.tools.api.preferences.SiriusTreeUiPreferencesKeys</code> has been added with the enum value 
+				<code>SiriusTreeUiPreferencesKeys.PREF_ALWAYS_USE_STANDARD_FONT_SIZE</code>. This enum value is the preference when true allowing to use runtime font height when displaying Sirius tree editor&#8217;s items instead of the one specified in the VSM.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.editor2">Changes in 
+			<code>org.eclipse.sirius.ui.editor</code>
+		</h4>
+		<p>This plugin is new in Sirius 5.0. It provides a session editor showing loaded models, representations and viewpoint activation status of the session. It has functionalities allowing to change the viewpoint activation status, to create/remove representations or to load unload external models. The graphical block showing loaded models is integrated with CNF. You can provide content extension to its viewer by using an id matching the pattern 
+			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.contentExtension.*</code>. You also can provide action extension by using an id matching the pattern 
+			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.actionExtension.*</code>. The extension will be selectable/unselectable by using a 
+			<code>Customize View</code> button on the models block header.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius.properties.core">Changes in 
+			<code>org.eclipse.sirius.properties.core</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.internal.converter.ViewDescriptionConverter</code> has been moved as an API to 
+				<code>org.eclipse.sirius.properties.core.api.ViewDescriptionConverter</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The classes necessary to support the preprocessing of the odesign for the inheritance in its Properties parts are available in the API package 
+				<code>org.eclipse.sirius.properties.core.api</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.internal.SiriusInterpreter</code> has been moved as an API to 
+				<code>org.eclipse.sirius.properties.core.api.SiriusInterpreter</code>. This class could be used by those who want to create custom model operations using the Properties framework.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.api.SiriusDomainClassTester</code> has been added as an API for those who want to create custom model operations using the Properties framework.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices.createInstance(EClass)</code> has been added to allow the creation of a new instance from an EClass in the interpreters.
+			</li>
+			<li><span class="label label-info">Modified</span> The default rules have been transfered to a new dedicated plugin named 
+				<code>org.eclipse.sirius.properties.defaultrules</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.properties">Changes in 
+			<code>org.eclipse.sirius.ui.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> All the content related to the IDescriptionConverter and ILinkResolver has been moved from the plugin 
+				<code>org.eclipse.sirius.ui.properties</code> to the newly created plugin 
+				<code>org.eclipse.sirius.properties.core</code>. It includes all the APIs and both extension points.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.editor.properties">Changes in 
+			<code>org.eclipse.sirius.editor.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> In the package 
+				<code>org.eclipse.sirius.editor.properties.sections.description.representationdescription</code> the class 
+				<code>RepresentationDescriptionMetamodelsUpdater</code> has been replaced by 
+				<code>DescriptionMetamodelsUpdater</code> which can now be used with any EObject with a many-valued EReference to EPackages. The behavior of the class 
+				<code>RepresentationDescriptionMetamodelPropertySectionSpec</code> has been transfered to an abstract class independent of 
+				<code>RepresentationDescription</code> named 
+				<code>AbstractMetamodelPropertySectionSpec</code>. Those classes are now used for the edition of the metamodels of both the Properties view description and the various representations.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support3">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility method 
+				<code>org.eclipse.sirius.tests.support.api.TestsUtil.setTargetPlatform()</code> has been added to allow to load a PDE target platform according to all known OSGi bundles. It is useful to compile a plug-in in the execution runtime of the tests.
+			</li>
+			<li><span class="label label-success">Added</span> The utility class 
+				<code>org.eclipse.sirius.tests.support.api.OpenedSessionsCondition</code> has been extracted from a junit test to be used by multiple junit tests. It allows to wait until a session is in opened state.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>getTreeItem(SWTBotTreeItem[], String, boolean, boolean)</code> has been added in 
+				<code>org.eclipse.sirius.tests.swtbot.support.utils</code> to retrieve recursively a 
+				<code>SWTBotTreeItem</code> in a 
+				<code>SWTBotTreeItem</code> array. Compared to 
+				<code>getTreeItem(SWTBotTreeItem[], String)</code>, it adds the capability to control if the search must be done on enabled items or enabled and disabled items and if the tree must be expanded during the search to check non displayed items.
+			</li>
+			<li><span class="label label-success">Added</span> A new utility method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragCentered(String, Class&lt;? extends EditPart&gt;, int, int)</code> improving the dragCentered method by adding the aimed Class in parameter.
+			</li>
+			<li><span class="label label-info">Modified</span> A new AtomicBoolean parameter has been added to the utility method 
+				<code>mouseDragWithKey(int, int, int, int, int)</code> in classes 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor</code>, 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer</code> and 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas</code>. This allows to correctly wait the end of the drag&#8217;n&#8217;drop.
+				<ul>
+					<li>Sample of code to use:</li>
+				</ul>
+			</li>
+		</ul>
+		<pre>final AtomicBoolean dragFinished = new AtomicBoolean(false);
+editor.dragWithKey(start.x, start.y, endpoint.x, endpoint.y, SWT.F3, dragFinished);
+// Wait that the drag is done (the async Runnable simulating the
+// drag)
+bot.waitUntil(new ICondition() {
+    @Override
+    public boolean test() throws Exception {
+        return dragFinished.get();
+    }
+
+    @Override
+    public void init(SWTBot bot) {
+    }
+
+    @Override
+    public String getFailureMessage() {
+        return "The drag'n'drop operation has not finished.";
+    }
+});
+// Wait that the figures are redrawn. In a fast environment, figures
+// are not really redrawn and the rest of the test is not reliable.
+SWTBotUtils.waitAllUiEvents();
+
+</pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/Release_Notes_Previous.html b/doc/6.0.x/Release_Notes_Previous.html
new file mode 100644
index 0000000..3e9ccd8
--- /dev/null
+++ b/doc/6.0.x/Release_Notes_Previous.html
@@ -0,0 +1,4672 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Release_Notes_Previous</title>
+		<link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ReleaseNotesforOlderVersionofSirius">Release Notes for Older Version of Sirius</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#ReleaseNotesforOlderVersionofSirius">Release Notes for Older Version of Sirius</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#sirius4.1.2">Changes in Sirius 4.1.2</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius4.1.1">Changes in Sirius 4.1.1</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges2">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges2">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius4.1.0">Changes in Sirius 4.1.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges3">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges3">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius4.0.0">Changes in Sirius 4.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges4">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges2">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges4">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius3.1.0">Changes in Sirius 3.1.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges5">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges3">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges5">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius3.0.0">Changes in Sirius 3.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges6">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges4">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#DeveloperVisibleChanges6">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius2.0.0">Changes in Sirius 2.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges7">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges5">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#APIChanges">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius1.0.0">Changes in Sirius 1.0.0 (from Sirius 1.0.0M7)</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges8">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges6">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#APIChanges2">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius1.0M7">Changes in Sirius 1.0.0M7 (from Sirius 1.0M6)</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#SpecifierVisibleChanges7">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#APIChanges3">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius1.0M6">Changes in Sirius 1.0.0M6 (from Sirius 1.0M5)</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#APIChanges4">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius1.0M5">Changes in Sirius 1.0.0M5 (from Sirius 1.0M4)</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges9">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#APIChanges5">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius1.0M4">Changes in Sirius 1.0.0M4 (from Sirius 0.9)</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges10">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#APIChanges6">API Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius0.9">Changes in Sirius 0.9.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#MigratingfromObeoDesignerorViewpointtoSirius">Migrating from Obeo Designer or Viewpoint to Sirius</a>
+							</li>
+							<li>
+								<a href="#Pluginsversionnumbers.">Plug-ins version numbers.</a>
+							</li>
+							<li>
+								<a href="#Majornamespacechanges">Major namespace changes</a>
+							</li>
+							<li>
+								<a href="#NatureID">Nature ID</a>
+							</li>
+							<li>
+								<a href="#OtherAPIChanges">Other API Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges8">Specifier-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#UserVisibleChanges11">User-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<p>This document contains the release notes for older versions of of Sirius.</p>
+		<h2 id="sirius4.1.2">Changes in Sirius 4.1.2</h2>
+		<h3 id="UserVisibleChanges">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> A new preference named 
+				<em>Maximum size of tabs name</em> is available in the Sirius Properties View preference page. This preference is used to shorten the tabs names when the default rules are used to render the properties view.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="./images/PreferencePageMaxTabName.png"/> 
+		</p>
+		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> class has been added to handle copy/paste format with mapping information when an element target of a format pasting has many source diagram format corresponding to its key. In this case, we use the mapping information to get the more precise data format. And if no result matched, then we return the first found by using the key.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping.getFormatData(FormatDataKey, RepresentationElementMapping)</code> method has been added to retrieve during format pasting the data format corresponding to the given key and mapping when more than one result correspond to the key. If no result matches the mapping, then the first result found by using the key is returned.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping.addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> method has been added to allow data format manager to register data format with mapping information when copying format.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-success">Deprecated</span></li>
+		</ul>
+		<p>
+			<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager.getFormatData(FormatDataKey)</code> It is replaced by 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping.getFormatData(FormatDataKey, RepresentationElementMapping)</code> to better handle copy/paste format cases.
+		</p>
+		<ul>
+			<li><span class="label label-success">Deprecated</span></li>
+		</ul>
+		<p>
+			<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager.addFormatData(FormatDataKey, AbstractFormatData)</code> It is replaced by 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping.addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> to better handle copy/paste format cases.
+		</p>
+		<h2 id="sirius4.1.1">Changes in Sirius 4.1.1</h2>
+		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-info">Modified</span>The &#8220;straighten to&#8221; actions were previously disabled when an edge is connected to border nodes that have several edges. It is now allowed.</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getEStructuralFeature(DLine, DColumn)</code> method has been added to retrieve the EStructuralFeature associated to a table column.
+			</li>
+		</ul>
+		<h2 id="sirius4.1.0">Changes in Sirius 4.1.0</h2>
+		<h3 id="UserVisibleChanges3">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> Copy/Paste Layout has been completed with Copy/Paste Style and Copy/Paste Format. 
+				<em>Paste Format</em> is equivalent to paste 
+				<em>Layout</em> and 
+				<em>Style</em> action. See chapter 
+				<a href="./user/diagrams/Diagrams.html#copy_paste_format">
+					<em>Copy/paste of format</em>
+				</a> in 
+				<em>User Manual</em> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<a href="./user/diagrams/Diagrams.html#snap_to_shapes">snap to shape</a> feature is now available on border nodes.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to display an attachment link between an edge and its labels when label or edge is selected. This is not the default behavior but it can be activated by a preference in 
+				<em>Sirius/Sirius Diagram/Connections</em> preference page. See chapter 
+				<a href="./user/diagrams/Diagrams.html#edge_label_attachment">
+					<em>Display attachment link between edge and its labels</em>
+				</a> in 
+				<em>User Manual</em> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to straighten an edge to top, bottom, left or right. These actions are available on edge contextual menu 
+				<em>Layout/Straighten</em>. See chapter 
+				<a href="./user/diagrams/Diagrams.html#straighten_an_edge">
+					<em>Straighten an edge</em>
+				</a> in 
+				<em>User Manual</em> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to disable the 
+				<em>Default</em> and 
+				<em>Semantic</em> properties tabs (visible when selecting and element from the 
+				<em>Model Explorer</em> or from a Sirius editor, respectively) when using modelers which provide fully-functional replacements defined directly with Sirius. This is controled in the new 
+				<em>Sirius &gt; Sirius Properties View</em> preference page.
+			</li>
+			<li><span class="label label-success">Added</span> Sirius-defined properties view are now enabled for semantic elements selected directly from inside the 
+				<em>Model Explorer</em> (as long as the selected element is from inside an open Sirius session/project). Previously only elements selected from inside a Sirius editor were supported.
+			</li>
+			<li><span class="label label-info">Modified</span> In the Sirius-provided 
+				<em>Properties View</em>, the edition of a text field is only taken into account when pressing 
+				<em>Enter</em> or leaving the field. Previously it was triggered asynchronously after a small delay without activity, which could be confusing.
+			</li>
+			<li><span class="label label-info">Modified</span> When trying to open a session which holds a representation resource or a VSP which was saved using a more recent version of Sirius than the one you are using, the session will be automatically closed displaying an error message. You can overload this behavior by providing you own implementation of 
+				<code>UICallBack</code> in which you can have an UI feedback letting you choose if you want to open the session anyway. Warning: if you choose to proceed, there is no guarantee that the resulting session will be usable. It may even lead to data loss or corruption; use at your own risk.
+			</li>
+		</ul>
+		<p>If a viewpoint has been defined with a more recent version of Sirius than the one you are using, the 
+			<code>ViewpointRegistry</code> will not register it and a warning is logged in the error log view to inform the user.
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> The 
+				<a href="./user/diagrams/Diagrams.html#move_edge_group">move edge group</a> feature now also work for a selection of edge group.
+			</li>
+			<li><span class="label label-info">Modified</span> In a diagram editor, the zoom with mouse wheel is now zooming on mouse location instead of center of the editor. See 
+				<a href="./user/diagrams/Diagrams.html#zooming_diagram_id">user documentation</a> .
+			</li>
+			<li><span class="label label-info">Modified</span> The direct edit on a Note or Text is now accessible by a slow double click like any other diagram element.</li>
+			<li><span class="label label-info">Modified</span> The shortcut 
+				<em>Ctrl+&amp;</em>, for 
+				<a href="./user/diagrams/Diagrams.html#reset_origin">
+					<em>Reset Origin</em>
+				</a> action, has been replaced by 
+				<em>Ctrl+HOME</em>.
+			</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> It is now possible to inline a copy of the default Properties Views model inside the VSM. This is a copy of the model Sirius would use if no 
+				<em>Properties View Description</em> was specified. It can be used as a starting point for manual customization, or as a complement for elements for which you do not provide any custom rules. 
+			</li>
+			<li><span class="label label-success">Added</span> In the definition of the Properties view, hyperlink and label widgets can now have widget actions.</li>
+			<li><span class="label label-success">Added</span> Hyperlink and label widgets now have a 
+				<code>displayExpression</code>, if blank the result of the value expression will be used after a call to the method 
+				<code>java.lang.Object#toString()</code>.
+			</li>
+			<li><span class="label label-success">Added</span> Hyperlink and label widgets now support optional associated actions (visible as buttons on the right of the widget).</li>
+			<li><span class="label label-success">Added</span> A new widget named List with the same behavior as the multiple reference widget.</li>
+			<li><span class="label label-success">Added</span> 
+				<em>Page</em> and 
+				<em>Group</em> descriptions in 
+				<em>Properties View</em> models now support a 
+				<code>preconditionExpression</code>, which behaves in the same way as preconditions for mappings on representation descriptions.
+			</li>
+			<li><span class="label label-info">Modified</span> The rules concerning the layout of compartments have been changed/completed. You can have a look at the 
+				<a href="specifier/diagrams/Diagrams.html#compartments_layout">dedicated chapter</a> in the specifier documentation for more details.
+			</li>
+			<li><span class="label label-info">Modified</span> In the VSM editor, all dialogs which ask for selecting elements from the VSM will now show the fully qualified path of each element, instead of just their name, to allow distinguishing elements with the same name appearing in different places.</li>
+			<li><span class="label label-info">Modified</span> The properties 
+				<code>fontSize</code> and 
+				<code>labelFontSize</code> have been renamed into 
+				<code>fontSizeExpression</code> and 
+				<code>labelFontSizeExpression</code> since both of them were already treated as expression.
+			</li>
+			<li><span class="label label-info">Modified</span> In the VSM editor, the 
+				<em>Identifier</em> attribute of many 
+				<em>Prroperties View</em> related elements has been moved into the 
+				<em>Advanced</em> tab and renamed 
+				<em>Extension Id</em>, as it is not actually required on common use cases but only for extensibility purposes.
+			</li>
+			<li><span class="label label-info">Modified</span> The property 
+				<code>Domain Class Expression</code> in 
+				<code>DynamicMappingFor</code> elements (in properties views definitions) has been renamed into 
+				<code>Iterable Expression</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Properties View</em> widget which was named 
+				<em>Reference</em> in Sirius 4.0 has been renamed as 
+				<em>List</em>, as it corresponds to an arbitrary list of elements with customizable buttons for acting on them. A new 
+				<em>Reference</em> widget was added for handling plain 
+				<em>EReference</em> edition with minimal configuration needed.
+			</li>
+			<li><span class="label label-info">Modified</span> When opening a VSM, the editor now automatically expands the first few levels to immediatly reveal the interesting elements (representation descriptions).</li>
+			<li><span class="label label-warning">Deprecated</span> The extension point 
+				<code>org.eclipse.sirius.diagram.ui.layoutDataManager</code> is deprecated. It is replaced by the new extension point 
+				<code>org.eclipse.sirius.diagram.ui.formatDataManager</code>. The deprecated extension point will be removed in the next 5.0 Sirius major release. Several classes associated with this deprecated extension point are also deprecated (see Developer-Visible Changes for details).
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> As the first step to save the DRepresentation in its own resource, 
+				<code>org.eclipse.sirius.viewpoint.DView.getOwnedRepresentationDescriptors()</code> has been added as a wrapper of the 
+				<code>DRepresentation</code>. The 
+				<code>DRepresentationDescriptor</code> is contained by the 
+				<code>DView</code> and the 
+				<code>DRepresentationDescriptor</code> have a reference to the 
+				<code>DRepresentation</code>. In this step, the main impact is that the Sirius common navigator does not display the 
+				<code>DRepresentation</code> anymore but the 
+				<code>DRepresentationDescriptor</code> instead. All the actions and commands are then based on 
+				<code>DRepresentationDescriptor</code>.
+			</li>
+			<li><span class="label label-success">Added</span> As the second step to save the DRepresentation in its own resource, 
+				<code>org.eclipse.sirius.viewpoint.DView.getOwnedRepresentations()</code> has been removed. The 
+				<code>DRepresentation</code> is now created as root element of the representations resource. The main impact is on the core of Sirius but also potentially on client Sirius customization. Each peace of code that makes the supposition that the 
+				<code>DView</code> is the container of the 
+				<code>DRepresentation</code> must be reworked. The code using methods in the following list may be concerned by the rework:
+				<ul>
+					<li>
+						<code>EObject.eContainer()</code>. If the object is a 
+						<code>DRepresentation</code>, its container is now null.
+					</li>
+					<li>
+						<code>EcoreUtil.getRootContainer(xxx)</code>. The root container of a DDiagramElement is the 
+						<code>DRepresentation</code> and not the 
+						<code>DAnalysis</code> any more.
+					</li>
+					<li>
+						<code>EcoreUtil.isAncestor(xxx)</code>. the 
+						<code>DView</code> is not an ancestor of a 
+						<code>DRepresentation</code> (or its content) anymore.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> As a developer, the followings utility methods will help you to migrate your code following the second step described above:
+				<ul>
+					<li>
+						<code>org.eclipse.sirius.business.api.query.DViewQuery.getLoadedRepresentations()</code> replaces the removed 
+						<code>DView.getOwnedRepresentations()</code> method. It provides all the loaded representations holds by a 
+						<code>DView</code>. In this step, all that representations are always loaded as they are into the .aird resource.
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.query.DViewQuery.getAllContentInRepresentations(final Predicate&lt;? super EObject&gt;)</code> provides the content of a 
+						<code>DView</code> according to a predicate.
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.query.DRepresentationQuery.getRepresentationDescriptor()</code> provides the 
+						<code>DRepresentationDescriptor</code> which references the 
+						<code>DRepresentation</code>.
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.query.EObjectQuery.getDAnalysis()</code> allows to retrieve a DAnalysis from a 
+						<code>DRepresentationElement</code>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A new extension point named 
+				<code>org.eclipse.sirius.interpretedExpressionQueryProvider</code> (with the associated new interface 
+				<code>org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionQueryProvider</code>) allows external contribution of 
+				<code>IInterpretedExpressionQuery</code> specific to some particular expression occurrences in the VSM. This is used in particular for VSM extensions which do not fit well into the hard-coded assumptions about 
+				<code>IInterpretedExpressionQuery</code>. In Sirius 4.1, this is used to add completion and validation support for expressions used in properties views descriptions.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.migration.AirdResourceVersionMismatchException</code> exception has been added to cancel Sirius session opening due to an .aird version mismatch, i.e. when one the of the loaded Representation resources is coming from a newer Sirius release.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DView.getOwnedRepresentationDescriptors()</code> has been added as the first step to save the DRepresentation in its own resource. In this step, the DRepresentationDescriptor life cycle is the same as the associated DRepresentation.
+				<ul>
+					<li>
+						<code>org.eclipse.sirius.business.api.dialect.command.RenameRepresentationCommand</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.dialect.command.DeleteRepresentationCommand</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.dialect.command.MoveRepresentationCommand</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.business.api.dialect.command.CopyRepresentationCommand</code>
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>getAvailableRepresentationDescriptions(Collection&lt;Viewpoint&gt;, EObject)</code>, 
+				<code>getAllRepresentationDescriptors(Session )</code>, 
+				<code>getRepresentationDescriptors(EObject, Session)</code> and 
+				<code>getRepresentationDescriptors(RepresentationDescription, Session )</code> have been added in 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code> and implemented in 
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices</code>. These methods are used, instead of their equivalent with DRepresentation, for every functionality which relies on 
+				<code>DRepresentationDescriptor</code> instead of 
+				<code>DRepresentation</code> such as actions, wizards or views.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices.isSupported(DRepresentationDescriptor)</code> has been added because actions, wizards or views that were related to 
+				<code>DRepresentation</code> are now related to 
+				<code>DRepresentationDescriptor</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.canHandle(DRepresentationDescriptor)</code> has been added because actions, wizards or views that were related to 
+				<code>DRepresentation</code> are now related to 
+				<code>DRepresentationDescriptor</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIManager.canExport(DRepresentationDescriptor, ExportFormat)</code> has been added because actions, wizards or views that were related to 
+				<code>DRepresentation</code> are now related to 
+				<code>DRepresentationDescriptor</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.DRepresentationQuery.getRepresentationDescriptor()</code> has been added to retrieve the 
+				<code>DRepresentationDescriptor</code> that references the 
+				<code>DRepresentation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.CustomDataConstants.DREPRESENTATION_DESCRIPTOR_FROM_DESCRIPTION</code> and 
+				<code>org.eclipse.sirius.business.api.session.CustomDataConstants.DREPRESENTATION_DESCRIPTOR</code> have been added. They are used to get or put 
+				<code>DRepresentationDescriptor</code> in the model managed by the 
+				<code>Session</code> through the 
+				<code>org.eclipse.sirius.business.api.session.SessionService.putCustomData(String, EObject, EObject)</code> and 
+				<code>SessionService.getCustomData(String, EObject)</code> methods.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getDAnalysis()</code> has been added to retrieve a DAnalysis from a 
+				<code>DRepresentationElement</code>
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper.findContainerForAddedRepresentation(DAnalysis, DRepresentation)</code> has been changed to 
+				<code>findDViewForRepresentationDescription(DAnalysis , final RepresentationDescription)</code> because that API was previously badly defined.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.deleteRepresentation(DRepresentation, Session)</code> has been changed to 
+				<code>deleteRepresentation(DRepresentationDescriptor, Session)</code> because now the 
+				<code>DRepresentationDescriptor</code> is the entry point to delete the 
+				<code>DRepresentation</code> and itself.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>DRepresentationDescriptor</code> is now the entry point to move, control or uncontrol a 
+				<code>DRepresentation</code> instead of the 
+				<code>DRepresentation</code> itself. Accordingly, the return type or parameter of the followings have changed to switch from 
+				<code>DRepresentation</code> to 
+				<code>DRepresentationDescriptor</code>
+				<ul>
+					<li>constructors of 
+						<code>org.eclipse.sirius.business.api.control.SiriusControlCommand</code>
+					</li>
+					<li>the constructor 
+						<code>org.eclipse.sirius.business.api.dialect.command.MoveRepresentationCommand.MoveRepresentationCommand(Session, DAnalysis, Collection&lt;DRepresentationDescriptor&gt;)</code>
+					</li>
+					<li>the method 
+						<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSession.moveRepresentation(DAnalysis, DRepresentationDescriptor)</code>
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper.updateModelsReferences(DView)</code> has replaced 
+				<code>updateModelsReferences(DAnalysis, Iterator&lt;DSemanticDecorator&gt;)</code> because it is more suited to the client needs.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.ui.business.api.dialect.HierarchyLabelProvider</code> has been added to provide a generic label provider for VSM model element giving hierarchical label. This label provider replaces the one returned by deprecated method 
+				<code>DialectUIServices.getHierarchyLabelProvider()</code>. 
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>AbstractSWTCallback</code> provides a default implementation of 
+				<code>UICallBack.askSessionReopeningWithResourceVersionMismatch()</code> method to give feedback about version mismatch and give the choice to reopen session despite a potential corruption.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.control.SiriusControlHandler.getRepresentationsToMove(Shell, Session, EObject)</code> and 
+				<code>SiriusControlHandler.collectExistingRepresentations</code> have been renamed to 
+				<code>getRepresentationDescriptorsToMove(Shell, Session, EObject)</code> and 
+				<code>SiriusControlHandler.collectExistingRepresentationDescriptors</code>. The return type of both that methods and 
+				<code>SiriusControlHandler.askUserWhichRepresentationToSplit</code> has been changed to 
+				<code>DRepresentationDescriptor</code> as 
+				<code>DRepresentationDescriptor</code> is the entry point to work with a 
+				<code>DRepresentation</code> instead of DRepresentation itself.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.getHierarchyLabelProvider()</code> has been deprecated in favor of generic label provider 
+				<code>HierarchyLabelProvider</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider.allowsCopyPasteFormat(DSemanticDecorator)</code> has been added in replacement of 
+				<code>allowsCopyPasteLayout(DSemanticDecorator)</code> that is now deprecated. This 2 methods must return the same result. 
+				<code>allowsCopyPasteLayout(DSemanticDecorator)</code> will be removed in the new major version.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The constant 
+				<code>EDGE_SNAP_BACK</code> has been added in class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds</code>. It corresponds to the new snap back label action id that is present on edges.
+			</li>
+			<li><span class="label label-success">Added</span> 2 methods are added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.SiriusLayoutDataManager</code> (and also in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.AbstractSiriusLayoutDataManager</code>):
+				<ul>
+					<li>
+						<code>applyFormat(IGraphicalEditPart)</code>: Apply the current format data (layout data and style data) to the given edit part.
+					</li>
+					<li>
+						<code>applyStyle(IGraphicalEditPart)</code>: Apply the current style data to the give edit part.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> 2 methods are added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor</code>:
+				<ul>
+					<li>
+						<code>createCopyFormatContribution(IDiagramWorkbenchPart)</code>: In replacement of 
+						<code>createCopyLayoutContribution(IDiagramWorkbenchPart)</code> that is now deprecated.
+					</li>
+					<li>
+						<code>createPasteFormatContribution(IDiagramWorkbenchPart)</code>: In replacement of 
+						<code>createPasteLayoutContribution(IDiagramWorkbenchPart)</code> that is now deprecated.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> New action ids have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds</code>:
+				<ul>
+					<li>
+						<code>COPY_FORMAT</code>: Action contribution id for the copy format. It replaces the old 
+						<code>COPY_LAYOUT</code>.
+					</li>
+					<li>
+						<code>PASTE_FORMAT</code>: Action contribution id for the paste format. It does not replace the old 
+						<code>PASTE_LAYOUT</code>. The paste format paste the layout and the style. The paste layout only paste layout.
+					</li>
+					<li>
+						<code>PASTE_STYLE</code>: Action contribution id for the paste style.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isDescendantOf(View)</code> has been added to know if a view is a descendant of another view.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.getAncestor(int...)</code> has been added to retrieve the first ancestor of the view, or itself, that has at least one of the visualID passed as parameter.
+			</li>
+			<li><span class="label label-success">Added</span> The new preference key 
+				<code>PREF_SHOW_LINK_EDGE_LABEL_ON_SELECTION</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. It corresponds to the preference shown in 
+				<em>Sirius/Sirius Diagram/Connections</em> Eclipse preferences.
+			</li>
+			<li><span class="label label-success">Added</span> The new figure 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SiriusWrapLabelWithAttachment</code> is a specific 
+				<code>SiriusWrapLabel</code> that allows to show an attachment between the label and its edge.
+			</li>
+			<li><span class="label label-success">Added</span> A new kind of request, 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.requests.StraightenToRequest</code>, has been added to handle the new 
+				<em>Straighten to</em> actions. The corresponding id has also been added: 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.requests.RequestConstants.REQ_STRAIGHTEN</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 4 action ids have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds</code>:
+				<ul>
+					<li>
+						<code>STRAIGHTEN_TO_TOP</code>: For 
+						<em>Straighten to top</em> action,
+					</li>
+					<li>
+						<code>STRAIGHTEN_TO_BOTTOM</code>: For 
+						<em>Straighten to bottom</em> action,
+					</li>
+					<li>
+						<code>STRAIGHTEN_TO_LEFT</code>: For 
+						<em>Straighten to left</em> action,
+					</li>
+					<li>
+						<code>STRAIGHTEN_TO_RIGHT</code>: For 
+						<em>Straighten to right</em> action.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> Constants have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath</code> for the icon path of the four new straighten actions.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.AbstractSiriusLayoutDataManager</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.AbstractSiriusFormatDataManager</code> instead.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.ILayoutDataManagerProvider</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.IFormatDataManagerProvider</code> instead.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.LayoutDataHelper</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.FormatDataHelper</code> instead.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.LayoutDataKey</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.FormatDataKey</code> instead.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.SiriusLayoutDataManager</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> instead.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.SiriusLayoutDataManagerForSemanticElementsFactory</code> is deprecated, use 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerForSemanticElementsFactory</code> instead.
+			</li>
+			<li><span class="label label-info">Moved</span> The translation key 
+				<code>HierarchyLabelProvider_elementWihtoutNameLabel</code> has been removed from the 
+				<code>org.eclipse.sirius.diagram.ui</code> plug-in&#8217;s 
+				<code>Messages</code> class, and moved into the 
+				<code>org.eclipse.sirius.ui</code>'s 
+				<code>Messages</code> class.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.gmf.runtime">Changes in 
+			<code>org.eclipse.sirius.ext.gmf.runtime</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>SiriusSnapFeedbackPolicy</code> has been copied from 
+				<code>org.eclipse.sirius.ext.gef.editpolicies</code> to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.editpolicies</code>. The old class in plug-in 
+				<code>org.eclipse.sirius.ext.gef</code> is deprecated and will be removed in the next version.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility methods 
+				<code>getRepresentationDescriptors(final String)</code>, 
+				<code>getRepresentationDescriptors(final String , final Session )</code> and 
+				<code>getRepresentationDescriptorFromRepresentation(DRepresentation)</code> have been added in class 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase</code> to adapt tests considering the 
+				<code>DView.ownedRepresentationDescriptors</code> addition.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility method 
+				<code>mouseScrollWithKey(int, int, int, int)</code>, has been added in classes 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor</code>, 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer</code> and 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas</code> to allow testing events occurring after a mouse scroll combined to a keyboard key pressed at a given absolute position.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.properties">Changes in 
+			<code>org.eclipse.sirius.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The property 
+				<code>domainClassExpression</code> has been renamed into 
+				<code>iterableExpression</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The properties 
+				<code>fontSize</code> and 
+				<code>labelFontSize</code> have been renamed into 
+				<code>fontSizeExpression</code> and 
+				<code>labelFontSizeExpression</code> since both of them were already treated as expression.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.properties">Changes in 
+			<code>org.eclipse.sirius.ui.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Four utility classes have been added as API in the package 
+				<code>org.eclipse.sirius.ui.properties.api</code> in order to help with the transformation of the description of custom widgets. The class 
+				<code>AbstractDescriptionConverter</code> can now be used as superclass for all the converters. The classes 
+				<code>DefautDescriptionConverter</code>, 
+				<code>DefautStyleDescriptionConverter</code> and 
+				<code>DefautDescriptionWithInitialOperationConverter</code>, now accessible, should handle most of the use cases. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ecore.extender">Changes in 
+			<code>org.eclipse.sirius.ecore.extender</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The message 
+				<code>org.eclipse.sirius.ecore.extender.business.api.permission.exception.LockedInstanceException.PERMISSION_ISSUE_MESSAGE</code> has been modified. You should now use the 
+				<code>MessageFormat</code>. Example: 
+				<code>LockedInstanceException.PERMISSION_ISSUE_MESSAGE + getText(lockedElements)</code> must be replaced by 
+				<code>MessageFormat.format(LockedInstanceException.PERMISSION_ISSUE_MESSAGE, getText(lockedElements))</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessorsRegistry</code> has been refactored to avoid problem with 
+				<code>ModelAccessor</code> lifecycle. The constructor has no longer a parameter.
+			</li>
+		</ul>
+		<h2 id="sirius4.0.0">Changes in Sirius 4.0.0</h2>
+		<h3 id="UserVisibleChanges4">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> The user can now filter elements according to a Typed variable (String, Integer, EEnum or any EDataType). If a user applies a filter containing Typed Variables, a dialog is displayed to allow user entering the Typed Variable values. That values can be used as variables in the Condition Expression of the Variable Filter.</li>
+			<li><span class="label label-success">Added</span> When the diagram is larger than the editor, you can move it in all directions pressing the middle-button and dragging the mouse (keeping the button pressed).</li>
+			<li><span class="label label-info">Modified</span> Now if an object is locked and cannot be modified according to 
+				<code>IPermissionAuthority</code>, the properties view will not be editable if this locked object is selected from the Model Explorer view.
+			</li>
+			<li><span class="label label-info">Modified</span> When trying to reconnect an edge end on another edge, the edge is now highlighted only if a reconnect tool is found (the precondition of the tool is not tested here).</li>
+			<li><span class="label label-info">Modified</span> List items now have the same margin whichever their parent is a simple list or a compartmentalized list. The margin in compartmentalized list was incorrectly set to 0 pixel.</li>
+			<li><span class="label label-info">Modified</span> The wizard to ask the new representation name has been changed. These concerns the title of the wizard and the input label. Example with a new Entities diagram for EcoreTools:</li>
+		</ul>
+		<p>
+			<img border="0" src="images/representationNameWizardChange.png"/>
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> The export of diagram as image handles the gradient color for container background for BMP, JPG, PNG and SVG formats. Before, it only works for JPG format.</li>
+			<li><span class="label label-info">Modified</span> The <img src="images/ApplyAppearanceProperties.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> 
+				<code>Apply Appearance Properties</code> action has been modified to use the last selected element as base style instead of the first one.
+			</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> Sirius 4.0 introduces 
+				<strong>experimental</strong> support for specifying the properties views of your modelers directly from inside the VSM. This feature uses the same dynamic approach as for specifying diagrams, tables and trees, with a very flexible configuration language and no code generation involved (including live preview of any change). As of Sirius 4.0, this feature should be considered in an experimental state with details subject to changes until Sirius 4.1, and is not installed by default. To install it, make sure either 
+				<a href="http://download.eclipse.org/releases/neon">the Eclipse Neon repositry</a> or the 
+				<a href="http://download.eclipse.org/sirius/updates/releases/4.0.0/neon">Sirius 4.0</a> and 
+				<a href="http://download.eclipse.org/modeling/emft/eef/updates/releases/1.6.0">EEF 1.6</a> repositories are available, and then to install the following features (from in the 
+				<em>Modeling</em> category of Neon, or 
+				<em>Sirius Experimental Features</em> of the Sirius repository ):
+				<ul>
+					<li>
+						<em>Sirius Properties Views &#8211; Runtime Support</em> (
+						<code>org.eclipse.sirius.properties.feature.feature.group</code>): needed at runtime for deployed modelers which have properties views defined in their specification.
+					</li>
+					<li>
+						<em>Sirius Properties Views &#8211; Specifier Support</em> (
+						<code>org.eclipse.sirius.specifier.properties.feature.feature.group</code>): provides support for editing the configuration model directly inside the VSM editor and the specifier documentation.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Once this is done, you can find the actual documentation in the 
+			<em>Sirius Specifier Manual</em>, under the 
+			<a href="specifier/properties/Properties_View_Description.html">
+				<em>Properties View</em>
+			</a> section.
+		</p>
+		<ul>
+			<li><span class="label label-success">Added</span> All static strings defined in the VSMs which are visible to the end-user of the modeler, like viewpoint and tools names, can now be internationalized. Simply replace the name with a translation key reference of the form 
+				<code>%myUniqueKey</code> in the VSM, and define the value in the 
+				<em>Viewpoint Specification Project</em>'s 
+				<code>plugin.properties</code> (for the default value), or 
+				<code>plugin_XX.properties</code> for locale 
+				<code>XX</code>. The underlying mechanism is the same as for Eclipse/OSGi plug-ins, so translations can even be contributed by physically separate plug-in fragments. See 
+				<a href="specifier/general/Specifying_Viewpoints.html#translatable_messages">the corresponding section</a> in the documentation for more details.
+			</li>
+			<li><span class="label label-success">Added</span> It is possible to create 
+				<a href="specifier/diagrams/Diagrams.html#filter_with_typed_variable">Typed Variable</a> under Variable Filter.
+			</li>
+			<li><span class="label label-success">Added</span> A new class 
+				<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices</code> (from plug-in 
+				<code>org.eclipse.sirius.ext.emf.edit</code>) has been added with a complete set of service methods to leverage most of the features of the &#8220;EMF Edit&#8221; framework, for example the various 
+				<em>Item Providers</em> associated to semantic elements. See 
+				<a href="specifier/general/Writing_Queries.html#editing_domain_services">the documentation</a> for details.
+			</li>
+			<li><span class="label label-success">Added</span> The specifier can now restrict the border node authorized sides. This new option is available in the advanced tab of the border node style. See the 
+				<a href="specifier/diagrams/Diagrams.html#authorizedsides">specifier documentation</a> for more details.
+			</li>
+			<li><span class="label label-info">Modified</span> The use of type literals in operations like 
+				<code>filter()</code> or 
+				<code>oclIsKindOf()</code> requires to explicitly add the domain meta-models plug-ins to the dependencies of the 
+				<em>Viewpoint Specification Project</em>. The documentation has been modified to recommend this.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<strong>Warning</strong>: Before this version, a style customization of an 
+				<code>EEnum</code> attribute, like 
+				<code>labelFormat</code>, worked with a value expression using a Java service returning a 
+				<code>EEnumLiteral</code>. It is now forbidden. You must return an 
+				<code>Enumerator</code>. The documentation about 
+				<a href="specifier/diagrams/Diagrams.html#enum_customization">Styles Customization</a> now details this case.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>BorderSizeComputationExpression</code> migration has been corrected to recursively handle the sub container mappings. VSM created or migrated with Sirius 3.1.0, 3.1.1 or 3.1.2 might require a manual modification for the style descriptions of sub container mappings with border size computation equals to 0 as we cannot determine if they were added (or updated) after or before the migration: starting with Sirius 3.1.0, no border will be displayed for a 0 pixel value whereas with older version container always had at least a 1 pixel border.
+			</li>
+			<li><span class="label label-info">Modified</span> The variable under VariableFilter, previously named &#8220;Variable&#8221;, is renamed to &#8220;Select Model Element Variable&#8221;. It is functionally equivalent.</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> It is now possible to provide a full customized tab-bar by implementing the 
+				<code>ITabbarContributor</code> through the 
+				<code>org.eclipse.sirius.diagram.ui.tabbarContributor</code> extension-point. See the 
+				<a href="developer/extensions-provide_tabbar_extensions.html#contributeFullTabbar">developer documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to provide new shapes for basic shape styles through the 
+				<code>org.eclipse.sirius.diagram.bundledImageShape</code> extension-point. See the 
+				<a href="developer/extensions-provide_custom_bundled_image_shape.html">developer documentation</a> for more details.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius2">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.session.SessionEditorInput.getStatus()</code> has been added to have the status about session opening, i.e. if it has been correctly opened, cancelled or an exception has occurred. 
+			</li>
+			<li><span class="label label-success">Added</span> A new variant of 
+				<code>org.eclipse.sirius.business.api.helper.task.TaskHelper.buildTaskFromModelOperation(EObject, ModelOperation)</code> has been added, which does not require to specify a 
+				<code>DRepresentation</code> in the context. It allows the creation of a task which executes a behavior specified by 
+				<code>ModelOperations</code> outside of the context of a specific representation, provided the 
+				<code>ModelOperations</code> work in that context.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.description.TypedVariable</code> has been created.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.description.InteractiveVariableDescription</code> has been created as tag interface for variables that require user interaction to be valued.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tools.api.command.ui.UICallBack.askForTypedVariable(List&lt;TypedVariable&gt;, List&lt;String&gt;)</code> has been created.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tools.api.command.ui.NoUICallback.askForTypedVariable(List&lt;TypedVariable&gt;, List&lt;String&gt;)</code> has been created.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.getRequiredViewpoints(DRepresentation)</code> has been added to have mean to get required viewpoints to use a representation.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices.getRequiredViewpoints(DRepresentation)</code> has been added to have a default implementation of 
+				<code>DialectServices.getRequiredViewpoints(DRepresentation)</code> method.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices.isRelatedViewpointSelected(Session, RepresentationDescription)</code> protected method has been added to check if a 
+				<code>RepresentationDescription</code> is usable in the context of the specified session.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tools.api.command.ui.UICallBack.askForDetailName(String, String, String)</code> method has been added to replace the deprecated 
+				<code>org.eclipse.sirius.tools.api.command.ui.UICallBack.askForDetailName(String, String)</code>. This method now uses the description name as title for the wizard. This new method has been implemented by 
+				<code>org.eclipse.sirius.ui.tools.api.command.AbstractSWTCallback</code> and 
+				<code>org.eclipse.sirius.tools.api.command.ui.NoUICallback</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.loadAndOpenRepresentationsFile(URI, boolean)</code> has been added to specify if job used to open a session must be considered as launched by the user or not, because by default with 
+				<code>ModelingProjectManager.loadAndOpenRepresentationsFile(URI)</code> the job was not considered as launched by the user.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.description.tool.SelectModelElementVariable</code> now implements 
+				<code>org.eclipse.sirius.viewpoint.description.InteractiveVariableDescription</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.description.tool.AbstractVariable</code> has been moved to 
+				<code>org.eclipse.sirius.viewpoint.description.AbstractVariable</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.description.tool.SubVariable</code> has been moved to 
+				<code>org.eclipse.sirius.viewpoint.description.SubVariable</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.modelingproject.ModelingProject.getMainRepresentationsFileURI()</code> methods no more update workspace resource about markers, now this must be done in caller on IllegalArgumentException catch in a workspace aware operation.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.dialect.command.RefreshRepresentationsCommand.canExecute()</code> now returns false if a 
+				<code>DRepresentation</code> cannot be refreshed, by calling 
+				<code>DialectManager.canRefresh(DRepresentation)</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> Several methods of 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper</code> now return a 
+				<code>fr.obeo.dsl.viewpoint.DView</code> instead of a 
+				<code>fr.obeo.dsl.viewpoint.DRepresentationContainer</code>: * 
+				<code>findContainer(EObject, Viewpoint, Collection&lt;DAnalysis&gt;, DAnalysisSelector)</code>,
+				<ul>
+					<li>
+						<code>findContainerForAddedRepresentation(EObject, Viewpoint, Collection&lt;DAnalysis&gt;, DAnalysisSelector, DRepresentation)</code>,
+					</li>
+					<li>
+						<code>findContainerForAddedRepresentation(DAnalysis, DRepresentation)</code>, 
+						<code>findFreeContainer(Viewpoint, Collection&lt;DAnalysis&gt;, DAnalysisSelector)</code>
+					</li>
+					<li>
+						<code>findFreeContainer(Viewpoint, Collection&lt;DAnalysis&gt;, DAnalysisSelector)</code>.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationContainer</code> EClass have been removed. It used to be the only implementation of 
+				<code>org.eclipse.sirius.viewpoint.DView</code>, the 
+				<code>models</code> derived transient reference has been moved to 
+				<code>DView</code>. An automatic migration has been added during the loading of the representation to handle this change.
+			</li>
+			<li><span class="label label-danger">Removed</span> The class 
+				<code>org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2</code> has been deleted and is now 
+				<code>MetamodelDescriptorProvider</code>. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A method 
+				<code>getInferredVariableTypes(Boolean value)</code> in 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.ValidationResult</code> so that 
+				<code>IInterpreter</code> implementations able to infer more specific types based on predicates result provides this information to Sirius which will then use it for validating other expressions. You might want to look at 
+				<code>org.eclipse.sirius.common.acceleo.aql.business.internal.AQLSiriusInterpreter</code> which is an implementation providing this type inference.
+			</li>
+			<li><span class="label label-success">Added</span> A helper 
+				<code>org.eclipse.sirius.common.tools.api.util.MessageTranslator</code> providing 
+				<code>getMessage(EObject, String)</code> and 
+				<code>getMessage(Bundle, String)</code> service dedicated into processing a translatable message to return the translation in the active language when available. This service returns the String without modification if not translatable or no translation is available.
+			</li>
+			<li><span class="label label-success">Added</span> The &#8220;INFO&#8221; severity has been added to 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterStatus</code> to reflect all kind of language validation severity (of AQL for example).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram2">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.VariableValue</code>, 
+				<code>org.eclipse.sirius.diagram.TypedVariableValue</code> and 
+				<code>org.eclipse.sirius.diagram.EObjectVariableValue</code> has been created.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.description.filter.impl.VariableFilterImpl.resetVariables()</code> has been created to indicate that variables have to be computed again.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.description.style.Side</code> EEnum has been added to define a border node side on the parent.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.description.style.NodeStyleDescription#forbiddenSides</code> attribute has been added to set the border node forbidden sides on the parent.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.business.api.query.DNodeQuery.getForbiddenSide()</code> has been added to retrieve the forbidden sides of a DNode (make sense only for Border Nodes).
+			</li>
+			<li><span class="label label-info">Modified</span> The type of 
+				<code>org.eclipse.sirius.diagram.description.filter.VariableFilter.ownedVariable</code> has been changed to 
+				<code>org.eclipse.sirius.viewpoint.description.InteractiveVariableDescription</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The type of 
+				<code>org.eclipse.sirius.diagram.FilterVariableHistory.ownedValues</code> has been changed to 
+				<code>org.eclipse.sirius.diagram.VariableValue</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The return type of 
+				<code>org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil.findRepresentationContainer(DDiagram)</code> has been changed from 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationContainer</code> to 
+				<code>org.eclipse.sirius.viewpoint.DView</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.diagram.description.filter.FilterVariable</code> has been removed. It is replaced by 
+				<code>org.eclipse.sirius.viewpoint.description.tool.SelectModelElementVariable</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.diagram.description.filter.impl.VariableFilterImpl.setFilterContext()</code> has been removed. This method was, in part, useless and is replaced by 
+				<code>org.eclipse.sirius.diagram.description.filter.impl.VariableFilterImpl.resetVariables()</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.tools.api.command.AbstractSWTCallback.askForTypedVariable(List&lt;TypedVariable&gt;, List&lt;String&gt;)</code> has been created.
+			</li>
+			<li><span class="label label-success">Added</span> The new internationalizable label 
+				<code>Messages_createRepresentationInputDialog_DefaultRepresentationDescName</code> has been added (available through 
+				<code>org.eclipse.sirius.ui.tools.api.Messages.createRepresentationInputDialog_DefaultRepresentationDescName</code>. Its value is &#8220;Representation&#8221;.
+			</li>
+			<li><span class="label label-info">Modified</span> The internationalizable label 
+				<code>Messages_createRepresentationInputDialog_NewRepresentationNameLabel</code> has been replaced by &#8220;Name:&#8221; (previous value was &#8220;Representation name:&#8221;). 
+			</li>
+			<li><span class="label label-info">Modified</span> The internationalizable label 
+				<code>Messages_createRepresentationInputDialog_RepresentationDescriptionLabel</code> has been replaced by &#8220;Representation description: {0}&#8221; (previous value was &#8220;Representation description: &#8221;). 
+			</li>
+			<li><span class="label label-info">Modified</span> The internationalizable label 
+				<code>Messages_createRepresentationInputDialog_Title</code> has been replaced by &#8220;New {0}&#8221; (previous value was &#8220;New Representation&#8221;).
+			</li>
+			<li><span class="label label-danger">Removed</span> The internationalizable label 
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.OpenRepresentationsFileJob_initModelingProjectsTask</code> has been removed as this message is no more used.
+			</li>
+			<li><span class="label label-danger">Removed</span> The class 
+				<code>org.eclipse.sirius.ui.business.api.editor.SpecificSessionManager</code> has been removed. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A new system property named 
+				<code>org.eclipse.sirius.diagram.ui.svg.maxCacheSizeMB</code> has been added. It can be used to tweak the maximum size (in megabytes) of pre-rendered SVG images to keep in cache. The default is 50, corresponding to 50MB of bitmaps of 4 8-bit channels. Increasing the limit can improve performance when using diagrams with a lot of SVG images, at the cost of increased memory usage.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.ITabbarContributor</code> interface has been added to provide a customized tab-bar for a specific selection.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor</code> is an abstract implementation of 
+				<code>ITabbarContributor</code> that allows reusing one or several of the default Sirius contribution items.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.editor.properties.sections.style.bundledimagedescription.BundledImageDescriptionShapePropertySectionSpec</code> has been added to have a custom display in the VSM for provided basic shape.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramBorderNodeEditPart.createNodeFigure()</code> has been created to factorize the 
+				<code>DNode2EditPart</code> and 
+				<code>DNode4EditPart</code> constructors.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.DBorderedNodeFigure.setForbiddenSides(int...)</code> has been added to set the figure forbidden sides on its parent.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.DBorderedNodeFigure.getAuthorizedSides()</code> has been added to retrieve the figure authorized side (by default all sides).
+			</li>
+			<li><span class="label label-success">Added</span> The following protected methods have been added to 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SVGFigure</code> : 
+				<code>String getKey(Graphics)</code>, 
+				<code>Image getImage(Rectangle, Graphics)</code>, 
+				<code>static boolean doRemoveFromCache(String)</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 2 methods are added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService</code> to manage gradient color in export to PNG or SVG formats: 
+				<code>DiagramEditPartService.saveSVGToFile(IPath, SiriusDiagramSVGGenerator, IProgressMonitor)</code> and 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService.saveToFile(IPath, SiriusDiagramSVGGenerator, ImageFileFormat, IProgressMonitor)</code>. These 2 methods are copy of parent methods with 
+				<code>SiriusDiagramSVGGenerator</code> as parameter instead of a 
+				<code>DiagramSVGGenerator</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getGradientPaintFromValue(int, int, int, int, Color, Color)</code> has been added to handle a cache for 
+				<code>java.awt.GradientPaint</code> as it is the case for 
+				<code>org.eclipse.swt.graphics.Pattern</code> with 
+				<code>getPatternFromValue()</code>.
+			</li>
+			<li><span class="label label-success">Added</span> Methods have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GradientHelper</code> to handle 
+				<code>java.awt.GradientPaint</code> as 
+				<code>org.eclipse.swt.graphics.Pattern</code>: 
+				<code>getGradientPaintDiag(Rectangle, Color, Color)</code>, 
+				<code>getGradientPaintLeftToRight(Rectangle, Color, Color)</code>, 
+				<code>getGradientPaintTopToBottom(Rectangle, Color, Color)</code> and 
+				<code>getGradientPaint(int, Rectangle, Color, Color)</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ACTION_SIRIUS_COPY_APPEARANCE_PROPERTIES</code> has been added to identify the new 
+				<em>Sirius Copy Appearence Properties</em> action.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.BundleImageFigure</code> now overrides the method 
+				<code>setBorder(Border border)</code>. It also provides the accessors for the new field 
+				<code>mainBorderSize</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.BundledImageFigure</code> now inherits directly from 
+				<code>SVGFigure</code> instead of 
+				<code>AbstractCachedSVGFigure</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SVGWorkspaceImageFigure</code> now inherits directly from 
+				<code>SVGFigure</code> instead of 
+				<code>AbstractCachedSVGFigure</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SVGFigure</code> now implements interfaces 
+				<code>StyledFigure</code>, 
+				<code>ITransparentFigure</code> and 
+				<code>ImageFigureWithAlpha</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The following mehtods have been removed from 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SVGFigure</code>: 
+				<code>NodeList getNodes(String)</code>, 
+				<code>Color getColor(Element, String)</code>, 
+				<code>void updateRenderingHints(Graphics)</code>, 
+				<code>staticImage toSWT(Device, BufferedImage)</code>, 
+				<code>boolean checkContentAvailable()</code>, 
+				<code>Rectangle2D getAreaOfInterest()</code>, 
+				<code>void setAreaOfInterest(Rectangle2D)</code>, 
+				<code>boolean isSpecifyCanvasWidth()</code>, 
+				<code>void setSpecifyCanvasWidth(boolean)</code>, 
+				<code>boolean isSpecifyCanvasHeight()</code>, 
+				<code>void setSpecifyCanvasHeight(boolean)</code>, 
+				<code>boolean getSpecifyCanvasWidth()</code>, 
+				<code>boolean getSpecifyCanvasHeight()</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractCachedSVGFigure</code> has been removed. Its functionality was merged directly into 
+				<code>SVGFigure</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The static 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SVGWorkspaceImageFigure.createImageFigure(ContainerStyle)</code> method has been removed; it was broken and not called anywhere.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.emf.ui">Changes in 
+			<code>org.eclipse.sirius.ext.emf.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.ext.emf.ui.properties.ExtensiblePropertySource.collector</code> field is now in protected visibility to be modifiable and accessible by subclass.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.gmf.runtime2">Changes in 
+			<code>org.eclipse.sirius.ext.gmf.runtime</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The interface 
+				<code>org.eclipse.sirius.ext.gmf.runtime.diagram.ui.tools.MoveInDiagramDragTracker</code> has been added to declare states used by all DragTrackers which manage move in diagram using mouse middle click.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.tools.api.properties.SiriusExtensiblePropertyDescriptor</code> has been added to provide a specific 
+				<code>ExtensiblePropertyDescriptor</code> which test 
+				<code>IPermissionAuthority</code> to make properties view editable or not.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.ui.tools.api.properties.SiriusExtensiblePropertySource</code> has been modified to use 
+				<code>SiriusExtensiblePropertyDescriptor</code> to provide not editable properties view when the object, selected from the Model Explorer view, cannot be modified.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.ui</code>, and thus the whole 
+				<code>org.eclipse.sirius.runtime</code> feature no longer depends on the JDT (technically the dependency towards 
+				<code>org.eclipse.jdt.core</code> has been removed). If you need the JDT Core in your environment, you will need to add the dependency explicitly. The Sirius specification environment (
+				<code>org.eclipse.sirius.editor</code>) still depends on PDE (and thus indirectly the JDT too).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support2">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.tests.support.api.DefaultTestMemento</code> has been created. It help to simulate a real 
+				<code>IMemento</code> for editor restoration.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>SiriusTestCase.initViewpoint(String, Session, boolean)</code> has been added to allow viewpoint activation without creating representations.
+			</li>
+			<li><span class="label label-success">Added</span> The methods 
+				<code>initLoggers()</code> and 
+				<code>disposeLoggers()</code> of class 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase</code> have now a protected visibility (instead of private) to allow subclasses to use this logger without all the 
+				<code>genericSetUp</code> behavior.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> The method 
+				<code>SiriusTestCase.initViewpoint(String, Session, EObject)</code> has been deprecated because the last parameter is useless to activate a viewpoint.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>getTreeItem(final SWTBotTreeItem[], final String)</code> has been added in 
+				<code>org.eclipse.sirius.tests.swtbot.support.utils</code> to retrieve recursively a 
+				<code>SWTBotTreeItem</code> in a 
+				<code>SWTBotTreeItem</code> array.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.ShellChangedCondition</code> has been added to wait until the current active shell has changed.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.TreeItemWithImageCondition</code> has been added to wait until the given treeItem has the expected image.
+			</li>
+			<li><span class="label label-info">Modified</span> A second 
+				<code>String</code> parameter has been added to the method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.business.UILocalSession.newDiagramRepresentation(String, String)</code>. This parameter is the label of the representation description. It is necessary since the change of the wizard to ask the new representation name (see User-Visible Changes for detail).
+			</li>
+			<li><span class="label label-info">Modified</span> A third 
+				<code>String</code> parameter has been added to the constructor of 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.business.UINewRepresentationBuilder</code> for the same above reasons.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.xtext">Changes in 
+			<code>org.eclipse.sirius.common.xtext</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The dependency from 
+				<code>org.eclipse.sirius.common.xtext</code> to the JDT plug-in 
+				<code>org.eclipse.jdt.core</code> is now optional. If you need the JDT Core in your environment, you will need to add the dependency explicitly. The Sirius specification environment (
+				<code>org.eclipse.sirius.editor</code>) still depends on PDE (and thus indirectly the JDT too).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.editor">Changes in 
+			<code>org.eclipse.sirius.editor</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>bindCompletionProcessor(AbstractPropertySection, IAssistContentProvider, Text)</code> has been added to the class 
+				<code>org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider</code> to allow to bind a specific IAssistContentProvider to the text.
+			</li>
+		</ul>
+		<h2 id="sirius3.1.0">Changes in Sirius 3.1.0</h2>
+		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> A new feature allows to snap to all shapes (instead of just to snap to sibling shapes). The <kdb>F4</kdb> shortcut key activates this mode when you resize a node, move a node or move a bendpoint of an edge, see 
+				<a href="./user/diagrams/Diagrams.html#snap_to_shapes">the documentation</a> for details.
+			</li>
+			<li><span class="label label-success">Added</span> A new feature allows to move the edge group (Edge, Label, Border Nodes) if the <kdb>F3</kdb> shortcut is pressed during the edge moving/dragging. This feature is only available for the case of edges with border node as source and target. See 
+				<a href="./user/diagrams/Diagrams.html#move_edge_group">documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> The label of edges now stays as much as possible near the edge when it is moved.</li>
+		</ul>
+		<p>Sample before Sirius 3.1:
+			<br/>
+			<img border="0" src="images/edgeLabelMoveBeforeSirius3.1.gif"/> 
+			<br/>Same sample since Sirius 3.1:
+			<br/>
+			<img border="0" src="images/edgeLabelMoveAfterSirius3.1.gif"/>
+		</p>
+		<ul>
+			<li><span class="label label-success">Added</span> It is now possible to collapse compartments using the handle visible on the following illustrations. The handle&#8217;s position varies depending on the label alignment to avoid overlapping (depending on the list elements alignment for a list with an hidden label).</li>
+		</ul>
+		<p>
+			<img border="0" src="images/compartments_collapse.png"/> 
+			<br/>
+			<img border="0" src="images/compartments_collapse2.png"/>
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Snap to Grid</em> and 
+				<em>Snap to Shapes</em> features are now automatically disabled on Sequence diagrams. As indicated 
+				<a href="./user/sequences/Sequence%20Diagrams.html#introduction">in the user documentation</a>, to work correctly, Sirius sequence diagrams must have a tight control on where the graphical elements are placed on the diagram and on their synchronization with the underlying semantic model. Previously, the user had to explicitely disable the snap features.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Link with Editor</em> behavior has changed. The link with editor was previously unidirectional from the Common Navigator (Model Explorer view or Project view) toward the active representation. Now, when selecting one or several elements in the representation, the corresponding semantic elements are selected in the Common Navigator.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Arrange Linked Bordered Nodes</em> tabbar action has been renamed to 
+				<em>Arrange Linked Border Nodes</em> as it is border nodes which are layouted and not bordered nodes.
+			</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Acceleo Query Language</em> (AQL) interpreter has been improved. AQL, and its support in Sirius, is no longer considered experimental, and instead is now the recommended query language to use for new VSMs. Improvements mostly concern better completion and validation, and more precise error reporting. In particular AQL expressions will now be able to display warnings and errors in the Interpreter view. The message displayed in the Interpreter view after an evaluation has also been improved to display the qualified name of the type of the value computed (
+				<code>ePackageName::eClassName</code>). The improvements realized can be viewed by clicking on the image below (click to zoom).
+			</li>
+		</ul>
+		<p>
+			<a href="images/improvedsiriusinterpreter.png">
+				<img border="0" src="images/improvedsiriusinterpreter_thumbnail.png"/>
+			</a>
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> Related to the previous point, the projects created by the 
+				<em>Viewpoint Specification Project</em> wizard are now configured to use AQL by default (instead of Acceleo 3/MTL before). They depend on 
+				<code>org.eclipse.sirius.common.acceleo.aql</code> instead of 
+				<code>org.eclipse.sirius.common.acceleo.mtl</code>, and do not have the Acceleo nature anymore (it is not needed by AQL). If you want to use another language in your queries, make sure you set the appropriate dependencies so that the Sirius support for that language will be present at runtime to interpret the queries.
+			</li>
+			<li><span class="label label-info">Modified</span> The support for containers with vertical or horizontal 
+				<em>compartments</em> on diagrams was introduced in Sirius 3.0.0 as an experimental feature. Several improvements and corrections have been done around the behaviors of this feature which is no longer considered experimental. Validation rules and tooltips in the VSM editor are here to help the specifier create a consistent mapping structure.
+			</li>
+			<li><span class="label label-info">Modified</span> <span class="label label-info">Experimental</span> New, experimental support for recursive 
+				<em>compartments</em> on diagrams: the 
+				<em>children presentation</em> property of a 
+				<em>Container Mapping</em>, which is defined as a 
+				<em>compartment</em> (its parent 
+				<em>ContainerMapping</em> has a 
+				<em>VerticalStack</em> or 
+				<em>HorizontalStack</em> 
+				<em>children presentation</em>), can now also be set to 
+				<em>Vertical Stack</em> and 
+				<em>Horizontal Stack</em>. It allows to define complex stacks of 
+				<em>compartments</em> mixing both stack directions. While working reliably, this support is marked experimental in Sirius 3.1.0 as there are still some behaviors which do not behave as expected. If you make use of this feature, be aware that some details may still change in future releases, including 3.1.x maintenance releases.
+			</li>
+			<li><span class="label label-info">Modified</span> You now really have the capability to set the 
+				<code>BorderSizeComputationExpression</code> as 0 for style of 
+				<code>ContainerMapping</code>. Before Sirius 3.1.0, a size of 0 was interpreted as 1 at runtime. For compatibility reason, all existing 
+				<code>BorderSizeComputationExpression</code> equals to 0 for style of 
+				<code>ContainerMapping</code> are automatically set to 1 (ditto for results of this expression in representations file for container elements). For 
+				<code>ContainerMapping</code>, the default value of 
+				<code>BorderSizeComputationExpression</code> for new style is now 1, except for 
+				<em>Worskpace Image</em> where the value is 0.
+			</li>
+			<li><span class="label label-info">Modified</span> The delete command availability computation has been changed. In case of a delete tool, the availability is now computed considering first the precondition of the tool and then the delete authorisation (using 
+				<code>IPermissionAuthority</code>) of the potential to delete objects. This is the reverse order of what was done before, and can have performance impacts if the precondition is slow. The specifier will to take care to ensure a good performance for the precondition expression of the delete tool.
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges5">Developer-Visible Changes</h3>
+		<h4 id="Partialsupportforinternationalization">Partial support for internationalization</h4>
+		<p>Sirius 3.1 introduces partial support for internationalization: all literal strings from the runtime part of Sirius are now externalized and can be localized by third parties by providing the appropriate &#8220;language packs&#8221; as OSGi fragments. Note that this does not concern the VSM editor&#8217;s UI, the VSMs themselves, or the parts of the UI inherited from Eclipse/EMF/GEF/GMF and other libraries and frameworks used by Sirius.</p>
+		<p>Some API changes were required to enable this. While technically breaking changes if interpreting strictly the OSGi versioning rules, the major version number of the impacted bundles was not incremented as the changes only concern classes that should not impact the vast majority of users. Most breaking changes concern the plug-in/activator classes from each bundle. They are:</p>
+		<ul>
+			<li><span class="label label-success">Added</span>
+				<code>org.eclipse.sirius.diagram.layoutdata.LayoutDataPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>LayoutDataPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span>
+				<code>org.eclipse.sirius.diagram.sequence.SequenceDiagramPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>SequenceDiagramPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span>
+				<code>org.eclipse.sirius.common.xtext.internal.XtextIntegrationPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>XtextIntegrationPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ext.base.BasePlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>BasePlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ext.draw2d.Draw2DExtPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>Draw2DExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ext.e3.ui.Eclipse3UIExtPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>Eclipse3UIExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ext.emf.EMFExtPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>EMFExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.synchronizer.internal.SynchronizerPlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>SynchronizerPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tree.tools.internal.TreePlugin</code>, a subclass of 
+				<code>org.eclipse.emf.common.EMFPlugin</code> has been added. The corresponding OSGi bundle activator is the internal class 
+				<code>TreePlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.common.acceleo.mtl.ide.AcceleoMTLInterpreterIDEPlugin</code> is no longer an OSGi 
+				<code>BundleActivator</code>, and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>AcceleoMTLInterpreterIDEPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.common.acceleo.mtl.ide.AcceleoMTLInterpreterPlugin</code> is no longer an OSGi 
+				<code>BundleActivator</code>, and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>AcceleoMTLInterpreterPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.common.ocl.DslOclPlugin</code> is no longer a 
+				<code>org.eclipse.core.runtime.Plugin</code> (nor an OSGi 
+				<code>BundleActivator</code>), and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>DslOclPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.common.tools.DslCommonPlugin</code> is no longer a 
+				<code>org.eclipse.core.runtime.Plugin</code> (nor an OSGi 
+				<code>BundleActivator</code>), and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>DslCommonPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.diagram.DiagramPlugin</code> is no longer a 
+				<code>org.eclipse.core.runtime.Plugin</code> (nor an OSGi 
+				<code>BundleActivator</code>), and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>DiagramPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.ecore.extender.business.internal.ExtenderPlugin</code> is no longer a 
+				<code>org.eclipse.core.runtime.Plugin</code> (nor an OSGi 
+				<code>BundleActivator</code>), and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>ExtenderPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.table.tools.internal.TablePlugin</code> is no longer a 
+				<code>org.eclipse.core.runtime.Plugin</code> (nor an OSGi 
+				<code>BundleActivator</code>), and instead extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>TablePlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed, Modified</span> 
+				<code>org.eclipse.sirius.eef.adapters.Activator</code> has been renamed into 
+				<code>org.eclipse.sirius.eef.adapters.EEFAdapterPlugin</code> and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>EEFAdapterPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed, Modified</span> 
+				<code>org.eclipse.sirius.common.acceleo.interpreter.Activator</code> has been renamed into 
+				<code>org.eclipse.sirius.common.acceleo.interpreter.InterpreterViewPlugin</code> and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>InterpreterViewPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed, Modified</span> 
+				<code>org.eclipse.sirius.table.ui.ext.Activator</code> has been renamed into 
+				<code>org.eclipse.sirius.table.ui.ext.TableUIExtPlugin</code> and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>TableUIExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed, Modified</span> 
+				<code>org.eclipse.sirius.ui.ext.Activator</code> has been renamed into 
+				<code>org.eclipse.sirius.ui.ext.SiriusUIExtPlugin</code> and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>SiriusUIExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed, Modified</span> 
+				<code>org.eclipse.sirius.tree.ui.ext.Activator</code> has been renamed into 
+				<code>org.eclipse.sirius.tree.ui.ext.TreeUIExtPlugin</code> and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends 
+				<code>org.eclipse.emf.common.EMFPlugin</code>. The actual bundle activator is the new internal class 
+				<code>TreeUIExtPlugin.Implementation</code>.
+			</li>
+			<li><span class="label label-info">Renamed</span> 
+				<code>org.eclipse.sirius.diagram.sequence.ui.SequenceDiagramPlugin</code> has been renamed into 
+				<code>org.eclipse.sirius.diagram.sequence.ui.SequenceDiagramUIPlugin</code> for consistency and to avoid potential name clashes with the new 
+				<code>org.eclipse.sirius.diagram.sequence.SequenceDiagramPlugin</code>.
+			</li>
+		</ul>
+		<p>Additional non-breaking changes:</p>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ext.base.I18N</code> has been added. It provides common utility code to support internationalization. 
+			</li>
+			<li><span class="label label-success">Added</span> The translation keys (and default values) have been added to all the concerned bundles, in their 
+				<code>plugin.properties</code> file. These (translated) messages are available at runtime as static fields of new 
+				<code>Messages</code> classes, added to all concerned bundles (always in the same package as their plug-in/activator class). The concerned bundles are:
+				<ul>
+					<li>
+						<code>org.eclipse.sirius</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.ext.base</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.ecore.extender</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.synchronizer</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common.acceleo.aql</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common.acceleo.aql.ide</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common.acceleo.mtl</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common.acceleo.mtl.ide</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.common.ui</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram.layoutdata</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram.sequence</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram.sequence.ui</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram.ui</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.eef.adapters</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.interpreter</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.table</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.table.ui</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.tree</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.tree.ui</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.ui</code>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>invokeMethod</code> has been added in class 
+				<code>org.eclipse.sirius.common.tools.api.util.ReflectionHelper</code> to call a private method. Warning: This method must be used carefully.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>invokeMethodWithoutException</code> has been added in class 
+				<code>org.eclipse.sirius.common.tools.api.util.ReflectionHelper</code> to call a private method. This method returns true (and not the result of the method) if it is called without exception. It returns false otherwise. Warning: This method must be used carefully.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-success">Added</span> The new interface 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterWithDiagnostic</code> has been added. It allows an interpreter to evaluate an expression and return not only the result of the evaluation but also a diagnostic.
+			</li>
+			<li><span class="label label-success">Added</span> The new class 
+				<code>org.eclipse.sirius.common.tools.api.contentassist.ContentProposalWithReplacement</code> has been added. It allows interpreters to provide proposals for the code completion which can replace an existing part of the expression used. This behavior can be used if the user has started to type a value that would be returned by the code completion. For example, if the user types 
+				<code>aql:self.na</code> and if he selects the content proposal 
+				<code>name</code>, it can replace the existing part of the expression 
+				<code>na</code> to write 
+				<code>aql:self.name</code> instead of just appending 
+				<code>name</code> to create 
+				<code>aql:self.naname</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The new class 
+				<code>org.eclipse.sirius.common.tools.api.contentassist.ContentProposalBuilder</code> used to build the content proposals with their various parameters more easily.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius3">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>addEvaluateSelectionExpressionTask</code> has been added in class 
+				<code>org.eclipse.sirius.tools.api.command.AbstractCommandFactory</code> to allow selection after tool execution.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.StandardServices</code> has been added. This class owns methods used for 
+				<code>service:</code> interpreter.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.business.api.extender.MetamodelDescriptorProvider2</code> has been added and should be preferred instead of implementing 
+				<code>MetamodelDescriptorProvider</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistryImpl.addViewpointFileCollector()</code> method has been added to replace deprecated 
+				<code>ViewpointRegistryImpl.addSiriusFileCollector()</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority.canDeleteInstance(EObject)</code> when called for an object will not be called for children of this object as we know it will return true because if we can delete a parent object we can delete its children. 
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.tools.api.command.DCommand</code> no longer inherits from 
+				<code>IUndoableCommand</code> since undo/redo is managed by EMF Transaction.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistryImpl.addSiriusFileCollector()</code> method has been deprecated as it is about 
+				<code>ViewpointFileCollector</code> and not 
+				<code>SiriusFileCollector</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.business.api.helper.task.ICommandTask.undo()/redo()</code> methods removed because they are useless since undo/redo is managed by EMF Transaction.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.tools.api.command.IUndoableCommand</code> interface removed because it is useless since undo/redo is managed by EMF Transaction.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.session.SessionEditorInput.getInput()</code> method has been added to get the real input for a 
+				<code>DRepresentation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.session.SessionEditorInput.getSession(boolean)</code> method has been added to let the caller choose to create and open a new 
+				<code>Session</code> or not when the known session is closed or does not exist. The 
+				<code>getSession</code> method calls getSession(true).
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.selectAndReveal(DialectEditor, List&lt;DRepresentationElement&gt;)</code> method has been added to explicitly indicate to reveal elements out of the screen (hidden because of the scrollbars location) when selecting them.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.ui.business.api.session.SessionEditorInput.dispose()</code> method has been deprecated as an 
+				<code>IEditorInput</code> can be reused by several instances of 
+				<code>IEditorPart</code> through the navigation history view.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.RegionRegionContainerResizableEditPolicy</code> has been added to handle 
+				<code>DNodeContainer</code> which are both 
+				<code>Region</code> and 
+				<code>RegionContainer</code>: during resize they might have to propagate the resize to their children and/or parents.
+			</li>
+			<li><span class="label label-success">Added</span> The constant 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.LayoutUtils.COLLAPSED_VERTICAL_REGION_HEIGHT</code> has been added to centralize the minimum height of a collapsed Region from a Region Container with a vertical stack children presentation.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNodeEditPart/IDiagramBorderNodeEditPart.getNodeLabel()</code> methods has been moved up to 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.IAbstractDiagramNodeEditPart.getNodeLabel()</code> as both 
+				<code>IDiagramNodeEditPart</code> and 
+				<code>IDiagramBorderNodeEditPart</code> inherits of 
+				<code>IAbstractDiagramNodeEditPart</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES</code> added to replace 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES_TOOLBAR</code> which is deprecated.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES_TOOLBAR</code> added to replace 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES</code> which is deprecated 
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.SetConnectionBendpointsAndLabelCommmand</code> is a new class that allows to update edge label when updating bendpoints. Several existing Sirius commands now extends this new class.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.decorators.AbstractSiriusDecorator.shouldBeVisibleAtPrint()</code> method added to leave 
+				<code>AbstractSiriusDecorator</code> extenders indicate if decoration should be visible at diagram export/print.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES</code> deprecated in favor 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES</code> as it is an action id about border nodes layout.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES_TOOLBAR</code> deprecated in favor 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES_TOOLBAR</code> as it is an action id about border nodes layout.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.EdgeCreationEditPolicy</code> has been removed as it should not be in API and has been replaced by internal 
+				<code>org.eclipse.sirius.diagram.ui.internal.edit.policies.SiriusConnectionEditPolicy</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>setUseLocalCoordinates(boolean)</code> has been removed from 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GradientRoundedRectangle</code>, 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerParallelogram</code>, 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerRectangleFigureDesc</code> as it was generated by GMF tooling and never used in Sirius whose edit parts and edit policies expect 
+				<code>org.eclipse.draw2d.IFigure.useLocalCoordinates()</code> to always return false for its figures. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.synchronizer">Changes in 
+			<code>org.eclipse.sirius.synchronizer</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.synchronizer.CreatedOutput.synchronizeChildren()</code> method takes now a 
+				<code>RefreshPlan</code> in parameter to have more informations to say if children must be synchronized.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support3">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.tests.support.api.AbstractToolDescriptionTestCase</code> has been created. It contains utility methods about tools.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase</code> has been modified 
+				<ul>
+					<li><span class="label label-info">Modified</span> It now inherits from 
+						<code>AbstractToolDescriptionTestCase</code> 
+					</li>
+					<li><span class="label label-success">Added</span> The method 
+						<code>applyContainerCreationTool(String,DDiagram,EObject)</code> has been added.
+					</li>
+					<li><span class="label label-success">Added</span> The method 
+						<code>applyGenericTool(String,DDiagram,EObject)</code> has been added.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support3">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The methods 
+				<code>closePerspective(String)</code>, 
+				<code>closeSiriusPerspective()</code> and 
+				<code>closeModelingPerspective()</code> have been added in class 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.perspective.DesignerPerspectives</code> to allow the closing of perspectives.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.PerspectiveActivatedCondition</code> new offers the capability to inverse the test. This condition becomes a DeactivatedCondition instead of an ActivatedCondition by using the new constructor with inverse parameter.
+			</li>
+			<li><span class="label label-success">Added</span> The methods 
+				<code>isSnapToShape</code> and 
+				<code>isSnapToGrid()</code> have been added in class 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor</code>. They allow to know the state of the corresponding properties.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKey(int, int, int, int, int)</code> (and also 
+				<code>SWTBotSiriusGefViewer.dragWithKey</code> and 
+				<code>SWTBotSiriusFigureCanvas.mouseDragWithKey</code>), has an additional fifth parameter compared to 
+				<code>drag(int, int, int, int)</code> method, to indicate the key code to press during the drag&#8217;n&#8217;drop. It is possible to call this method with 
+				<code>SWT.None</code> to obtain the standard behavior of 
+				<code>drag</code> method. This method also has a correct behavior for the move of bendpoints of edges.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.TopCondition</code>: New condition to wait that top of the edit part is on the expected location.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.BendpointLocationCondition</code>: New condition to wait that a bendpoint is on the expected x or y location.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.TreeChildrenNumberCondition</code>: New condition to wait that a tree has the expected number of children.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tests.swtbot.support.utils.SWTBotCommonHelper.saveCurrentEditor(Session)</code>: This new method is preferable to 
+				<code>saveCurrentEditor()</code> because there is a wait condition to ensure that the save is finished.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.condition.CheckBoundsCondition</code>: This condition now also checks the bounds location if the checkWidth or checkHeight (or both) is false.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.gef">Changes in 
+			<code>org.eclipse.sirius.ext.gef</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The new class 
+				<code>org.eclipse.sirius.ext.gef.query.EditPartQuery</code> has been added. It allows to retrieve all children of the current part.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.jface">Changes in 
+			<code>org.eclipse.sirius.ext.jface</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The new class 
+				<code>org.eclipse.sirius.ext.jface.viewers.IToolTipProvider</code> has been copied from JFace 3.10 from Luna, so that we can use it with Juno and Kepler too.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.gmf.runtime3">Changes in 
+			<code>org.eclipse.sirius.ext.gmf.runtime</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Two new 
+				<code>getIntersection</code> methods have been added in 
+				<code>org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper</code>. They are similar to the existing 
+				<code>getIntersection</code> methods, but they consider the nearest point on the figure if there is no intersection.
+			</li>
+		</ul>
+		<h2 id="sirius3.0.0">Changes in Sirius 3.0.0</h2>
+		<h3 id="UserVisibleChanges6">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> The ability to print table representations has been re-introduced.</li>
+			<li><span class="label label-success">Added</span> The quick outline feature has been added for tree and table editors, see documentation for details.</li>
+			<li><span class="label label-success">Added</span> The label of a list or container can now be hidden by the user from the outline, the tabbar or the contextual menu.</li>
+			<li><span class="label label-success">Added</span> In the 
+				<em>Appearance</em> tab, in addition to 
+				<em>Bold</em> and 
+				<em>Italic</em>, it is now possible to set the font formatting style to 
+				<em>Underline</em> and 
+				<em>Strike through</em> (or any combination of these).
+			</li>
+			<li><span class="label label-success">Added</span> Container elements on diagrams now support vertical and horizontal compartments layout (this is only visible if the modeler configuration makes use of this new feature). </li>
+			<li><span class="label label-success">Added</span> In table and tree editors, a 
+				<em>Refresh</em> can now be launched by hitting <kbd>F5</kbd> like in diagrams (previously the only way was to click on the 
+				<em>Refresh</em> icon or menu item).
+			</li>
+			<li><span class="label label-success">Added</span> In table editors, hitting the <kdb>Del</kdb> key is now equivalent to selecting 
+				<em>Delete Line</em> in the context menu.
+			</li>
+			<li><span class="label label-success">Added</span> On diagrams, it is now possible to set a custom background image on list containers.</li>
+			<li><span class="label label-info">Modified</span> In the 
+				<em>Viewpoint Selection</em> dialog and wizard page, the &#8220;plug-in&#8221; decorator for viewpoints loaded from plug-ins is removed, and a &#8220;Folder&#8221; decorator for viewpoints loaded from the current workspace has been added. This makes the icons more visible in the most common where viewpoints come from installed plug-ins.
+			</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> <span class="label label-info">Experimental</span> Optional support for the experimental 
+				<em>Acceleo Query Language</em> (AQL) has been added to write interpreted expressions.  It is provided by the 
+				<code>org.eclipse.sirius.common.acceleo.aql</code> (required for evaluating the expressions) and 
+				<code>org.eclipse.sirius.common.acceleo.aql.ide</code>  (optional, only needed to provide specification-time features like expression completion) plug-ins. AQL is similar to Acceleo 3/MTL, but simpler and provides much better performance in the Sirius context. If you make use of this feature, be aware that some details may still change in future releases, including 3.0.x maintenance releases. See <a href="https://www.eclipse.org/acceleo/documentation/aql.html" target="_blank">the AQL documentation</a> for more details on the language itself.
+			</li>
+			<li><span class="label label-success">Added</span> <span class="label label-info">Experimental</span> New, experimental support for containers with vertical or horizontal 
+				<em>compartments</em> on diagrams: the 
+				<em>children presentation</em> property of a 
+				<em>Container Mapping</em> has two new values: 
+				<em>Vertical Stack</em> and 
+				<em>Horizontal Stack</em>. They indicate that a container will present its children containers as a vertical/horizontal stack of compartments. While working reliably, this support is marked experimental in Sirius 3.0.0 as there are still some combinations of mappings, styles and behaviors which do not behave as expected. If you make use of this feature, be aware that some details may still change in future releases, including 3.0.x maintenance releases.
+			</li>
+			<li><span class="label label-success">Added</span> Everywhere an image path can be configured in the VSM, a new button is present on the right of the text field. It opens a dialog to select an image, either from the workspace or from an installed plug-in.</li>
+			<li><span class="label label-success">Added</span> Everywhere an interpreted expression can be configured in the VSM, a new button is present on the right of the text field. It opens a multi-line dialog to edit long expression more easily. Auto-completion is supported inside the multi-line dialog.</li>
+			<li><span class="label label-success">Added</span> Compressed SVG images (
+				<code>*.svgz</code>) are now supported everywhere normal SVG images were supported.
+			</li>
+			<li><span class="label label-success">Added</span> When developing a modeler in &#8220;live mode&#8221;, with the VSM in the same workspace as the sample session(s) which use it, VSM expressions which use 
+				<code>service:</code> or 
+				<code>aql:</code> can now invoke Java services which are defined in the workspace (with no need to launch a separate runtime).
+			</li>
+			<li><span class="label label-success">Added</span> A quick outline is now accessible in the VSM editor by using the shortcut <kbd>Ctrl+o</kbd>. It supports filtering on both an element&#8217;s name and properties for quick, keyboard-only navigation in complex VSMs.</li>
+			<li><span class="label label-success">Added</span> The &#8220;hide label by default capability&#8221; has been added to the container styles.</li>
+			<li><span class="label label-success">Added</span> In addition to 
+				<em>Bold</em> and 
+				<em>Italic</em>, 
+				<em>Underline</em> and 
+				<em>Strike Through</em> styles have been added on the label font format.
+			</li>
+			<li><span class="label label-success">Improved</span> Many VSM elements which are required are now created automatically. For example the default layer of a 
+				<em>Diagram Description</em> is automatically added to new 
+				<em>Diagram Descriptions</em>.
+			</li>
+			<li><span class="label label-success">Improved</span> Some default values have been modified to better reflect actual usage. This does not impact existing VSM and only applies to newly created elements.
+				<ul>
+					<li>The label position on a 
+						<em>Node</em> mapping is now 
+						<em>node</em> by default (instead of 
+						<em>border</em> before).
+					</li>
+					<li>The 
+						<em>Arc Width</em> and 
+						<em>Arc Height</em> are now 10 by default (instead of 1 before).
+					</li>
+					<li>The 
+						<em>Enable popup bars</em> is now set by default on new diagrams.
+					</li>
+					<li>No default value for interpreted expressions use the Acceleo 3 / MTL syntax anymore, but only use the core 
+						<code>var:</code> and 
+						<code>feature:</code> interpreters, which are always present.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Improved</span> The precision of the VSM validation, especially regarding the typing of computed expressions, has been greatly improved. Other validation rules like static image paths have also been added or improved.</li>
+			<li><span class="label label-info">Modified</span> In the VSM editor, the context menu entries (categories and items) have been reorganized to put most common actions/items first.</li>
+			<li><span class="label label-info">Modified</span> In diagrams, the style previously named &#8220;Lozenge&#8221; is now called &#8220;Diamond&#8221;.</li>
+			<li><span class="label label-info">Modified</span> In the 
+				<em>Open</em> menu on a representation, the menu is computed from the navigation tool&#8217;s label instead of its name/id.
+			</li>
+			<li><span class="label label-info">Modified</span> All Acceleo 3 references have been removed from the Sirius metamodels to avoid a dependency to Acceleo 3. An automatic migration has been added during the loading of the VSM to avoid a change of behavior. This migration adds explicitly the old default value (
+				<code>[eContents()-&gt;size()/]</code>) in the VSM, that was implicit before. Customers who want to completely remove this dependency must remove the Acceleo 3 expressions from there VSM after the migration.
+			</li>
+			<li><span class="label label-info">Modified</span> The default icons paths of 
+				<em>Selection Wizard</em> and 
+				<em>Pane-Based Selection Wizard</em> used to reference invalid icons, so the corresponding tools had no icon per default in the palette. The default icons paths have been corrected to reference the icons displayed for those elements in the VSM editor.
+			</li>
+			<li><span class="label label-info">Modified</span> "
+				<code>*</code>" can now be used as feature name of a table&#8217;s 
+				<em>Feature Column</em> to skip the feature name validation during the cell creation. This allow to compute the label of cells for lines whose semantic element types have no common 
+				<em>EStructuralFeature</em> (inherited or with same name).
+			</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges6">Developer-Visible Changes</h3>
+		<p>The most important and impacting changes in this release are (details below in plug-in specific sections):</p>
+		<ul>
+			<li><span class="label label-success">Added</span>  The new extension point 
+				<code>org.eclipse.sirius.ui.siriuspropertiescelleditor</code>, defined in 
+				<code>org.eclipse.sirius.ui</code>, can be used to provide customized cell editors for semantic element&#8217;s properties as shown in the properties view on a Sirius representation.
+			</li>
+			<li><span class="label label-success">Added</span>  The new class 
+				<code>org.eclipse.sirius.eef.components.SiriusAwarePropertiesEditingComponent</code> can be used as root class of the generated EEF components to greatly improve performances when using both EEF properties views with Sirius representations. 
+			</li>
+			<li><span class="label label-info">Modified</span> The minimum version of EEF required for using 
+				<code>org.eclipse.sirius.eef.adapters</code> is now 1.5.0 (from 1.2 before). EEF 1.5 is source and binary-compatible with EEF 1.2 to 1.4, and no re-generation of the EEF views should be needed to switch to 1.5.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.business.internal.session.IsModifiedSavingPolicy</code> saving policy, introduced in Sirius 2.0.0 but not enabled at that time is now the default. The previous implementation, 
+				<code>org.eclipse.sirius.business.api.session.SavingPolicyImpl</code> is still available if needed.
+			</li>
+			<li><span class="label label-info">Modified</span> All metamodels defined by Sirius have been modified to use EMF&#8217;s 
+				<code>MinimalEObjectImpl.Container</code> as base class, which reduces memory consumption compared to previous versions.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>RGBValues</code> type used in Sirius to represent colors has been converted into an immutable EMF EDataType, which also reduces memory consumption compared to previous versions.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>AirdResourceImpl</code> type, use for the 
+				<code>*.aird</code> resources, no longer inherits from GMF&#8217;s 
+				<code>GMFResource</code> or depend on GMF in any way. This makes the 
+				<code>org.eclipse.sirius</code> now completely independent on GMF.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>DAnalsysis.models</code> reference has been replaced by the 
+				<code>DAnalsysis.semanticModels</code> attribute, in conjunction with the new 
+				<code>ResourceDescriptor</code> data-type. The 
+				<code>DAnalysis.getModels()</code> Java method is still present for compatibility and returns the same values, but the returned list can not be modified. All changes must be made directly on 
+				<code>DAnalsysis.semanticModels</code> and will be reflected in the value returned by 
+				<code>DAnalysis.getModels()</code>. While not technically deprecated yet, 
+				<code>DAnalysis.getModels()</code> should be avoided and may be removed in a future release.
+			</li>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provide UI functionalities have been moved to new 
+				<code>org.eclipse.sirius.*.ext</code> plug-ins, to make the contributions to the UI optional. If your product consumed directly the Sirius plug-ins instead of the high-level features, you may need to add the new plug-ins if you want the Sirius UI contributions to stay available.
+			</li>
+			<li><span class="label label-danger">Removed</span> Many unused types defined in the metamodels have been removed. This should not impact normal client code. Existing models will be automatically migrated on loading if needed.</li>
+			<li><span class="label label-danger">Removed</span> Sirius no longer installs the 
+				<code>AirDCrossReferenceAdapterImpl</code>, which was a subclass of GMF&#8217;s 
+				<code>CrossReferenceAdapter</code> on session resources (
+				<code>*.aird</code>). If your code relied on GMF&#8217;s implementation to find inverse references, it can use the Sirius session&#8217;s 
+				<code>Session.getSemanticCrossReferencer()</code> instead, which provides the same service (and more) and avoids the redundant installation of GMF&#8217;s version.
+			</li>
+		</ul>
+		<p>Packaging changes:</p>
+		<ul>
+			<li><span class="label label-success">Added</span> Two new feature have been added concerning the new support for the AQL language:
+				<ul>
+					<li>
+						<code>org.eclipse.sirius.runtime.aql</code> includes the minimum required to execute AQL queries at runtime. It must be present on end-users' systems for modelers which use AQL expressions to work.
+					</li>
+					<li>
+						<code>org.eclipse.sirius.aql</code> includes both the runtime requirements and the development-time features like support for auto-completion of AQL expressions in the VSM editor.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span>  The new feature 
+				<code>org.eclipse.sirius.specifier</code> includes everything needed to have a complete Sirius specification environment, with support for all dialects. It includes support for Acceleo 3/MTL queries, but not for AQL (provided by 
+				<code>org.eclipse.sirius.aql</code>) or OCL (provided by 
+				<code>org.eclipse.sirius.runtime.ocl</code>). Future Sirius releases will probably swap AQL and Acceleo 3, making AQL the defaut and part of the main feature, and Acceleo 3/MTL optional in a separate feature.
+			</li>
+			<li><span class="label label-success">Added</span> All Sirius releases and milestones are available as zipped archives in addition to a normal p2 repository/update-site. For each version and platform (e.g. 3.0.0 on Eclipse Mars), two archives are available: one with the Sirius core, and one with the Sirius automated test suites and the sample modelers they rely on. See the 
+				<a href="https://wiki.eclipse.org/Sirius/Update_Sites">Sirius wiki</a> and release pages for more details and links to these archives, for example 
+				<code>http://download.eclipse.org/sirius/updates/releases/2.0.5/</code>. This is retro-active on all previously released versions of Sirius, but not on milestones before 3.0.0.
+			</li>
+		</ul>
+		<p>Other changes:</p>
+		<ul>
+			<li><span class="label label-success">Added</span> Sirius now provides an <a href="http://www.eclipse.org/oomph" target="_blank">Oomph</a> setup file to automatically create a fully configured Eclipse installation ready for contributing patches to Sirius. The latest version can be obtained <a href="http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/plain/releng/org.eclipse.sirius.settings/Sirius.setup" target="_blank">here</a>.</li>
+			<li><span class="label label-success">Added</span> New patches proposed by contributors on the <a href="https://git.eclipse.org/r/#/admin/projects/sirius/org.eclipse.sirius" target="_blank">Sirius Gerrit</a> now automatically trigger a sub-set of the Sirius automated test suites, which give a good feedback on the absence of regressions introduced by the proposed patch.</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapter</code> interface and the 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl</code> have been added to have the capability to disable the proxy resolution. This feature is typically used to prevent loading a resource during its unloading. 
+				<strong>Warning</strong> : 
+				<em>Every additional custom CrossReferenceAdapter</em>  should extend 
+				<code>SiriusCrossReferenceAdapterImpl</code> or at least implement 
+				<code>SiriusCrossReferenceAdapter</code> with the same implementation as 
+				<code>SiriusCrossReferenceAdapterImpl</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.ECrossReferenceAdapterWithUnproxyCapability</code> is a specific kind of 
+				<code>SiriusCrossReferenceAdapter</code>. It provides the capability to resolve all proxy cross references to a given resource. It is now used by the Session as semantic cross referencer. This type is exposed as API but it is not intended to be used/referenced/extended by user code (as the below 
+				<code>LazyCrossReferencer</code> type).
+			</li>
+			<li><span class="label label-success">Added</span> The static method 
+				<code>org.eclipse.sirius.common.tools.api.util.ReflectionHelper.getFieldValueWithoutException(Class&lt;?&gt;, String)</code> has been added to return an internal static value of a class.   
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.resource.ResourceSetSync</code> has a new state 
+				<code>CHANGES_CANCELED</code> used to define the state where the user canceled its changes.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.common.tools.api.resource.ImageFileFormat</code> class has been added (it was in 
+				<code>org.eclipse.sirius.ext.swt</code> before).
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.common.tools.api.util.EclipseUtil.getConfigurationElementsFor()</code> has been added: it calls 
+				<code>org.eclipse.core.runtime.Platform.getExtensionRegistry().getConfigurationElementsFor()</code> only if 
+				<code>Platform.isRunning()</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The interface 
+				<code>org.eclipse.sirius.business.api.migration.IMigrationParticipant</code> exposes a new method 
+				<code>postXMLEndElement([..])</code> which is called during a migration operation. This method should be overridden by participants which have to hook the loading process after each end of XML tag. The  corresponding abstract class 
+				<code>org.eclipse.sirius.business.api.migration.AbstractMigrationParticipant</code> provides a default empty  implementation.
+			</li>
+			<li><span class="label label-success">Added</span> A new class 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager</code> can now be used by langages interpreters to benefit from a consistent handling of Java extensions and support for loading Java services from the workspace.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.TypeName</code> has been introduced to represent in the codebase any type which was previously represented as a plain String.
+			</li>
+			<li><span class="label label-success">Added</span> A new interface 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.TypedValidation</code> has been introduced for 
+				<code>IInterpreter</code> implementations able to provide richer information when validating an expression. This information is captured through a 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.ValidationResult</code> instance.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.VariableType</code> has been introduced to represent the possible types a variable can have in a Viewpoint specification model.
+			</li>
+			<li><span class="label label-success">Added</span> The utility class 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContextUtils</code> has been introduced to factorize code related to managing 
+				<code>IInterpreterContext</code> instances.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.business.api.dialect.description.MultiLanguagesValidator</code> has been introduced to provide a safe and more efficient way to switch to the proper 
+				<code>IInterpreter</code> instance when validating expressions.
+			</li>
+			<li><span class="label label-success">Added</span> <span class="label label-danger">Removed</span> The class 
+				<code>org.eclipse.sirius.common.tools.api.util.RefreshIdFactory</code> has been replaced with 
+				<code>org.eclipse.sirius.common.tools.api.util.RefreshIdsHolder</code> which no longer rely on a global singleton but attach information to an EObject representing the current scope. This impacts 
+				<code>org.eclipse.sirius.diagram.business.api.query.AbstractDNodeQuery</code> , 
+				<code>org.eclipse.sirius.common.tools.api.util.CartesianProduct</code> and 
+				<code>org.eclipse.sirius.common.tools.api.util.EObjectCouple</code> which are now requiring now a 
+				<code>RefreshIdsHolder</code> instance.
+			</li>
+			<li><span class="label label-info">Modified</span>
+				<code>org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer</code> now extends 
+				<code>ECrossReferenceAdapterWithUnproxyCapability</code> and implements 
+				<code>resolveProxyCrossReferences(Resource)</code>.
+			</li>
+			<li><span class="label label-info">Moved</span> The 
+				<code>org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer.enableResolve()</code>  and 
+				<code>disableResolve()</code>  methods has been moved to 
+				<code>SiriusCrossReferenceAdapter.enableResolveProxy()</code>  and 
+				<code>disableResolveProxy()</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The static method 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.DefaultInterpreterContextFactory.createInterpreterContext(...)</code> now requires a 
+				<code>Map&lt;String, VariableType&gt;</code> for the accessible variables instead of a 
+				<code>Map&lt;String, String&gt;</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The methods 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getVariables()</code>  and 
+				<code>org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionQuery.getAvailableVariables()</code> are now returning a map containing 
+				<code>VariableType</code> instances instead of encoded Strings.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterStatus.getTargetTypes()</code> no longer returns a list of encoded Strings but a 
+				<code>VariableType</code> instance instead.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> The method 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getTargetTypes()</code> has been deprecated in favor of 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getTargetType()</code> which returns a 
+				<code>VariableType</code> instance instead of encoded Strings.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.ui">Changes in 
+			<code>org.eclipse.sirius.common.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Classes from 
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.quickoutline</code> packages are available in API to allow editor to provide quick outline feature easily.
+			</li>
+			<li><span class="label label-success">Added</span> The methods 
+				<code>displaySyncExec(Runnable)</code> , 
+				<code>displayAsyncExec(Runnable)</code> and 
+				<code>synchronizeWithUIThread()</code> have been added in class 
+				<code>org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil</code> to encapsulate accesses to the current 
+				<code>Display</code> instance.
+			</li>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provide UI functionalities have been moved to 
+				<code>org.eclipse.sirius.common.ui.ext</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius4">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper.findContainerForAddedRepresentation(DAnalysis, DRepresentation)</code> has been added to return a 
+				<code>DRepresentationContainer</code> from the 
+				<code>DAnalysis</code> parameter and the added 
+				<code>DRepresentation</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.migration.IMigrationParticipant.updateCreatedObject(EObject newObject, String loadedVersion)</code> has been added to update object values in VSM before loading this objects from XML file.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener.disable()</code> has been added to disable the next refresh attempt in the current precommit loop iteration.
+			</li>
+			<li><span class="label label-success">Added</span> The new constant 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.ENVIRONMENT_URI_SCHEME</code> declares environment URI scheme.
+			</li>
+			<li><span class="label label-success">Added</span> The new constant 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.VIEWPOINT_ENVIRONMENT_RESOURCE_URI</code> declares 
+				<code>environment:/viewpoint</code> resource URI.
+			</li>
+			<li><span class="label label-success">Added</span> The new constant 
+				<code>org.eclipse.sirius.viewpoint.description.util.DescriptionResourceImpl.OPTION_SIRIUS_USE_URI_FRAGMENT_AS_ID</code> added to define a option to enable the use of a id map for odesign resource, id being uri&#8217;s fragment. 
+			</li>
+			<li><span class="label label-success">Added</span> The query 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery</code> has now a new constructor with an additional parameter, ECrossReferenceAdapter. This can be usefull if there is many calls to inverse references methods for the same Session. This avoids to get the semantic cross referencer from the EObject each time. This query also proposes a new method 
+				<code>getInverseReferences(Set&lt;EReference&gt;)</code>.
+			</li>
+			<li><span class="label label-success">Added</span> There is a new capability on Dialect. This capability is to refresh only impacted elements concerned by a list of notifications. It is used, for example, to refresh the opened representations when the user chooses manual refresh mode. Each dialect that want to offer this capability must implement 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.refreshImpactedElements(DRepresentation, Collection&lt;Notification&gt;, IProgressMonitor)</code>. A default implementation that does nothing is done in 
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices</code>.
+			</li>
+			<li><span class="label label-success">Added</span> A new method has been added in the query 
+				<code>org.eclipse.sirius.business.api.query.DAnalysisQuery</code> named 
+				<code>getMainModels()</code>. This method returns a Set of the main model and the other non controlled models.
+			</li>
+			<li><span class="label label-success">Added</span> A new method has been added in 
+				<code>org.eclipse.sirius.viewpoint.DAnalysis</code> named 
+				<code>getSemanticResources()</code>. This method returns a list of 
+				<code>org.eclipse.sirius.business.api.resource.ResourceDescriptor</code> which is a descriptor of the semantic resource.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.RGBValues</code> has been changed from an 
+				<code>EClass</code> to an 
+				<code>EDataType</code>, it is not an 
+				<code>EObject</code> anymore.
+			</li>
+			<li><span class="label label-success">Added</span> The API 
+				<code>org.eclipse.sirius.business.api.metamodel.helper.FontFormatHelper</code> has been added. It helps to update label format multi valued features.
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.business.api.session.SessionListener.SEMANTIC_CHANGE</code> is no more send to 
+				<code>SessionListener</code> and 
+				<code>SessionManagerListener</code> listeners on save when a semantic resource is saved. Use a 
+				<code>ResourceSyncClient</code> listener on 
+				<code>ResourceSetSync</code> to have know if a semantic resource is saved.
+			</li>
+			<li><span class="label label-info">Modified</span> The default constructor has been changed in 
+				<code>org.eclipse.sirius.tools.api.command.semantic.RemoveSemanticResourceCommand</code>.
+				<ul>
+					<li>The boolean value 
+						<code>removeReferencingResources</code> has been added to indicate if the referencing resources are also to remove.
+					</li>
+					<li>The boolean value 
+						<code>removeFromControlledResources</code> has been removed because controlled resources are managed internally.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> The boolean value 
+				<code>removeReferencingResources</code> has been added in 
+				<code>org.eclipse.sirius.business.api.session.Session.removeSemanticResource</code> method to indicate if the referencing resources are also to remove.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>getModels()</code> method in 
+				<code>org.eclipse.sirius.viewpoint.DAnalysis</code> returns a non-modifiable list. Use 
+				<code>getSemanticResources()</code> instead.
+			</li>
+			<li><span class="label label-info">Moved</span> The 
+				<code>isBbocked()</code> and 
+				<code>setBlocked()</code> methods on the 
+				<code>org.eclipse.sirius.viewpoint.DAnalysisSessionEObject</code> EClass have been removed, as they were not actually used in the internal code.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.business.api.helper.task.ICommandTask.undo()/redo()</code> methods are deprecated because they are useless since undo/redo is managed by EMF Transaction.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.tools.api.command.IUndoableCommand</code> interface are deprecated because it is useless since undo/redo is managed by EMF Transaction.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.business.api.helper.task.TaskExecutor.undo()/redo()</code> methods are deprecated because they are useless since undo/redo is managed by EMF Transaction.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.business.api.session.Session.createSemanticResource()</code> method has been removed. Use 
+				<code>Session.addSemanticResource()</code> instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>ExtendedPackage</code> 
+				<code>EDataType</code> which was defined in the 
+				<code>http://www.eclipse.org/sirius/1.1.0</code> package was not actually used anywhere and has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>DView</code> methods 
+				<code>getAllRepresentations()</code>, 
+				<code>getReferencedRepresentations()</code> and 
+				<code>getHiddenRepresentations()</code> have been removed: 
+				<code>getReferencedRepresentations()</code> and 
+				<code>getHiddenRepresentations()</code>  were never actually used, making 
+				<code>getAllRepresentations()</code> strictly equivalent to 
+				<code>getOwnedRepresentations()</code>. Code that used 
+				<code>getAllRepresentations()</code> can simply use 
+				<code>getOwnedRepresentations()</code> instead. 
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DSourceFileLink</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DNavigable</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DNavigationLink</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DValidable</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The enum 
+				<code>org.eclipse.sirius.viewpoint.NavigationTargetType</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DLabelled</code> has been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The API 
+				<code>org.eclipse.sirius.viewpoint.DContainer</code> has been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui5">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.completeToolTipText(String, EObject, EStructuralFeature)</code> has been added to customize the tooltip displayed in the VSM editor by using the feature of the current object. The old method 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.completeToolTipText(String, EObject)</code> has been deprecated.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.ui.tools.api.properties.SiriusExtensiblePropertySource</code> has been added. It allows developers to make their properties views CellEditor customizable by using the new extension point 
+				<code>org.eclipse.sirius.ui.siriuspropertiescelleditor</code>
+			</li>
+			<li><span class="label label-success">Added</span> The interface 
+				<code>org.eclipse.sirius.ext.emf.ui.ICellEditorProvider</code> has been added to allow clients to provide their own 
+				<code>CellEditor</code> - in the Sirius semantic properties views &#8211; through the new extension point 
+				<code>org.eclipse.sirius.ui.siriuspropertiescelleditor</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession.detachEditor(DialectEditor, boolean)</code> has been added to choose whether we should revert the user changes when detaching the editor.
+			</li>
+			<li><span class="label label-success">Added</span> A 
+				<code>org.eclipse.sirius.ui.tools.api.views.LockDecorationUpdater</code> is now available to add it on a 
+				<code>org.eclipse.ui.navigator.CommonNavigator</code> to be refreshed when notifications are send to 
+				<code>org.eclipse.sirius.ecore.extender.business.api.permission.IAuthorityListener</code>. 
+			</li>
+			<li><span class="label label-success">Added</span> A new job 
+				<code>org.eclipse.sirius.ui.tools.api.views.RefreshLabelImageJob</code> has been added to refresh the icon of specified elements on a 
+				<code>org.eclipse.ui.navigator.CommonNavigator</code>.
+			</li>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provide UI functionalities have been moved to 
+				<code>org.eclipse.sirius.ui.ext</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ecore.extender2">Changes in 
+			<code>org.eclipse.sirius.ecore.extender</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor.eRemoveInverseCrossReferences()</code> has been changed to return the list of changed objects by the inverse cross references removal.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.IMetamodelExtender.eRemoveInverseCrossReferences()</code> has been changed to return the list of changed objects by the inverse cross references removal.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.CompositeMetamodelExtender.eRemoveInverseCrossReferences()</code> has been changed to return the list of changed objects by the inverse cross references removal.
+			</li>
+			<li><span class="label label-danger">Removed</span> The exception 
+				<code>org.eclipse.sirius.ecore.extender.IllegalURIException</code> has been removed. It was not actually thrown anywhere in the code.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.editor2">Changes in 
+			<code>org.eclipse.sirius.editor</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The static method 
+				<code>org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider.bindPluginsCompletionProcessors(AbstractPropertySection, Text)</code> has been added. This method is very similar to 
+				<code>org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider.bindCompletionProcessor(AbstractPropertySection, Text)</code>, the difference is that it binds the completion processors available in plugins to the text.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram3">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.diagram.tools.api.command.ChangeLayerActivationCommand</code> has been added. This command was previously internal.
+			</li>
+			<li><span class="label label-success">Added</span> The new constant 
+				<code>org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil.DIAGRAM_ENVIRONMENT_RESOURCE_URI</code> declares the 
+				<code>environment:/diagram</code> resource URI.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider.completeToolTipText(String, EObject, EStructuralFeature)</code> has been added to customize the tooltip displayed in the VSM editor by using the feature of the current object. The old method 
+				<code>org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider.completeToolTipText(String, EObject)</code> has been deprecated.
+			</li>
+			<li><span class="label label-success">Added</span> New methods have been added to 
+				<code>org.eclipse.sirius.diagram.business.api.query.ContainerMappingQuery</code> to test the children presentation mode of the current 
+				<code>ContainerMapping</code>: 
+				<code>isVerticalStackContainer()</code>, 
+				<code>isHorizontalStackContainer()</code>, 
+				<code>isRegionContainer()</code> and 
+				<code>isRegion()</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.business.api.query.AbstractDNodeQuery</code> now requires a 
+				<code>org.eclipse.sirius.common.tools.api.util.RefreshIdsHolder</code> to check for equality in the context of a refresh operation.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>DNodeList.lineWidth</code> attribute has been removed from the metamodel, the corresponding generated elements do not exist anymore:  
+				<code>org.eclipse.sirius.diagram.DNodeList.getLineWidth()</code>,  
+				<code>org.eclipse.sirius.diagram.DNodeList.setLineWidth()</code>,  
+				<code>org.eclipse.sirius.diagram.DiagramPackage.DNODE_LIST__LINE_WIDTH</code>, 
+				<code>org.eclipse.sirius.diagram.DiagramPackage.getDNodeList_LineWidth()</code>, 
+				<code>org.eclipse.sirius.diagram.DiagramPackage.Literals.DNODE_LIST__LINE_WIDTH()</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.diagram.ComputedStyleDescriptionRegistry.cache</code> reference has been removed from the metamodel as it is no more useful, to limit memory consumed by computed 
+				<code>StyleDescription</code> we directly look for them in the 
+				<code>ComputedStyleDescriptionRegistry.computedStyleDescriptions</code> list.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> <span class="label label-info">Modified</span>  The 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ImageFigureWithAlpha</code> interface has been added to identify Figures having the capability to return an alpha value from a coordinate. 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractCachedSVGFigure</code> and 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentImage</code>  now implement this new interface.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator.resetBorderItemMovedState()</code> has been added to allow to reset the state of 
+				<code>borderItemHasMoved</code>. This method must be used carefully only in case where 
+				<code>setConstraint(Rectangle)</code> is called to compute temporary a 
+				<code>getValidLocation(Rectangle, IFigure, Collection, List)</code>, one time with a new value and just after with the old value.
+			</li>
+			<li><span class="label label-success">Added</span> The constant 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath.HIDDEN_LABEL_DECORATOR</code> has been added to represent the path of hidden label decorator used in the outline.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.business.api.provider.DDiagramElementContainerLabelItemProvider</code> has been added to represent container and list labels as virtual nodes in the Show/Hide wizards.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator</code> did not take into account the rectangle size passed to 
+				<code>getValidLocation</code>. To resolve that limitation, several protected methods that took a Point as location now take a Rectangle:
+				<ul>
+					<li>
+						<code>locateOnBorder(Point, int, int, IFigure, Collection&lt;IFigure&gt;, List&lt;IFigure&gt;)</code> now takes a 
+						<code>Rectangle</code> instead a 
+						<code>Point</code>: 
+						<code>locateOnBorder(Rectangle, int, int, IFigure, Collection&lt;IFigure&gt;, List&lt;IFigure&gt;)</code>;
+					</li>
+					<li>
+						<code>locateOnSouthBorder</code>, 
+						<code>locateOnNorthBorder</code>, 
+						<code>locateOnWestBorder</code> and 
+						<code>locateOnEastBorder</code> signatures is now 
+						<code>(Rectangle, int, IFigure, Collection&lt;IFigure&gt;, List&lt;IFigure&gt;)</code>;
+					</li>
+					<li>
+						<code>locateOnParent</code> signature is now 
+						<code>locateOnParent(Rectangle, int, IFigure)</code>;
+					</li>
+					<li>
+						<code>conflicts</code> signature is now 
+						<code>conflicts(Rectangle, IFigure, Collection&lt;IFigure&gt;, List&lt;IFigure&gt;)</code>.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Moved</span> The constant 
+				<code>DiagramImagesPath.LINK_TO_VIEWPOINT_IMG</code> has been moved to 
+				<code>org.eclipse.sirius.ui.tools.api.image.ImagesPath.LINK_TO_VIEWPOINT_IMG</code>. This is more coherent because the corresponding image is in core 
+				<code>org.eclipse.sirius.common.ui</code> plugin.
+			</li>
+			<li><span class="label label-info">Moved</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.PinHelper</code> moved from 
+				<code>org.eclipse.sirius.diagram.ui</code> plugin to 
+				<code>org.eclipse.sirius.diagram</code> plugin, i.e. 
+				<code>org.eclipse.sirius.diagram.tools.api.layout.PinHelper</code> with 
+				<code>PinHelper.IsPinned(IDiagramElementEditPart)</code> removed in favor of 
+				<code>PinHelper.IsPinned(DDiagramElement)</code>.
+			</li>
+			<li><span class="label label-info">Moved</span> External java actions declared as 
+				<code>org.eclipse.sirius.diagram.ui.tools.internal.actions.pinning.pinElementsActionId</code> and 
+				<code>org.eclipse.sirius.diagram.ui.tools.internal.actions.pinning.unpinElementsActionId</code> are now declared as 
+				<code>org.eclipse.sirius.diagram.tools.internal.actions.pinning.pinElementsActionId</code> and 
+				<code>org.eclipse.sirius.diagram.tools.internal.actions.pinning.unpinElementsActionId</code> in 
+				<code>org.eclipse.sirius.diagram</code> plugin.
+			</li>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provides UI functionalities have been moved to 
+				<code>org.eclipse.sirius.diagram.ui.ext</code>.
+			</li>
+			<li><span class="label label-warning">Deprecated</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.util.GMFNotationHelper.findGMFDiagram()</code> became deprecated in favor of 
+				<code>DiagramCreationUtil.findAssociatedGMFDiagram()/getAssociatedGMFDiagram()</code>
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramEdgeEditPart.getEAdapterStrokeColor</code> method has been removed as the corresponding adapter was uneffective and is no more used and installed on the edge edit parts.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.InvisibleResizableCompartmentFigure</code> class has been removed, use a 
+				<code>org.eclipse.gmf.runtime.diagram.ui.figures.ShapeCompartmentFigure</code> with a 
+				<code>org.eclipse.draw2d.MarginBorder</code> or a null border instead.
+			</li>
+			<li><span class="label label-danger">Removed</span>  The method 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramElementEditPart.getEAdapterSemanticElements()</code> has been removed (and all its implementations). For manual refresh, this adapter has been replaced with the 
+				<code>RefreshEditorsPrecommitListener</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span>   The method 
+				<code>org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorUtil.findView()</code> has been deleted in flavor of 
+				<code>SiriusGMFHelper.getGmfView()</code>. If you was using 
+				<code>SiriusDiagramEditorUtil.findView()</code> with a semantic element in parameter, retrieve before the corresponding 
+				<code>DDiagram</code> or 
+				<code>DDiagramElement</code> and use 
+				<code>SiriusGMFHelper.getGmfView(DSemanticDecorator)</code> from this last to get the corresponding GMF View. To get a 
+				<code>DDiagram</code> or 
+				<code>DDiagramElement</code> from a semantic element, you can use 
+				<code>EObjectQuery.getInverseReferences(EReference)</code> API, see 
+				<code>org.eclipse.sirius.diagram.ui.business.api.view.ValidateAction.getDSemanticDecorator()</code> for an example. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getColumn()</code> have been removed because they are not useful, 
+				<code>TableHelper.getColumn(DLine, int)</code> can be replaced by 
+				<code>DTable.getColumns().get(int)</code> and 
+				<code>TableHelper.getColumn(DTable, String)</code> should not be used as we can have several columns with a same featureName.
+			</li>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getEClassifier(DLine, int)</code> has been removed because it is not useful, use 
+				<code>TableHelper.getEClassifier(line, column)</code> instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getTableElement(DTableElementStyle)</code> has been removed because it is not useful, 
+				<code>DTableElementStyle.eContainer()</code> can be used instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getCell(DCellStyle)</code> has been removed because they are not useful, use 
+				<code>DCellStyle.eContainer</code> instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getCell(RGBValues)</code> has been removed, 
+				<code>RGBValues</code> is not an 
+				<code>EObject</code> anymore. The method was looking in the eContainer hierarchy of a an instance of 
+				<code>RGBValues</code> to find the parent 
+				<code>DCell</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getCreateCellTool(DCell)</code> has been removed because it is not useful, use 
+				<code>TableHelper.getCreateCellTool(line, column)</code> instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The method 
+				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getCellDefaultForegroundColor()</code> has been removed because it is not useful, use 
+				<code>EnvironmentSystemColorFactory.getDefault().getSystemColorDescription("gray")</code> instead.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>DTableElementUpdater</code> has been removed from metamodel. It is now unnecessary. This interface was here to provide operations to activate and deactivate the listeners, that have been replaced by the 
+				<code>RefreshImpactedElementsCommand</code> launched from 
+				<code>RefreshEditorsPrecommitListener</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table.ui">Changes in 
+			<code>org.eclipse.sirius.table.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provide UI functionalities have been moved to 
+				<code>org.eclipse.sirius.table.ui.ext</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree">Changes in 
+			<code>org.eclipse.sirius.tree</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.refreshContent(boolean fullRefresh)</code> has been added to allow full refresh from a specified 
+				<code>DTreeItem</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The EMF Command 
+				<code>org.eclipse.sirius.tree.business.api.command.DTreeItemLocalRefreshCommand</code> has been added to call 
+				<code>DTreeItemUserInteraction.refreshContent(boolean fullRefresh)</code> in an EMF Command. 
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.expand(IProgressMonitor)</code> has been added similar to 
+				<code>DTreeItemUserInteraction.expand()</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> expanding.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.collapse(IProgressMonitor)</code> has been added similar to 
+				<code>DTreeItemUserInteraction.collapse()</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> collapsing.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.expandAll(IProgressMonitor)</code> has been added similar to 
+				<code>DTreeItemUserInteraction.expandAll()</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> expanding.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.refreshContent(boolean, IProgressMonitor)</code> has been added similar to 
+				<code>DTreeItemUserInteraction.refreshContent(boolean)</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> expanding.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>DTreeUserInteraction.expand(IProgressMonitor)</code> has been added similar to 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.expand()</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> expanding.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>DTreeUserInteraction.expandAll(IProgressMonitor)</code> has been added similar to 
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.expandAll()</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on 
+				<code>DTreeItem</code> expanding.
+			</li>
+			<li><span class="label label-info">Modified</span> The constructor 
+				<code>org.eclipse.sirius.tree.business.api.command.DTreeItemExpansionChangeCommand.DTreeItemExpansionChangeCommand(GlobalContext, TransactionalEditingDomain, DTreeItem, IProgressMonitor, boolean)</code> has an additional 
+				<code>IProgressMonitor</code> parameter.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>DTreeElementUpdater</code> has been removed from metamodel. It is now unnecessary. This interface was here to provide operations to activate and deactivate the listeners, that have been replaced by the 
+				<code>RefreshImpactedElementsCommand</code> launched from 
+				<code>RefreshEditorsPrecommitListener</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui">Changes in 
+			<code>org.eclipse.sirius.tree.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.update(final TransactionalEditingDomain domain, final Notification notification)</code> has been replaced by 
+				<code>org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.update(ResourceSetChangeEvent)</code> to allow to update only once per ResourceSetChangeEvent and let subclasses make additional filtering on the notifications.
+			</li>
+			<li><span class="label label-info">Modified</span> The return type of the method 
+				<code>org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.getEventListener()</code> has been changed from 
+				<code>DemultiplexingListener</code> to 
+				<code>ResourceSetListener</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The type of 
+				<code>org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.eventListener</code> has been changed from 
+				<code>DemultiplexingListener</code> to 
+				<code>ResourceSetListener</code>.
+			</li>
+			<li><span class="label label-info">Moved</span> Extensions in 
+				<code>plugin.xml</code> that provide UI functionalities have been moved to 
+				<code>org.eclipse.sirius.tree.ui.ext</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.synchronizer2">Changes in 
+			<code>org.eclipse.sirius.synchronizer</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span>  The method 
+				<code>org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean, IProgressMonitor)</code> has been added similar to 
+				<code>org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean)</code> but taking a 
+				<code>IProgressMonitor</code> in parameter to have progression on synchronization.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.synchronizer.SemanticPartitionInvalidator.hasFastResult(EObject, SemanticPartition, CreatedOutput)</code> now takes a 
+				<code>CreatedOutput</code> as additional parameter element to allow to have the parent output element.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.synchronizer.SemanticPartition.evaluate(EObject, CreatedOutput)</code> now takes a 
+				<code>CreatedOutput</code> as additional parameter. This 
+				<code>CreatedOutput</code> represents the output model element which will become the parent of the elements created from the evaluation result.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.swt">Changes in 
+			<code>org.eclipse.sirius.ext.swt</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Moved</span> The 
+				<code>org.eclipse.sirius.ext.swt.ImageFileFormat</code> class has been moved in 
+				<code>org.eclipse.sirius.common.tools.api.resource</code> (in the 
+				<code>org.eclipse.sirius.common</code> plugin).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.e3.ui">Changes in 
+			<code>org.eclipse.sirius.ext.e3.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The classes 
+				<code>org.eclipse.sirius.ext.e3.ui.dialogs.FilteredTree</code> and 
+				<code>org.eclipse.sirius.ext.e3.ui.dialogs.PatternFilter</code> have been added in order to have the latest functionalites of 
+				<code>org.eclipse.ui.dialogs.FilteredTree</code> with Eclipse Juno.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.emf.tx">Changes in 
+			<code>org.eclipse.sirius.ext.emf.tx</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.ext.emf.tx.DelegatingValidateEditSupport</code> has been added to be able to have a 
+				<code>ValidateEditSupport</code> which delegate to an existing 
+				<code>ValidateEditSupport</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.eef.adapters">Changes in 
+			<code>org.eclipse.sirius.eef.adapters</code>
+		</h4>
+		<p>This plug-in now requires the version 1.5.0 of 
+			<code>org.eclipse.emf.eef.runtime</code> bundle.
+		</p>
+		<ul>
+			<li><span class="label label-success">Added</span>  The new class 
+				<code>org.eclipse.sirius.eef.components.SiriusAwarePropertiesEditingComponent</code> can be used as root class of the generated EEF components to greatly improve performances when using both EEF properties views with Sirius representations. Refer to 
+				<em>Using the Extended Editing Framework with Sirius</em> documentation for details.
+			</li>
+			<li><span class="label label-info">Modified</span>The following packages are set to 
+				<code>x-internal:=true</code>
+				<ul>
+					<li>
+						<code>org.eclipse.sirius.eef.actions</code>
+					</li>
+					<li>
+						<code>org.eclipse.sirius.eef.adapters</code>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support4">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)</code> has been added to change the read only status of the given resources.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<code>warnings</code> member variable has been added to 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase</code> to allow the recording of warning logs. Methods 
+				<code>doesAWarningOccurs()</code>, 
+				<code>clearWarnings()</code>, 
+				<code>setWarningCatchActive(boolean)</code>, 
+				<code>isWarningCatchActive()</code> and 
+				<code>getWarningLoggersMessage()</code> have also been added to manage the 
+				<code>warnings</code> member variable in the same way as the existing 
+				<code>errors</code> member variable.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase.loadModeler(URI, EditingDomain)</code> has been added to load a VSM resource and make the 
+				<code>Viewpoints</code> it defines accessible via the 
+				<code>SiriusTestsCase.viewpoints</code> field.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.tests.support.api.ImageComposer</code> has been added to the test API to do assertions on image decorators.
+			</li>
+			<li><span class="label label-success">Added</span> The enum 
+				<code>SiriusTestCase.ResourceURIType</code> and the method 
+				<code>SiriusTestCase.toURI(final String, ResourceURIType)</code> have been added to allow choosing the type of URI created (
+				<code>platform:</code> or 
+				<code>plugin:</code>).
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>SiriusTestCase.genericSetUp(List&lt;URI&gt;, List&lt;URI&gt;, boolean, URI)</code> method has been set to protected so that it can be called from concrete test cases. This method allows initializing session.
+			</li>
+			<li><span class="label label-info">Moved</span> The class 
+				<code>TreeItemLabelFontFormatQuery</code> was moved into 
+				<code>org.eclipse.sirius.tests.support.api</code> (from 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.widget</code>), as it can be used in non-SWTBot tests..
+			</li>
+			<li><span class="label label-warning">Deprecated</span> The method 
+				<code>org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase.setReadOnly(IFile)</code> has been deprecated, 
+				<code>org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)</code> can be used instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support4">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The 
+				<code>warnings</code> member variable has been added to 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase</code> to allow the recording of warning logs. Methods 
+				<code>doesAWarningOccurs()</code>, 
+				<code>setWarningCatchActive(boolean)</code>, 
+				<code>isWarningCatchActive()</code> and 
+				<code>getWarningLoggersMessage()</code> have also been added to manage the 
+				<code>warnings</code> member variable in the same way as the existing 
+				<code>errors</code> member variable.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.getDRepresentation()</code> has been added to return the 
+				<code>org.eclipse.sirius.viewpoint.DRepresentation</code> instance available in the diagram editor.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase.getSectionButton()</code>  now only takes the button&#8217;s tooltip instead of a numerical position index and the tooltip.
+			</li>
+			<li><span class="label label-info">Modified</span> The methods 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.selectPropertyTabItem(String)</code> now returns a 
+				<code>boolean</code> that is true when the property tab item is found, false otherwise.
+			</li>
+			<li><span class="label label-info">Moved</span> The class 
+				<code>TreeItemLabelFontFormatQuery</code> was moved into 
+				<code>org.eclipse.sirius.tests.support.api</code> (from 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.widget</code>), as it can be used in non-SWTBot tests..
+			</li>
+			<li><span class="label label-warning">Deprecated</span> The methods 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.business.UIPerspective.deleteProject(UIProject)</code> and 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.business.UIPerspective.deleteProject(String)</code> have been deprecated, 
+				<code>org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)</code> can be used instead.
+			</li>
+		</ul>
+		<h4 id="Newplugins">New plug-ins</h4>
+		<p>The following UI plug-ins has been added:</p>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.ext</code>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.ui.ext</code>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.ext</code>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.table.ui.ext</code>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.tree.ui.ext</code>
+			</li>
+		</ul>
+		<p>These plug-ins own the extension definitions related to perspective, views, newWizard, menus, contextual menus, editors and preference pages that were previously in 
+			<code>org.eclipse.sirius.xxx.ui</code> plug-ins.
+			<br/>Now, downstream projects can define features that do not contain 
+			<code>org.eclipse.sirius.xxx.ui.ext</code>, allowing them not have all that functionalities they may not want.
+		</p>
+		<h2 id="sirius2.0.0">Changes in Sirius 2.0.0</h2>
+		<h3 id="UserVisibleChanges7">User-Visible Changes</h3>
+		<ul>
+			<li>It is now possible to select element that intersects the selection rectangle and not that is completely contained by the selection rectangle. This new behavior is enabled when user selects elements from right to left. The normal mode (previous mode) remains when the user selects elements from left to right.</li>
+			<li>The edges appearance is now kept, as much as possible, when one of its extremity is moved. A move of an extremity should move only the closest segment of the edge.</li>
+			<li>The edges appearance is kept as much as possible when a node (container or not) is moved. A move of a node now impacts only the closest segment of the linked edges.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/moveNode-edgeImpact-changedBehavior.gif"/>
+		</p>
+		<ul>
+			<li>When a node, container or not, is resized to the left, upwards, or both, the location of its children (elements inside a container and border nodes) is not changed. It is possible to retrieve the previous behavior by pressing the F3 function key during the resize.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/containerResize-changedBehavior.gif"/>
+		</p>
+		<ul>
+			<li>The &#8220;snap to shapes&#8221; is now enabled by default (see  
+				<em>Sirius &gt; Sirius Diagram &gt; Rulers and Grid</em> preference page). This is true only for new diagrams. The existing diagrams are not impacted.
+			</li>
+			<li>The &#8220;Navigate&#8221; top-level contextual menu entry with mixed actions for creating new representations and opening existing ones has been changed by two top-level menus:
+				<ul>
+					<li>One named &#8220;New&#8221;, which lists only the available actions to create new representations on the selected element.</li>
+					<li>One named &#8220;Open&#8221;, which lists only the existing representations on the selected element. </li>
+				</ul>
+			</li>
+			<li>When a shape is resized (no matter the direction), the edge(s) connection location (toward or from this one) is kept. Before that, edges connections moved according to the ratio of the resizing.</li>
+		</ul>
+		<p>Example with this initial state before resizing:
+			<br/>
+			<img border="0" src="images/shapeResize1.png"/>
+			<br/>Result after resizing without this feature (the edges have moved):
+			<br/>
+			<img border="0" src="images/shapeResize2.png"/>
+			<br/>Result after resizing with this feature (the edges keep the same location):
+			<br/>
+			<img border="0" src="images/shapeResize3.png"/>
+		</p>
+		<ul>
+			<li>There is now the possibility to distribute the selected shapes (see 
+				<a href="user/diagrams/Diagrams.html#distribute">Sirius User Manual/Diagrams/Features Overview/Distribute elements</a> for more details):
+				<ul>
+					<li>Distribute gaps horizontally</li>
+					<li>Distribute centers horizontally</li>
+					<li>Distribute gaps vertically</li>
+					<li>Distribute centers vertically</li>
+				</ul>
+			</li>
+			<li>The end user can now remove all bend-points between the two edge ends. This action is available on edge context menu &#8220;Remove Bend-points&#8221; or by using the shortcut &#8220;Ctrl&#8221; + &#8220;Shift&#8221; + &#8220;-&#8221;.</li>
+			<li>Reconnection of an edge will only now move the minimum necessary bendpoints instead of reseting it to default.</li>
+			<li>A new action has been added to reset the diagram (or container) origin: the diagram (or container) bounds (the rectangle formed by the highest, the leftmost, the lowest and the rightmost children elements) can have a negative origin or can be shifted toward the bottom-right with a blank zone at the top-left. This action aims to move all diagram (or container) elements so that the it retrieves its origin while keeping elements layout.</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges5">Specifier-Visible Changes</h3>
+		<ul>
+			<li>The specifier can now choose to hold the edge ends toward the center of the source, target or both. New fields within the &#8220;advance&#8221; tab of EdgeStyle description have been added to choose for which source or target mappings an edge should be centered. See 
+				<a href="specifier/diagrams/Diagrams.html#edges_styles">Edges Styles &gt; Edge Centering</a> in the specifier manual for more details.
+			</li>
+			<li>When creating a new Viewpoint Specification Project using the supplied wizard: 
+				<em>New &gt; Viewpoint Specification Project</em>, the VSM name is now given according to the project name. If the project name is suffixed with &#8220;design&#8221;, the VSM name is provided by the last word before this suffix. Otherwise, the VSM name is given by the last word of the project name.
+			</li>
+			<li>&#8220;Lozenge&#8221; is replaced by &#8220;Diamond&#8221; in diagram style.</li>
+		</ul>
+		<h3 id="APIChanges">API Changes</h3>
+		<h4 id="Changesinorg.eclipse.sirius5">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.session.ViewpointSelector</code> class has been added, with easy-to-use methods to select/deselect viewpoint in a given session.
+			</li>
+			<li>The 
+				<code>VIEWPOINT_REGISTRY_INITIAL_SIZE</code> preference and 
+				<code>VIEWPOINT_REGISTRY_INITIAL_SIZE_DEFAULT_VALUE</code> default value has been removed from 
+				<code>org.eclipse.sirius.tools.api.preferences.DCorePreferences</code>.
+			</li>
+			<li>The method 
+				<code>org.eclipse.sirius.business.api.query.DRepresentationQuery.isDanglingRepresentation()</code> has been added to introduce the possibility to check if a representation is a dangling representation, ie. if its a DSemanticDecorator, its target is null or does not belong to a session.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ecore.extender.business.api.permission.exception.LockedInstanceException</code> now can take several EObjects in constructor and a method 
+				<code>LockedInstanceException.getLockedElements()</code> has been added to get all EObjects put in constructor.
+			</li>
+		</ul>
+		<p>
+			<code>org.eclipse.sirius.tools.api.command.InvalidPermissionCommand</code> now can take several EObjects in constructor to throw a 
+			<code>LockedInstanceException</code> with several EObjects.
+		</p>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask</code> class has been renamed into 
+				<code>DeleteEObjectTask</code>.
+			</li>
+			<li>The interface 
+				<code>org.eclipse.sirius.tools.api.command.listener.IChangeListener</code> and all classes related to this mechanism (
+				<code>ChangeListenerFactory</code>, 
+				<code>TriggerOperation</code>) have been removed as this mechanism proves to be inefficient. It can be replaced by a pre/post commit listener or a 
+				<code>org.eclipse.sirius.business.api.session.ModelChangeTrigger</code>
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.tools.api.ui.IExternalAction2</code> interface has been removed. It was created to disable some 
+				<code>IChangeListener</code> when the action indicates it will not delete elements.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.refresh(DRepresentation, boolean, IProgressMonitor</code> has been added to specify if we want partial refresh or not. By default partial refresh is done. full refresh is only implements for tree dialect.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices.refresh(DRepresentation, IProgressMonitor)</code> has been added to call by default 
+				<code>DialectServices.refresh(DRepresentation, false, IProgressMonitor)</code> to do a partial refresh.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.dialect.command.RefreshRepresentationsCommand.RefreshRepresentationsCommand(TransactionalEditingDomain, boolean, IProgressMonitor, DRepresentation...)</code> and 
+				<code>RefreshRepresentationsCommand(TransactionalEditingDomain, boolean, IProgressMonitor, Collection&lt;DRepresentation&gt;)</code> constructors has been added to specify a partial refresh or a full refresh.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.dialect.DRepresentationNotificationFilter</code> has been added to have
+			</li>
+		</ul>a common precommit/postcommit notifications filter to tree/table dialect.
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.tools.api.profiler.SiriusTasksKey.CHANGE_SWT_LINE_COLAPSE_STATE_KEY</code> constant has been deprecated in favor of 
+				<code>SiriusTasksKey.CHANGE_SWT_LINE_COLLAPSE_STATE_KEY</code> to fix a typo.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.color.AbstractColorUpdater.DEFAULT_RED_VALUE/DEFAULT_GREEN_VALUE/DEFAULT_BLUE_VALUE</code> constants have been added to have access to default 
+				<code>RGBValues</code>'s values. This is used during refresh when there isn&#8217;t any 
+				<code>ColorDescription</code>, for example in tree dialect where background color definition is optional.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.tool.ToolFilterDescriptionListener.ToolFilterDescriptionListener()</code> constructor now takes an 
+				<code>IInterpreter</code> as additional parameter to capture the current interpreter and avoid calls to the 
+				<code>IInterpreterRegistry</code> for each evaluation of the tool filter expressions.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.query.AirdResourceQuery.getAirDCrossReferenceAdapter()</code> and 
+				<code>org.eclipse.sirius.business.internal.resource.AirdCrossReferencerAdapter</code> have been removed. The adapter was here to customize GMF&#8217;s own 
+				<code>org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter</code>. However considering the way Sirius uses GMF, this adapter is not needed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui6">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li>In 
+				<code>org.eclipse.sirius.ui.business.api.session.UserSession</code>, the methods 
+				<code>selectSirius()</code>, 
+				<code>selectOnlySirius()</code> and 
+				<code>findSiriusByName()</code> have been renamed into 
+				<code>selectViewpoint()</code>, 
+				<code>selectOnlyViewpoint()</code> and 
+				<code>findViewpointByName()</code> to correct a wrong rebranding.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common4">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li>The method 
+				<code>org.eclipse.sirius.common.tools.api.resource.ResourceSetSync.getResourceSetSync(TransactionalEditingDomain)</code> has been added to look for a 
+				<code>ResourceSetSync</code> without creating a new one if no synchronizer currently exists.
+			</li>
+			<li>The class 
+				<code>org.eclipse.sirius.common.tools.api.util.SmartAdapter</code> has been removed as this mechanism proves to be inefficient. The only user of this mechanism was the 
+				<code>org.eclipse.sirius.tools.api.command.listener.IChangeListener</code> which has also been removed.
+			</li>
+			<li>The class 
+				<code>org.eclipse.sirius.common.tools.api.ecore.WorkspaceEPackageRegistry</code> has been moved to the 
+				<code>org.eclipse.sirius.editor</code> plugin. 
+				<code>org.eclipse.sirius.common.tools.DslCommonPlugin.getWorkspaceEPackageRegistry</code> has been removed. The same method has been added in 
+				<code>org.eclipse.sirius.editor.editorPlugin.SiriusEditorPlugin</code>.
+			</li>
+			<li>A new class 
+				<code>org.eclipse.sirius.common.tools.api.resource.ResourceMigrationMarker</code> has been introduced for adopters. This marker can be attached to a Resource in order to indicate that some automatic migration 
+				<strong>might</strong> have change the structure of the model during the loading (with no isModified flag). Sirius will then use this information to consider saving the file even if there is no logical change. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.ui2">Changes in 
+			<code>org.eclipse.sirius.common.ui</code>
+		</h4>
+		<ul>
+			<li>The method 
+				<code>org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil.addSelectionListener(IWorkbenchPart, ISelectionListener)</code> has been added to register a new selection listener to the site for the workbench part. This method looks for a 
+				<code>ISelectionService</code> by calling 
+				<code>IServiceLocator.getService()</code> on the site.
+			</li>
+			<li>The method 
+				<code>org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil.removeSelectionListener(IWorkbenchPart, ISelectionListener)</code> has been added to unregister an existing selection listener from site for the workbench part. This method looks for a 
+				<code>ISelectionService</code> by calling 
+				<code>IServiceLocator.getService()</code> on the site.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram4">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.diagram.ui.business.api.view.refresh</code> package and all its content has been move into the 
+				<code>org.eclipse.sirius.diagram</code> plug-in, under the name 
+				<code>org.eclipse.sirius.diagram.business.api.view.refresh</code>.
+			</li>
+			<li>A new extension point 
+				<code>org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride</code> has been defined. Its only intended implementer is the 
+				<code>org.eclipse.sirius.diagram.ui</code> plug-in. It is used by the diagram dialect&#8217;s core to delegate to the UI plug-in the canonical synchronizer logic, which depends on the UI.
+			</li>
+			<li>In 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.CanonicalSynchronizer</code>, a new method 
+				<code>postCreation()</code> has been added. It is called exactly once, right after a diagram has been created and synchronized the first time.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.description.style.EdgeStyleDescription</code> metamodel class has three more features: 
+				<code>centeredSourceMappings</code>, 
+				<code>centeredTargetMappings</code> and 
+				<code>AlwaysCenter</code>. Those features let the specifier determine for which mappings the edge source/target should be centered or whether the source/target should be systematically centered. The 
+				<code>endsCentering</code> values are restricted by the new 
+				<code>org.eclipse.sirius.diagram.description.CenteringStyle</code> enumeration.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.EdgeStyle</code> metamodel class has now an attribute 
+				<code>centered</code> of type 
+				<code>org.eclipse.sirius.diagram.description.CenteringStyle</code>, to determine whether the edge target or source ends should be centered.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui5">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.diagram.ui.business.api.view.refresh</code> package and all its content has been move into the 
+				<code>org.eclipse.sirius.diagram</code> plug-in, under the name 
+				<code>org.eclipse.sirius.diagram.business.api.view.refresh</code>.  
+			</li>
+			<li>The method 
+				<code>org.eclipse.sirius.diagram.ui.business.internal.query.DNodeContainerQuery.getDefaultDimension()</code> has been added to compute the default size of a DNodeContainer.
+			</li>
+			<li>The parameter 
+				<code>additionalFiguresForConflictDetection</code> has been added to several methods of 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator</code>. This parameter is used in case of simultaneous border nodes moves. This list corresponds to the already known border nodes feedbacks. They are used to detect conflicts with other moved nodes.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ConnectionEditPartQuery</code> now provides two new methods 
+				<code>isEdgeWithRectilinearRoutingStyle()</code> and 
+				<code>isEdgeWithObliqueRoutingStyle()</code> that respectively checks if an edge has a rectilinear routing style or an oblique routing style.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ConnectionQuery</code> now provides two new methods 
+				<code>getAbsoluteBendpointsConstraint()</code> and 
+				<code>getRelativeBendpointsConstraint()</code> that returns an option of list of 
+				<code>Bendpoint</code> of a connection whether they are respectively 
+				<code>AbsoluteBendpoint</code> or 
+				<code>RelatveBendpoint</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.EdgeQuery</code> also provides two new methods 
+				<code>isEdgeWithRectilinearRoutingStyle()</code> and 
+				<code>isEdgeWithObliqueRoutingStyle()</code> that respectively checks if an edge has a rectilinear routing style or an oblique routing style.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.tools.api.requests.DistributeRequest</code>: A new 
+				<code>ChangeBoundsRequest</code> to manage distribution of shapes.
+			</li>
+			<li>A constant 
+				<code>REQ_DISTRIBUTE</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.requests.RequestConstants</code> to identify the new type of request, 
+				<code>DistributeRequest</code>.
+			</li>
+			<li>Constants have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds</code> for the new drop down menu in tabbar and for the four new distribute actions.
+			</li>
+			<li>Constants have been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath</code> for the icon path of the four new distribute actions.
+			</li>
+			<li>A new method has been added in 
+				<code>org.eclipse.sirius.diagram.ui.business.api.view.SiriusLayoutDataManager</code> to retrieve the opposite edge layout data of another edge layout data. An edge layout data stored in the incomingEdgeLayoutDatas ref of its parent data can have an opposite edge layout data in the outgoingEdgeLayoutDatas of the other ends.
+			</li>
+			<li>A Constant 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.requests.RequestConstants.REQ_RESET_ORIGIN</code> has been added to identify requests to get the ResetOrigin command.
+			</li>
+			<li>A new method 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isContainer()</code> has been added to test whether the GMF node visualID corresponds to a ContainerEditPart.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui2">Changes in 
+			<code>org.eclipse.sirius.tree.ui</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.business.api.helper.TreeUIHelper.toContentHTMl()</code> has changed of behavior: refresh of 
+				<code>DTree</code> is now partial, i.e. not done for children of collapsed 
+				<code>DTreeItemContainer</code>. Consequently code calling 
+				<code>TreeUIHelper.toContentHTMl()</code> must do a full refresh if children of collapsed 
+				<code>DTreeItemContainer</code> must be displayed in returned HTML.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.business.api.helper.TreeUIHelper.toTreeDescriptor()</code> same as for 
+				<code>TreeUIHelper.toContentHTMl()</code>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree2">Changes in 
+			<code>org.eclipse.sirius.tree</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.refreshContent(boolean, IProgressMonitor)</code> has been added to specify if we want partial refresh or not.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.business.api.command.DTreeItemExpansionChangeCommand</code> has been added to execute an expansion/collapse of 
+				<code>DTreeItem</code>. On expansion a refresh of children is done.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.synchronizer3">Changes in 
+			<code>org.eclipse.sirius.synchronizer</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.synchronizer.CreatedOutput.synchronizeChildren()</code> has been added to allow doing a partial refresh of tree, i.e. to not refresh children of collapsed tree item.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean)</code> has been added to specify if we want partial refresh or not.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ecore.extender3">Changes in 
+			<code>org.eclipse.sirius.ecore.extender</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.IMetamodelExtender.eRemoveInverseCrossReferences(EObject, ECrossReferenceAdapter, EReferencePredicate)</code> has been added as a way to remove the inverse cross references without removing an 
+				<code>EObject</code> from its container. For example it can be used to avoid the dangling references to an indirectly detached object without removing it from its already detached container and avoid additional REMOVE notifications. The method has been extracted from and is now used by 
+				<code>IMetamodelExtender.eDelete()</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor.eRemoveCrossReferences(EObject, ECrossReferenceAdapter, EReferencePredicate)</code> has been added as a way to remove the inverse cross references without removing an 
+				<code>EObject</code> from its container after a check by the permission authority that all changeable feature to modify can be edited.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.gmf.runtime4">Changes in 
+			<code>org.eclipse.sirius.ext.gmf.runtime</code>
+		</h4>
+		<ul>
+			<li>Several utilities have been added in 
+				<code>org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper</code>:
+				<ul>
+					<li>
+						<code>applyZoomOnPoint(IGraphicalEditPart, Point)</code>: Apply the current zoom (of 
+						<code>IGraphicalEditPart</code>'s diagram) on the 
+						<code>Point</code> and return the 
+						<code>Point</code> for convenience.
+					</li>
+					<li>
+						<code>applyInverseZoomOnPoint(IGraphicalEditPart, Point)</code>: Apply the inverse of the current zoom (of 
+						<code>IGraphicalEditPart</code>'s diagram) on the 
+						<code>Point</code> and return the 
+						<code>Point</code> for convenience.
+					</li>
+					<li>
+						<code>appliedZoomOnRelativePoint(IGraphicalEditPart, Point)</code> is now deprecated. Use 
+						<code>applyZoomOnPoint(IGraphicalEditPart, Point)</code> instead.
+					</li>
+					<li>
+						<code>getAnchorPoint(IGraphicalEditPart parent, Anchor anchor)</code>: Get the 
+						<code>Point</code> (absolute draw2d coordinates) corresponding to this 
+						<code>Anchor</code>.
+					</li>
+					<li>
+						<code>getAnchorPoint(IGraphicalEditPart parent, IdentityAnchor anchor)</code>: Get the 
+						<code>Point</code> (absolute draw2d coordinates) corresponding to this 
+						<code>IdentityAnchor</code>.
+					</li>
+					<li>
+						<code>getIntersection(Point, Point, IGraphicalEditPart, boolean)</code>: Get intersection between a line between lineOrigin and lineTerminus, and the rectangle bounds of the 
+						<code>IGraphicalEditPart</code>. If there are several intersections, the shortest is returned.
+					</li>
+					<li>
+						<code>getAbsoluteBounds(IGraphicalEditPart)</code>: Get the absolute bounds of this 
+						<code>IGraphicalEditPart</code>.
+					</li>
+					<li>
+						<code>getAbsoluteBoundsIn100Percent(IGraphicalEditPart)</code>: Get the absolute bounds of this 
+						<code>IGraphicalEditPart</code> but adapted according to the current zoom level.
+					</li>
+					<li>
+						<code>isSnapToGridEnabled(EditPart)</code>: Return true if the snapToGrid is enabled for the diagram containing this edit part, false otherwise.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support5">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li>The method 
+				<code>SWTBotSiriusDiagramEditor.setSnapToGrid(boolean)</code> has been added. It allows to disable or enable the snapToGrid option for this editor.
+			</li>
+			<li>The method 
+				<code>SWTBotSiriusDiagramEditor.setSnapToGrid(boolean, double, int)</code> has been added. It allows to disable or enable the snapToGrid option for this editor. In case of activation, you can also set the grid spacing and the ruler units.
+			</li>
+			<li>The method 
+				<code>SWTBotSiriusDiagramEditor.disableSnapToGrid()</code> has been deprecated, use 
+				<code>SWTBotSiriusDiagramEditor.setSnapToGrid(false)</code> instead.
+			</li>
+			<li>The method 
+				<code>SWTBotSiriusDiagramEditor.adaptLocationToSnap(Point)</code> has been added. It allows to adapt location according to SnapToHelper of the current editor.
+			</li>
+			<li>The method 
+				<code>SWTBotSiriusDiagramEditor.getDiagramEditPart()</code> has been added. It allows to retrieve the diagram edit part of the current editor.
+			</li>
+			<li>In 
+				<code>ViewpointSelectionDialog</code>, the methods 
+				<code>selectViewpoints(String...)</code> and 
+				<code>deselectViewpoints(String...)</code> have been added to allow viewpoints selection and deselection from an array of 
+				<code>String</code>. These methods are shortcuts to the 
+				<code>selectViewpoints(Set&lt;String&gt;, Set&lt;String&gt;)</code> method.
+			</li>
+			<li>Add method 
+				<code>changeLayerActivation(String)</code> on 
+				<code>SWTBotSiriusDiagramEditor</code> to offer the same service as similar method on 
+				<code>UIDiagramRepresentation</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.support">Changes in 
+			<code>org.eclipse.sirius.tests.support</code>
+		</h4>
+		<ul>
+			<li>In 
+				<code>org.eclipse.sirius.test.support.SiriusTestCase</code>, the methods deactivateSirius(), initSirius() and findSirius() have been renamed into deactivateViewpoint(), initViewpoint() and findViewppoint() to correct a wrong rebranding.
+			</li>
+		</ul>
+		<h2 id="sirius1.0.0">Changes in Sirius 1.0.0 (from Sirius 1.0.0M7)</h2>
+		<h3 id="UserVisibleChanges8">User-Visible Changes</h3>
+		<ul>
+			<li>The ability to print table representations has been disabled for the 1.0.0 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=435204" target="_blank">bug #435204</a> for the details).</li>
+		</ul>
+		<h3 id="SpecifierVisibleChanges6">Specifier-Visible Changes</h3>
+		<ul>
+			<li>
+				<em>Node</em>, 
+				<em>Container</em> and 
+				<em>Edge</em> mappings can not be created as direct children of a 
+				<em>Diagram Description</em> anymore, the first level mappings must be created as direct children of a 
+				<em>Layer</em>.
+			</li>
+			<li>Mapping (resp. tools) can not be added as reused mapping (resp. tools) of a 
+				<em>Diagram Description</em>, they must be added to the reused mappings (resp. tools) of a 
+				<em>Layer</em>. The corresponding property sections will be shown only for old VSM with reused elements.
+			</li>
+		</ul>
+		<h3 id="APIChanges2">API Changes</h3>
+		<h4 id="Changesinorg.eclipse.sirius6">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>In package 
+				<code>org.eclipse.sirius.business.api.control</code>,  the constructors of 
+				<code>SiriusControlCommand</code> and 
+				<code>SiriusUncontrolCommand</code> which assume implicitly that the session should be saved as part of the command are now deprecated. Use the alternative constructors (a new one has been added to 
+				<code>SiriusUncontrolCommand</code>) to say explicitly if the command should save the session. Most code should do the save themselves outside of the command, and thus pass 
+				<code>false</code>  to the 
+				<code>shouldEndBySaving</code> argument of these constructors.
+			</li>
+			<li>In package 
+				<code>org.eclipse.sirius.business.api.session</code>, class 
+				<code>SavingPolicyImpl</code> (the default session saving policy) now inherits from the new 
+				<code>AbstractSavingPolicy</code> class. The new abstract class can be used as a base to implement different policies by simply overriding the 
+				<code>computeResourcesToSave()</code> method.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui6">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li>To enable the resize of border nodes whose parent is a list, the 
+				<code>createLayoutEditPolicy</code> and 
+				<code>getResizeBorderItemCommand</code> methods have been extracted from  
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramContainerPart</code> and placed into 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart</code>. The 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramListEditPart.createLayoutEditPolicy</code> implementation has been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui7">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.editor.tools.api.menu.AbstractMenuBuilder.getLabel()</code> visibility has been changed from protected to public.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.tools.api.menu.CompositeMenuBuilder</code> has been introduced to avoid duplicated menu. A 
+				<code>CompositeMenuBuilder</code> is created to encapsulate 
+				<code>AbstractMenuBuilder</code> with the same label.
+			</li>
+		</ul>
+		<h2 id="sirius1.0M7">Changes in Sirius 1.0.0M7 (from Sirius 1.0M6)</h2>
+		<h3 id="SpecifierVisibleChanges7">Specifier-Visible Changes</h3>
+		<ul>
+			<li>The default value of the 
+				<em>Semantic Candidates Expression</em> for Tree Items has changed from an empty string (meaning &#8220;any compatible element in the session&#8221;) to 
+				<code>feature:eAllContents</code> which only looks for compatible candidates inside the current element (recursively). The new behavior is more efficient on large models and consistent with what happens for diagrams. The change does not affect existing VSMs which continue to work as before whatever was the expression they used. Users who want the old behavior on specific mappings can simply remove the expression in the properties view.
+			</li>
+			<li>In the 
+				<em>Time Profiler</em> view, the 
+				<em>Time (hh:mm:ss,ms)</em> has been removed. It was redundant with the existing 
+				<em>Time (ms)</em> column, harder to read/sort, and showed wrongly formatted results.
+			</li>
+		</ul>
+		<h3 id="APIChanges3">API Changes</h3>
+		<h4 id="separationOfDiagramSpecificConcept-step3">Move diagram.ecore in its own plugin</h4>
+		<p>This milestone (Sirius 1.0M7) includes the third, and final, step towards a full separation of the diagram-specific stuff out of the core of Sirius (see 
+			<a href="#separationOfDiagramSpecificConcept-step1">Step1</a> and 
+			<a href="#separationOfDiagramSpecificConcept-step2">Step2</a> for more details).
+		</p>
+		<p>All classes related to diagrams in 
+			<code>org.eclipse.sirius</code> have been moved to 
+			<code>org.eclipse.sirius.diagram</code>.
+			<br/>All classes related to diagrams in 
+			<code>org.eclipse.sirius.ui</code> have been moved to 
+			<code>org.eclipse.sirius.diagram.ui</code>.
+			<br/>All classes related to diagrams in 
+			<code>org.eclipse.sirius.editor</code> have been moved to 
+			<code>org.eclipse.sirius.editor.diagram</code>.
+			<br/>In the same way, all classes related to UI in 
+			<code>org.eclipse.diagram</code> have been moved to 
+			<code>org.eclipse.sirius.diagram.ui</code>. To simplify this step almost all classes of 
+			<code>org.eclipse.diagram</code> have been moved in 
+			<code>org.eclipse.sirius.diagram.ui</code> (and probably not only UI classes). These classes have been moved in 
+			<code>src-diag</code> source folder to facilitate future work about moving some of these classes in 
+			<code>org.eclipse.diagram</code> again.
+		</p>
+		<p>Unlike, the 
+			<a href="#separationOfDiagramSpecificConcept-step1">Step1</a>, a simple &#8220;Organize Imports&#8221; operation is not enough. First, you will probably need to add dependencies to 
+			<code>org.eclipse.sirius.diagram</code>, 
+			<code>org.eclipse.sirius.diagram.ui</code> or 
+			<code>org.eclipse.sirius.editor.diagram</code> in the MANIFEST.MF of your projects that depend on Sirius diagram classes. The dependencies to add depend on what you really use.
+		</p>
+		<ul>
+			<li>
+				<code>ViewpointRegistry.getDiagramDescriptionMappingsRegistry()</code> has been removed. You can now directly call 
+				<code>org.eclipse.sirius.diagram.business.api.componentization.DiagramDescriptionMappingsRegistry.INSTANCE.DialectServices</code>.
+			</li>
+			<li>New methods have been added to 
+				<code>IRepairParticipant</code> to isolate specific diagram repair steps.
+				<ul>
+					<li>
+						<code>removeElements(DView, TransactionalEditingDomain, IProgressMonitor)</code>: Removes elements from the 
+						<code>DView</code> that will be recreated by the refresh (called later).
+					</li>
+					<li>
+						<code>cleanRepresentations(EList&lt;DRepresentation&gt;)</code>: Cleans representations (specific representation states like filters) and eventually returns some of them if they need to be removed.
+					</li>
+					<li>
+						<code>refreshRepresentations(DAnalysis, DView)</code>: This method is only implemented by the diagram participant. To simplify work for this step, this method manages core and diagram elements. It should be clean up once the split will be done.
+					</li>
+				</ul>
+			</li>
+			<li>To break the dependencies from Core to Diagram, several services have been added to:
+				<ul>
+					<li>
+						<code>DialectServices</code>, with default implementations in 
+						<code>AbstractRepresentationDialectServices</code>:
+						<ul>
+							<li>
+								<code>createTask(CommandContext, ModelAccessor, ModelOperation, Session, UICallBack)</code>: Creates a new task corresponding to the ModelOperation. Only needed for ModelOperation specific to one dialect.
+							</li>
+							<li>
+								<code>handles(RepresentationExtensionDescription)</code>: Tells if the current dialect handles the given 
+								<code>RepresentationExtensionDescription</code>.
+							</li>
+							<li>
+								<code>invalidateMappingCache()</code>: Allows each dialect to clean and compute again its proper mapping cache.
+							</li>
+							<li>
+								<code>allowsEStructuralFeatureCustomization(EObject)</code>: allows dialects to indicate if they allow EStrucuralFeaturesCustomization for the given VSM element. It is currently supported for style descriptions in diagrams only.
+							</li>
+						</ul>
+					</li>
+					<li>
+						<code>DialectUIServices</code>
+						<ul>
+							<li>
+								<code>canHandle(RepresentationDescription)</code> and 
+								<code>canHandle(RepresentationExtensionDescription)</code>: tell whether the dialect is able to handle the given representation description or extension description.
+							</li>
+							<li>
+								<code>completeToolTipText(String, EObject)</code> allows the dialect to customize the tooltip displayed in a property section of a given VSM element.
+							</li>
+						</ul>
+					</li>
+					<li>
+						<code>DialectUIManager</code>
+						<ul>
+							<li>
+								<code>canExport(DRepresentation, ExportFormat)</code>: New method returning true if at least one dialect is able to export this representation to this format, false otherwise.
+							</li>
+						</ul>
+					</li>
+					<li>
+						<code>IDiagramDescriptionProvider</code>
+						<ul>
+							<li>
+								<code>completeToolTipText(String, EObject)</code> allows the diagram type to customize the tooltip displayed in a property section of a given VSM element. 
+								<code>SequenceDiagramTypeProvider</code> implements this method to mention some Sequence specific variable available in core and diagram tool preconditions in the context of a Sequence diagram.
+							</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>All methods of 
+				<code>SiriusHelper</code> concerning diagrams have been moved to 
+				<code>org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramHelper</code>.
+			</li>
+			<li>All methods of 
+				<code>SiriusUtil</code> concerning diagrams have been moved to 
+				<code>org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil</code>.
+			</li>
+			<li>All methods of 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery</code> concerning diagrams have been moved to 
+				<code>org.eclipse.sirius.diagram.business.api.query.EObjectQuery</code>.
+			</li>
+			<li><a href="https://wiki.eclipse.org/Sirius/Modularization#Library_Extensions" target="_blank">Library Extensions</a>:
+				<ul>
+					<li>All methods depending only on draw2d of 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.draw2d.ui.figures.FigureUtilities</code> have been moved in 
+						<code>org.eclipse.sirius.ext.draw2d.figure.FigureUtilities</code>
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.diagram.ui.tools.api.layout.GraphicalHelper</code> has been moved to 
+						<code>org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper</code>.
+					</li>
+					<li>
+						<code>org.eclipse.sirius.diagram.part.SiriusDiagramEditorPlugin</code> has been renamed into 
+						<code>org.eclipse.sirius.diagram.DiagramPlugin</code>. This plugin is not a UI plugin any more, 
+						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.getPlugin()</code> should be used instead for UI related aspects. For example 
+						<code>DiagramUIPlugin.getPlugin().getPreferenceStore()</code> should be used instead of 
+						<code>DiagramPlugin.getDefault().getPreferenceStore()</code> or 
+						<code>SiriusDiagramEditorPlugin.getInstance().getPreferenceStore()</code>.
+					</li>
+				</ul>
+			</li>
+			<li>
+				<code>DeleteFromDiagramContributionItem</code> and 
+				<code>SetStyleToWorkspaceImageContributionItem</code> have been merged into 
+				<code>SiriusActionBarActionContributionItem</code>
+			</li>
+			<li>Images
+				<ul>
+					<li>Images of 
+						<code>org.eclipse.sirius.diagram</code> have been moved to 
+						<code>org.eclipse.sirius.diagram.ui</code>. In your code, you should replace 
+						<code>SiriusDiagramEditorPlugin.getInstance().getImage()</code> and 
+						<code>DiagramPlugin.getInstance().getImage()</code> by 
+						<code>DiagramUIPlugin.getPlugin().getImage()</code>. That is the case for all methods concerning images in 
+						<code>DiagramPlugin</code> (previously named 
+						<code>SiriusDiagramEditorPlugin</code>).
+					</li>
+					<li>Some images of 
+						<code>org.eclipse.sirius.ui</code> have been moved to 
+						<code>org.eclipse.sirius.diagram.ui</code>, the corresponding constants in 
+						<code>org.eclipse.sirius.ui.tools.api.image.ImagesPath</code> have been moved in 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath</code>.
+					</li>
+				</ul>
+			</li>
+			<li>The method 
+				<code>static void refreshSelection(DiagramElementMapping)</code> from 
+				<code>org.eclipse.sirius.editor.tools.api.menu.AbstractEObjectRefactoringAction</code> is not available anymore.
+			</li>
+			<li>Preferences
+				<ul>
+					<li>
+						<code>org.eclipse.sirius.business.api.preferences.SiriusPreferencesKeys.PREF_AUTO_PIN_ON_CREATE</code> has been moved to 
+						<code>org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramPreferencesKeys</code>.
+					</li>
+				</ul>
+			</li>
+			<li>Ids
+				<ul>
+					<li>The Sirius diagram editor id is now 
+						<code>org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorID</code>
+					</li>
+					<li>Its property contributor is now 
+						<code>org.eclipse.sirius.diagram.ui</code>. This id has to be changed in plugins providing additional property sections to the Sirius diagram editor (created with EEF for example).
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h5 id="Movedextensionpoints">Moved extension points</h5>
+		<p>Several extension points have been moved:</p>
+		<ul>
+			<li>from 
+				<code>org.eclipse.sirius</code> to 
+				<code>org.eclipse.sirius.diagram</code>. You should change the id of the following extension point in your plugin.xml (
+				<code>org.eclipse.sirius.xxxx</code> replaced by 
+				<code>org.eclipse.sirius.diagram.xxxx</code>):
+				<ul>
+					<li>diagramTypeProvider</li>
+				</ul>
+			</li>
+			<li>from 
+				<code>org.eclipse.sirius.diagram</code> to 
+				<code>org.eclipse.sirius.diagram.ui</code>. You should change the id of the following extension points in your plugin.xml (
+				<code>org.eclipse.sirius.diagram.xxxx</code> replaced by 
+				<code>org.eclipse.sirius.diagram.ui.xxxx</code>):
+				<ul>
+					<li>diagramIdentifierProvider</li>
+					<li>imageSelector</li>
+					<li>layoutDataManager</li>
+					<li>layoutProvider</li>
+					<li>styleConfigurationProvider</li>
+					<li>viewOrderingProvider</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common5">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li>In class 
+				<code>org.eclipse.sirius.common.tools.api.util.EclipseUtil</code>, the method 
+				<code>getExtensionPlugins(Class&lt;T&gt;, String, String, String, Predicate&lt;String&gt;)</code> has been removed from API to avoid exposing a Guava-specific 
+				<code>Predicate</code>. Instead, use the new method 
+				<code>getExtensionPluginsByKey()</code> which returns all the extensions organized by the specified key, and filter the result according to whatever critera the 
+				<code>Predicate</code> tested on the key.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius7">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.business.api.query.URIQuery.isSiriusEnvironmentURI</code> has been replaced by
+				<ul>
+					<li>
+						<code>isSiriusCoreEnvironmentURI</code> which checks that the given resource is the Sirius core Environment.xmi file.
+					</li>
+					<li>and 
+						<code>isEnvironmentURI</code> which checks that the given resource has an 
+						<code>environment</code> uri scheme.
+					</li>
+				</ul>
+			</li>
+			<li>In 
+				<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>
+				<ul>
+					<li>the setter 
+						<code>setRefreshActivatedOnRepresentationOpening(boolean)</code> has been removed as the refresh on opening should be managed from the corresponding preference 
+						<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys.PREF_REFRESH_ON_REPRESENTATION_OPENING</code>.
+					</li>
+					<li>
+						<code>isRefreshActivatedOnRepresentationOpening()</code> has been moved into 
+						<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIManager</code> as it refers to an UI behavior.
+					</li>
+				</ul>
+			</li>
+			<li>The 
+				<code>DRepresentation.createContents()</code> (both variants) and 
+				<code>DRepresentation.updateContents()</code> EOperations have been removed. They were not used anywhere.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.modelingproject.ModelingProject.MODELING_PROJECT_PREDICATE</code> constant has been removed to reduce Sirius&#8217;s exposure of Guava&#8217;specific types. Use the equivalent 
+				<code>ModelingProject.hasModelingProjectNature()</code> method instead.
+			</li>
+			<li>The method 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getInverseReferences(Predicate&lt;Setting&gt;)</code> has been removed from API to avoid exposing a the Guava-specific 
+				<code>Predicate</code> type.
+			</li>
+			<li>In class 
+				<code>org.eclipse.sirius.business.api.dialect.description.AbstractInterpretedExpressionQuery</code>, the protected methods 
+				<code>appendAllLocalVariableDefinitions()</code> and 
+				<code>appendEditMaskVariables()</code> now take a 
+				<code>Map&lt;String, Collection&lt;String&gt;&gt;</code> instead of a Guava-specific 
+				<code>Multimap</code>. The new protected method 
+				<code>addDefinition()</code> can be used to make it easier to add entries to the map. Subclasses in Sirius have been updated to match the new signature.
+			</li>
+			<li>The message 
+				<code>org.eclipse.sirius.business.api.modelingproject.ModelingProject.ZERO_REPRESENTATIONS_FILE_FOUND_IN</code> has been removed without replacement. It was not really an API constant.
+			</li>
+			<li>The behavior of method 
+				<code>org.eclipse.sirius.business.api.modelingproject.ModelingProject.getMainRepresentationsFileURI()</code> has changed. It now marks this project as invalid and adds a marker on it, if it is considered as invalid (no or many representations files).
+			</li>
+			<li>A new query 
+				<code>org.eclipse.sirius.business.api.query.IFileQuery</code> has been added with a method to check if file is handled by an opened session, ie:
+				<ul>
+					<li>a semantic resource of this session,</li>
+					<li>a referenced sub representations file,</li>
+					<li>a controlled resource.</li>
+				</ul>
+			</li>
+			<li>The 
+				<code>EObjectLink</code> class has been removed from the metamodel. It was not used anywhere.
+			</li>
+			<li>In interface 
+				<code>org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionTargetSwitch</code>, the 
+				<code>getFirstRelevantContainerFinder()</code> method which returned a Guava 
+				<code>Function&lt;EObject, EObject&gt;</code> has been replaced with the new method 
+				<code>getFirstRelevantContainer(EObject)</code> which directly returns the result of applying the previously returned function. All implementers in Sirius itself have been updated.
+			</li>
+			<li>The constructor 
+				<code>org.eclipse.sirius.business.api.dialect.description.DefaultInterpretedExpressionTargetSwitch(EStructuralFeature, IInterpretedExpressionTargetSwitch, Function&lt;EObject, EObject&gt;)</code> has been removed to avoid exposing a the Guava-specific 
+				<code>Predicate</code> type. Sub-classes which used it with a non-null 
+				<code>Function</code> should override the 
+				<code>getFirstRelevantContainer(EObject)</code> method to return the result of that function instead.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask</code> constructor which took a Guava 
+				<code>Predicate&lt;EReference&gt;</code> now takes an equivalent 
+				<code>EReferencePredicate</code> (from 
+				<code>org.eclipse.sirius.ext.emf</code>).
+			</li>
+			<li>The constants 
+				<code>DSEMANTICDECORATOR_REFERENCE_TO_IGNORE_PREDICATE</code> and 
+				<code>NOTATION_VIEW_ELEMENT_REFERENCE_TO_IGNORE_PREDICATE</code> from 
+				<code>org.eclipse.sirius.business.internal.session.danalysis.DanglingRefRemovalTrigger</code> are now instances of 
+				<code>EReferencePredicate</code> instead of Guava&#8217;s 
+				<code>Predicate&lt;EReference&gt;</code>.
+			</li>
+			<li>In class 
+				<code>org.eclipse.sirius.business.api.session.SessionEventBroker</code>, the method 
+				<code>addlLocalTrigger()</code> now takes a 
+				<code>org.eclipse.emf.transaction.NotificationFilter</code> instead of a Guava-specific 
+				<code>Predicate&lt;Notification&gt;</code> as first argument.
+			</li>
+			<li>The constant 
+				<code>org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener.IS_IMPACTING</code> is now a 
+				<code>NotificationFilter</code> instead of a 
+				<code>Predicate</code>, to match the API change in 
+				<code>SessionEventBroker.addLocalTrigger()</code>.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.session.Session</code> interface has a new 
+				<code>getSavingPolicy()</code> method which gives access to the currently configured saving policy.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram5">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li>The references 
+				<code>DNode.ownedDetails</code> and 
+				<code>DDiagramElementContainerImpl.ownedDetails</code> have been removed from the metamodel, along with the corresponding implementation methods. They were not used in practice.
+			</li>
+			<li>The 
+				<code>DDiagramLink</code> EClass has been removed from the meta-model, along with the corresponding generated Java code. It was not used in practice.
+			</li>
+			<li>The 
+				<code>DDiagram.clean()</code> EOperation has been removed. It was deprecated and not used anymore. All the Java code which existed only to help in the implementation of that operation has also been removed. This includes:
+				<ul>
+					<li>The 
+						<code>org.eclipse.sirius.diagram.tools.api.validation.constraint.AbstractDDiagramConstraint.activate()</code> and 
+						<code>deactivate()</code> methods.
+					</li>
+					<li>The 
+						<code>org.eclipse.sirius.business.api.helper.SiriusHelper.unSetHarmlessDanglingReferences()</code> method.
+					</li>
+					<li>The 
+						<code>org.eclipse.sirius.tools.api.profiler.SiriusTasksKey.CLEANING_NODES_KEY</code> constant.
+					</li>
+				</ul>
+			</li>
+			<li>The 
+				<code>DSemanticDiagram.getRootContents()</code> method (which was deprecated) has been removed.
+			</li>
+			<li>The 
+				<code>DDiagram.findDiagramElements()</code> EOperation has been removed. It was deprecated and always returned an empty list if called.
+			</li>
+			<li>The 
+				<code>DDiagram.info</code> attribute has been removed. It was not used anywhere.
+			</li>
+			<li>The 
+				<code>DDiagram.subDiagram</code> reference has been removed. It was not used anywhere.
+			</li>
+			<li>The 
+				<code>DDiagramElement.isFold()</code> EOperation has been removed. It was deprecated and edge folding has long been implemented using different mechanisms.
+			</li>
+			<li>In the 
+				<code>ContainerMapping</code> type, the following EOperations have been removed: 
+				<code>createContainer()</code>, 
+				<code>updateContainer()</code>, and 
+				<code>getNodesCandidate()</code>. Although their usage is highly discouraged, if you really need to you can currently use the corresponding methods in the internal 
+				<code>ContainerMappingHelper</code> instead (use 
+				<code>SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semanticElement)</code> to obtain the 
+				<code>IInterpreter</code> those methods need). As with all internal code, there is no guarantee these methods will still exist in future versions.
+			</li>
+			<li>The 
+				<code>AbstractNodeMapping.getDNodesDone()</code> EOperation has been removed. It was not used anywhere.
+			</li>
+			<li>In the 
+				<code>NodeMapping</code> type, the 
+				<code>getBestStyle()</code> and 
+				<code>createListElement()</code> EOperations have been removed. Although their usage is highly discouraged, if you really need to you can currently use the corresponding methods in the internal 
+				<code>MappingHelper</code> instead (use 
+				<code>SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semanticElement)</code> to obtain the 
+				<code>IInterpreter</code> these methods need). As with all internal code, there is no guarantee these methods will still exist in future versions.
+			</li>
+			<li>In interface 
+				<code>org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider</code>, the methods 
+				<code>allowsPinUnpin()</code>, 
+				<code>allowsHideReveal</code>, and 
+				<code>allowsCopyPasteLayout()</code>  have been modified to take directly the 
+				<code>DDiagramElement</code> to test (and return a 
+				<code>boolean</code>) instead of returning a Guava-specific 
+				<code>Predicate</code> which then had to be invoked.
+			</li>
+			<li>In class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.PinHelper</code>, .the method 
+				<code>allowsPinUnpin()</code> has been modified to take a 
+				<code>DDiagramElement</code> directly and return a 
+				<code>boolean</code>, instead of taking a 
+				<code>DDiagram</code> and return a Guava-specific 
+				<code>Predicate</code> which then had to be invoked on actual 
+				<code>DDiagramElements</code>..
+			</li>
+			<li>The interface 
+				<code>org.eclipse.sirius.diagram.ui.edit.api.part.ISiriusEditPart</code> has been added and is now part of all the type hierarchy of any EditPart provided by Sirius. This allows a simple 
+				<code>instanceof ISiriusEditPart</code> to discriminate the edit part instances coming from Sirius.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.sequence">Changes in 
+			<code>org.eclipse.sirius.diagram.sequence</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.diagram.sequence.util.SiriusFunctions</code> class has been removed. It was not used anywhere.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.diagram.sequence.util.NotificationQuery</code> class has been removed. It had been exposed by mistake.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.diagram.sequence.business.internal.util.NotationPredicate</code> class has been removed from API, to reduce Sirius&#8217;s exposure of Guava&#8217;specific types.
+			</li>
+			<li>All the static methods in 
+				<code>org.eclipse.sirius.diagram.sequence.util.Range</code> which returned Guava-specific types (
+				<code>Function</code> or 
+				<code>Ordering</code>) have been removed from API.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.sequence.template.AbstractRule</code> no longer inherits from Guava&#8217;s 
+				<code>Function</code> interface, but from the news ad-hoc 
+				<code>org.eclipse.sirius.diagram.sequence.template.Transformer</code> interface instead, which is functionally equivalent.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui7">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.ui.business.api.preferences.DesignerUIPreferencesKeys</code> has been renamed into 
+				<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys</code>
+			</li>
+			<li>Methods 
+				<code>getMissingDependencies()</code> and 
+				<code>getMissingDependenciesErrorMessage()</code> from 
+				<code>org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection</code> now use 
+				<code>Map&lt;String, Collection&lt;String&gt;&gt;</code> instead of Guava&#8217;s 
+				<code>Multimap</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.initializeAfterLoad()</code> method has been removed. There is no replacement for this method documented as &#8220;Not intended to be used by client&#8221;.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ecore.extender4">Changes in 
+			<code>org.eclipse.sirius.ecore.extender</code>
+		</h4>
+		<ul>
+			<li>All variants of 
+				<code>eDelete()</code> methods which took a 
+				<code>Predicate&lt;EReference&gt;</code> in types 
+				<code>ModelAccessore</code>, 
+				<code>IMetamodelExtender</code> and 
+				<code>CompositeMetamodelExtender</code> now take an equivalent 
+				<code>EReferencePredicate</code> (from 
+				<code>org.eclipse.sirius.ext.emf</code>).
+			</li>
+			<li>The 
+				<code>ModelUtils.resolveAll(ResourceSet set, EReferencePredicate)</code> now takes an 
+				<code>EReferencePredicate</code> instead of a Guava-specific 
+				<code>Predicate&lt;EReference&gt;</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ext.base">Changes in 
+			<code>org.eclipse.sirius.ext.base</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.ext.base.Options.isSome()</code> method has been removed to reduce Sirius&#8217;s exposure of Guava&#8217;specific types. Use 
+				<code>Option.some()</code> directly instead.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ext.base.relations.Relation</code> no longer inherits from 
+				<code>com.google.common.base.Function</code>, but keeps the same API otherwise.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.synchronizer4">Changes in 
+			<code>org.eclipse.sirius.synchronizer</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.synchronizer.Mapping.IS_CHECK_ONLY</code> constant has been removed to reduce Sirius&#8217;s exposure of Guava&#8217;specific types. Use 
+				<code>!Mapping.getCreator().some()</code> instead.
+			</li>
+			<li>The 
+				<code>Maybe</code> and 
+				<code>MaybeFactory</code> types have been removed, and all their uses in 
+				<code>org.eclipse.sirius.synchronizer</code> converted to the equivalent 
+				<code>Option</code> and 
+				<code>Options</code> types from 
+				<code>org.eclipse.sirius.ext.base</code>.
+			</li>
+			<li>The internal class 
+				<code>MappingHiearchy.HiearchyIterator</code> has been removed from API.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.support2">Changes in 
+			<code>org.eclipse.sirius.tests.support</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>shouldReloadSession</code> boolean parameter has been removed from 
+				<code>org.eclipse.sirius.tests.support.api.SiriusTestCase.disableUICallBackOnDialectEditor(DialectEditor)</code>, it was not used and could let the tester think he can change the reload behavior from the dialog factory.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase.refreshDiagram()</code> has been removed. This method did not handle the non dynamic tabbar and was a duplicate of manualRefresh(). Callers must select the diagram before the call,the click(0,0) instruction was not sufficient in several cases (for example if there is a node/container in (0,0)).
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerEditor</code> has been renamed into 
+				<code>SWTBotSiriusDiagramEditor</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerGefViewer</code> has been renamed into 
+				<code>SWTBotSiriusGefViewer</code>.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerHelper</code> has been renamed into 
+				<code>SWTBotSiriusHelper</code>.
+			</li>
+			<li>Methods 
+				<code>AbstractSiriusSwtBotGefTestCase.openRepresentation</code> with 
+				<code>SWTBotDesignerEditor</code> as returned type have been renamed into 
+				<code>openDiagram</code>, marked as deprecated and replaced with methods returning a 
+				<code>SWTBotEditor</code>. You can now use methods 
+				<code>openRepresentation</code> for DTree or DTable. If the 
+				<code>expectedRepresentationClass</code> is 
+				<code>DDiagram.class</code>, the returned type will be a 
+				<code>SWTBotSiriusDiagramEditor</code>.
+			</li>
+			<li>Method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.getDesignerEditor(String)</code> has been renamed into 
+				<code>getSiriusDiagramEditor</code>.
+			</li>
+			<li>Add 
+				<code>SWTBotSiriusHelper.getSiriusEditor(String)</code> to return the 
+				<code>SWTBotEditor</code> (diagram, tree or table editor) with the given name. The name is the name as displayed on the editor&#8217;s tab in Eclipse. In case of multiple editors with the same fileName, the same method with an additional parameter, the index, has been added 
+				<code>SWTBotSiriusHelper.getSiriusEditor(String, int)</code>.
+			</li>
+			<li>Change the behavior of 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.zoom(ZoomLevel)</code> to directly change the zoom level of the current diagram editor without trying to change it from the zoom combo in the tabbar.
+			</li>
+			<li>Add 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.zoomFromToolbar(ZoomLevel)</code> to add possibility to explicitly change the zoom level from the tabbar.
+			</li>
+		</ul>
+		<h2 id="sirius1.0M6">Changes in Sirius 1.0.0M6 (from Sirius 1.0M5)</h2>
+		<h3 id="APIChanges4">API Changes</h3>
+		<h4 id="tests">High-level API for Automated Tests Using JUnit and SWTBot</h4>
+		<p>Starting from version 1.0.0M6, Sirius includes high-level APIs to help creating automated tests using JUnit and/or SWTBot. These can be used either to test Sirius itself or to test Sirius-based modelers. These APIs are provided by two plug-ins:</p>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.tests.support</code>: support code for JUnit (plug-in) tests using Sirius.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tests.swtbot.support</code>: support code for SWTBot tests using Sirius.
+			</li>
+		</ul>
+		<p>Both plug-ins are only available if you install the new 
+			<code>org.eclipse.sirius.tests</code> feature.
+		</p>
+		<h4 id="separationOfDiagramSpecificConcept-step2">Move diagram-specific EPackages into their own diagram.ecore model</h4>
+		<p>This milestone (Sirius 1.0M6) includes the second step towards a full separation of the diagram-specific stuff out of the core of Sirius (see 
+			<a href="#separationOfDiagramSpecificConcept-step1">Step1</a> for more details).
+		</p>
+		<p>This step is less impactful on your code than the first step. Nevertheless, some missed classes during first step have moved during this step:</p>
+		<ul>
+			<li>Remove 
+				<code>DDiagramSet</code> and its corresponding reference from 
+				<code>DRepresentationContainer</code>: No longer needed
+			</li>
+			<li>
+				<code>DragAndDropTarget</code>, 
+				<code>DragAndDropTargetDescription</code> and 
+				<code>ContainerDropDescription</code> have been moved to diagram EPackage.
+			</li>
+			<li>
+				<code>viewpoint/diagram/description/validation</code> EPackage has been moved to 
+				<code>viewpoint/description/validation</code>: revert what was done in step 1 by mistake.
+			</li>
+		</ul>
+		<p>The existing VSM (
+			<code>*.odesign</code>) and representations file (
+			<code>*.aird</code>) are automatically migrated.
+		</p>
+		<p>Warning: If you have some code based on the root EPackage of an EClass, it may be necessary to adapt it. Example:</p>
+		<pre>EPackage rootPackage = (EPackage) EcoreUtil.getRootContainer(element.eClass());
+if (rootPackage != null &amp;&amp; rootPackage.getNsURI().equals(ViewpointPackage.eINSTANCE.getNsURI())) {
+</pre>
+		<p>should be adapted in</p>
+		<pre>EPackage rootPackage = (EPackage) EcoreUtil.getRootContainer(element.eClass());
+if (rootPackage != null &amp;&amp; rootPackage.getNsURI().equals(DiagramPackage.eINSTANCE.getNsURI())) {
+</pre>
+		<p>if 
+			<code>element</code> is a Diagram concept.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius8">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.tools.api.command.IDiagramCommandFactory.setAutoRefreshDView()</code> method was removed. It had no effect, any code which called it can simply be removed.
+			</li>
+			<li>The deprecated interface 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistryListener</code> has been removed. Use 
+				<code>org.eclipse.sirius.business.api.componentization.ViewpointRegistryListener2</code> instead.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.session.SessionManagerListener2</code> and 
+				<code>org.eclipse.sirius.business.api.session.SessionManagerListener</code> have been merged into 
+				<code>org.eclipse.sirius.business.api.session.SessionManagerListener</code> which is not deprecated any more.
+			</li>
+			<li>The deprecated method 
+				<code>org.eclipse.sirius.business.api.session.SessionManagerListener.notifyUpdatedSession(Session)</code> has been removed. Use 
+				<code>org.eclipse.sirius.business.api.session.SessionManagerListener.notify(Session, int)</code> instead.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.business.api.helper.task.RemoveDanglingReferencesTask</code> and 
+				<code>org.eclipse.sirius.business.api.helper.task.RemoveSemanticDanglingReferenceTask</code> and 
+				<code>org.eclipse.sirius.tools.api.command.AbstractCommandFactory.addRemoveDanglingReferencesTask()</code> have been removed. These tasks were added to in several commands to remove dangling references at the end. They are now replaced by a specific 
+				<code>ModelChangeTrigger</code> to detect the detachment of 
+				<code>EObject</code> and remove the dangling references. It is added to the 
+				<code>SessionEventBroker</code> during the session opening.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener</code> was a precommit 
+				<code>ResourceSetListener</code>, it became a 
+				<code>ModelChangeTrigger</code> and is now added to the SessionEventBroker during the session opening. This modification allows to correctly manage the order of our different precommit commands. It is triggered after the dangling reference remover.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tools.api.command.semantic.RemoveDanglingReferences</code> is no more used in Sirius commands. It can still be used to clean a resourceSet or a resource (repair tool, import/export, ..). It also has a new static method 
+				<code>removeDanglingReferences(Resource)</code> to remove dangling references as an entry point.
+			</li>
+			<li>The protected predicate 
+				<code>org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask.DSEMANTICDECORATOR_REFERENCE_T0_IGNORE_PREDICATE</code> has been removed, the internal predicate 
+				<code>DanglingRefRemovalTrigger.DSEMANTICDECORATOR_REFERENCE_T0_IGNORE_PREDICATE</code> is used instead.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.findDiagram(EObject)</code> method has been removed. Use the equivalent 
+				<code>new org.eclipse.sirius.business.api.query.EObjectQuery(element).getParentDiagram()</code> instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui8">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.ui.tools.api.perspectives.DesignPerspective</code> interface has been moved to 
+				<code>org.eclipse.sirius.editor.tools.api.perspectives</code> package in 
+				<code>org.eclipse.sirius.editor</code> plugin. This perspective is now provided through the 
+				<code>org.eclipse.sirius.editor</code> plugin. The perspective ID is kept unchanged for a compatibility reason.
+			</li>
+			<li>The deprecated class 
+				<code>org.eclipse.sirius.ui.tools.api.dialogs.ExportRepresentationsAsImagesDialog</code> has been removed. Use 
+				<code>org.eclipse.sirius.ui.tools.api.dialogs.ExportSeveralRepresentationsAsImagesDialog</code> instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram6">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li>
+				<code>org.sirius.diagram.graphical.edit.policies.AirNoteAttachmentEditPolicy</code> has been removed, with the new dangling reference management, it became identical to its superclass, use 
+				<code>org.eclipse.gmf.runtime.diagram.ui.internal.editpolicies.ConnectionEditPolicy</code> instead. Its provider 
+				<code>org.sirius.diagram.graphicalou .edit.policies.AirNoteAttachmentEditPolicyProvider</code> and declaration in plugin.xml have been removed too.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table2">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.table.tools.api.command.ITableCommandFactory.setAutoRefreshDTable()</code> method was removed. It had no effect, any code which called it can simply be removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree3">Changes in 
+			<code>org.eclipse.sirius.tree</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.tree.business.api.command.ITreeCommandFactory.setAutoRefreshDTree()</code> method was removed. It had no effect, any code which called it can simply be removed.
+			</li>
+		</ul>
+		<h2 id="sirius1.0M5">Changes in Sirius 1.0.0M5 (from Sirius 1.0M4)</h2>
+		<h3 id="UserVisibleChanges9">User-Visible Changes</h3>
+		<ul>
+			<li>The table csv export has been improved to handle cropped label. In some specific cases, the cell label is automatically cropped and &#8216;...&#8217; is concatenated to the resulting value. This cropped displayed label was previously exported, now the complete semantic value is exported.</li>
+		</ul>
+		<h3 id="APIChanges5">API Changes</h3>
+		<h4 id="LibraryExtensions">Library Extensions</h4>
+		<p>This milestone (Sirius 1.0M5) introduces several new plug-ins, collectively called &#8220;library extensions&#8221;. They are all named 
+			<code>org.eclipse.sirius.ext.LIB</code>, where 
+			<code>LIB</code> is the name of a library or component Sirius depends on. These plug-ins are used to isolate generic code which extends existing libraries with features and helpers needed for Sirius, but which do not depend on Sirius themselves. A relatively large part of the code in Sirius is of this kind: things that could/should be in EMF, GMF, Eclipse itself, etc. and which are not Sirius-specific but which make it easier to build Sirius itself. Sirius 1.0M5 introduces several of these library extensions and starts to fill them with existing classes which were &#8220;hidden&#8221; inside Sirius and are now exposed in library extensions. Most of the time, existing code which used the Sirius API will only need to:
+		</p>
+		<ol>
+			<li>Add the necessary 
+				<code>Import-Package</code> (recommended) or 
+				<code>Require-Bundle</code> to depend on the library extension(s) where the code they use now lives;
+			</li>
+			<li>Perform a simple &#8220;Organize Imports&#8221; operation, which should find the classes and interfaces in their new locations.</li>
+		</ol>
+		<h4 id="separationOfDiagramSpecificConcept-step1">Move diagram-specific EClasses into a separate EPackage</h4>
+		<p>For historical reasons, the core Sirius metamodels defined in viewpoint.ecore contain both generic (dialect-independant like Viewpoint, RepresentationDescription, DAnalysis...) concepts and diagram-specific ones (e.g. DNode, EdgeStyle, ContainerCreationDescription...). The table and tree metamodels are more cleanly separated.
+			<br/>This milestone (Sirius 1.0M5) includes the first step towards a full separation of the diagram-specific stuff out of the core of Sirius. So many EClasses have been moved.
+		</p>
+		<p>Most of the time, existing code which used these Sirius EClasses will only need to perform a simple &#8220;Organize Imports&#8221; operation, which should find the classes and interfaces in their new locations.
+			<br/>The &#8220;Organize imports&#8221; is not sufficient in case of imported classes existing several time in different packages (
+			<code>EFactory</code> classes for example with 
+			<code>DescriptionFactory</code>, or 
+			<code>EPackage</code> classes for example with 
+			<code>DescriptionPackage</code>). And in some cases 
+			<code>ViewpointFactory</code> (and 
+			<code>ViewpointPackage</code>) will have to be replaced by 
+			<code>DiagramFactory</code> (and 
+			<code>DiagramPackage</code>).
+		</p>
+		<p>The 
+			<code>Switch</code> classes if overridden also require a particular attention.
+		</p>
+		<p>The existing VSM (
+			<code>*.odesign</code>) and representations file (
+			<code>*.aird</code>) are automatically migrated.
+			<br/>Warning: Nevertheless, if you reference these Sirius concepts with the EPackage qualifier in your VSM (
+			<code>*.odesign</code>), in interpreted expressions for example, you must change 
+			<code>viewpoint</code> in 
+			<code>diagram</code>. For example 
+			<code>viewpoint::DDiagramElement</code> becomes 
+			<code>diagram::DDiagramElement</code>.
+		</p>
+		<p>The impacted EPackages are :</p>
+		<ul>
+			<li>
+				<code>viewpoint</code> : some of its EClasses have been moved to 
+				<code>viewpoint/diagram</code>
+			</li>
+			<li>
+				<code>viewpoint/description</code> : some of its EClasses have been moved to 
+				<code>viewpoint/diagram/description</code>
+			</li>
+			<li>
+				<code>viewpoint/description/style</code> : some of its EClasses have been moved to 
+				<code>viewpoint/diagram/description/style</code>
+			</li>
+			<li>
+				<code>viewpoint/description/tool</code> : some of its EClasses have been moved to 
+				<code>viewpoint/diagram/description/tool</code>
+			</li>
+			<li>
+				<code>viewpoint/description/filter</code> : this EPackage has been moved to 
+				<code>viewpoint/diagram/description/filter</code>
+			</li>
+			<li>
+				<code>viewpoint/description/validation</code> : this EPackage has been moved to 
+				<code>viewpoint/diagram/description/validation</code>
+			</li>
+			<li>
+				<code>viewpoint/description/concern</code> : this EPackage has been moved to 
+				<code>viewpoint/diagram/description/concern</code>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius9">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.migration.resource.StringCouple</code> class has been removed.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionTargetSwitch.getFirstRelevantContainerFinder</code> method has been added to let each dialect use its own 
+				<code>Function</code> to retrieve the first relevant container of a given 
+				<code>EObject</code>, i.e. the first container from which a domain class can be determined.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.ui3">Changes in 
+			<code>org.eclipse.sirius.common.ui</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.common.ui.business.api.interpreter.VariableContentProvider</code> class has been removed.
+			</li>
+			<li>The 
+				<code>org.eclipse.sirius.common.ui.tools.api.util.ISimpleAction</code> interface has been removed.
+			</li>
+			<li>The method 
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setText()</code> has been removed. You can now directly call  
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setDefaultNewName()</code> which has been added to set the default new name to display. Note that this method must be called before Dialog.create().
+			</li>
+			<li>The overriden method 
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setTitle()</code> has been removed. Note that the inherited 
+				<code>setTile()</code> method is still available but must be called before Dialog.create().
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table3">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.table.business.api.query.DCellQuery.getExportableLabel()</code> method has been added to compute the label to export when the label is cropped by the 
+				<code>org.eclipse.emf.edit.provider.ItemPropertyDescriptor.ItemDelegator</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table.ui2">Changes in 
+			<code>org.eclipse.sirius.table.ui</code>
+		</h4>
+		<ul>
+			<li>The 
+				<code>org.eclipse.sirius.table.ui.business.api.helper.TableUIHelper</code> now uses 
+				<code>DCellQuery.getExportableLabel()</code> to compute the cell labels used in HTML export.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui9">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li>The long-deprecated 
+				<code>org.eclipse.sirius.ui.business.api.session.DeprecatedIEditingSession</code> interface has been removed. Use the corresponding methods from 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> instead.
+			</li>
+		</ul>
+		<h2 id="sirius1.0M4">Changes in Sirius 1.0.0M4 (from Sirius 0.9)</h2>
+		<h3 id="UserVisibleChanges10">User-Visible Changes</h3>
+		<ul>
+			<li>The ability to print table representations, which had been disabled for the 0.9 release, has been re-enabled.</li>
+		</ul>
+		<h3 id="APIChanges6">API Changes</h3>
+		<p>Sirius 1.0.0M4 includes a lots of API-breaking changes, as part of a global effort to improve the quality of the Sirius internals. In this milestone in particular, most of the APIs which were marked as deprecated in previous versions of Sirius (and before that of Viewpoint) have been either removed (if a replacement exists) or marked as non-deprecated (if no replacement exists yet).</p>
+		<h4 id="Changesinorg.eclipse.sirius.common6">Changes in 
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li>Two deprecated constructors have been removed in 
+				<code>FeatureEditorDialog</code>. Use the remaining constructor instead, which provides proper behavior for both unique and non-unique features.
+			</li>
+			<li>The deprecated method 
+				<code>IEditingDomainFactory.createEditingDomain()</code> has been removed. Use the (inherited) 
+				<code>createEditingDomain(ResourceSet)</code> instead, which ensures correct behavior for all kinds of models (Xtext for example).
+			</li>
+			<li>The deprecated field 
+				<code>org.eclipse.sirius.common.tools.api.listener.Notification.FOLD</code> has been removed. It was never used by Sirius itself, so if your code tried to listen to this kind of notification it was never actually called and can be safely removed.
+			</li>
+			<li>The deprecated methods 
+				<code>getExtensionPlugins()</code> and 
+				<code>getElementsProvidedByPlugin</code> from 
+				<code>EcliseUtil</code> have been removed. If you need this kind of functionality, use the Eclipse APIs directly instead.
+			</li>
+			<li>The deprecated fields 
+				<code>COLUMN_SEMANTIC</code> and 
+				<code>LINE_SEMANTIC</code> of 
+				<code>IInterpreterSiriusVariables</code> have been removed. Use the constants of 
+				<code>org.eclipse.sirius.table.tools.api.interpreter.IInterpreterSiriusTableVariables</code> instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius10">Changes in 
+			<code>org.eclipse.sirius</code>
+		</h4>
+		<ul>
+			<li>The deprecated method 
+				<code>DialectServices.initRepresentations(Viewpoint, EObject)</code> has been removed. Use the version which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated constructor in 
+				<code>CreateRepresentationCommand</code> has been removed. Use the alternative constructor which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The two deprecated constructors in 
+				<code>RefreshRepresentationCommand</code> have been removed. Use the alternative constructors which take an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>DisplayService.computeVisibility(Session, DDiagram, DDiagramElement)</code> has been removed. Use the variant 
+				<code>computeVisibility()</code> which takes a 
+				<code>DiagramMappingsManager</code> instead of a 
+				<code>Session</code>.
+			</li>
+			<li>The following deprecated methods in 
+				<code>FilterService</code> have been removed:
+				<ul>
+					<li>
+						<code>activateCache()</code>: use 
+						<code>DisplayService.activateCache()</code> instead.
+					</li>
+					<li>
+						<code>deactivateCache()</code>: use 
+						<code>DisplayService.deactivateCache()</code> instead.
+					</li>
+					<li>
+						<code>activate()</code>: use 
+						<code>DisplayService.activate()</code> instead.
+					</li>
+					<li>
+						<code>deactivate()</code>: use 
+						<code>DisplayService.deactivate()</code> instead.
+					</li>
+					<li>
+						<code>isActivated()</code>: use 
+						<code>DisplayServiceManager.INSTANCE.getMode() == DisplayMode.NORMAL</code> instead.
+					</li>
+					<li>
+						<code>isCollapse()</code>: use 
+						<code>isCollapsed()</code> instead.
+					</li>
+					<li>
+						<code>isVisibleForFilters()</code>: use 
+						<code>getAppliedFilters()</code> instead.
+					</li>
+					<li>
+						<code>isVisible()</code>: use 
+						<code>DisplayService.isDisplayed()</code> instead.
+					</li>
+					<li>
+						<code>isFiltered()</code>, 
+						<code>isNotFiltered()</code>, 
+						<code>isVisibleForActivatedFilters(), @checkFilters()</code>: use 
+						<code>getAppliedFilters()</code> and 
+						<code>DDiagram.getActivatedFilters()</code> instead.
+					</li>
+				</ul>
+			</li>
+			<li>The deprecated methods 
+				<code>isDirectlyHidden()</code> and 
+				<code>isIndirectlyHidden()</code> in 
+				<code>HideFilterHelper</code> have been removed. Use the corresponding methods in 
+				<code>DDiagramElementQuery</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SavingPolicy.save(Iterable, Map)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated constructor 
+				<code>AbstractCommandFactory(TransactionalEditingDomain, ModelAccessor)</code> has been removed. Use the variant without the 
+				<code>ModelAccessor</code> argument instead.
+			</li>
+			<li>The deprecated constructor 
+				<code>CommandContext(EObject)</code> has been removed. Use the variant which takes an additional 
+				<code>DRepresentation</code> instead.
+			</li>
+			<li>The deprecated methods 
+				<code>activate(TransactionalEditingDomain)</code> and 
+				<code>deactivate(TransactionalEditingDomain)</code> in 
+				<code>IChangeListener</code> have been removed. Use the variants with no argument instead.
+			</li>
+			<li>The deprecated constructor 
+				<code>AddSemanticResourceCommand(Session, URI)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated constructors of 
+				<code>RemoveSemanticResourceCommand</code> have been removed. Use the variants which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated constructor in 
+				<code>CreateDiagramWithInitialOperation</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SessionManager.addResource(Session, Resource)</code> has been removed. Use the 
+				<code>Session.addSemanticResource(URI, IProgressMonitor)</code> instead. In code, 
+				<code>mySessionManager.addResource(mySession, myResource)</code> should be replaced by 
+				<code>mySession.addSemanticResource(myResource.getURI(), new NullProgressMonitor())</code>. Notice that this replacement has not the exact same behavior. The notifications 
+				<code>SessionListener.ABOUT_TO_BE_REPLACED</code> and 
+				<code>SessionListener.REPLACED</code> are not thrown with 
+				<code>addSemanticResource</code> contrary to 
+				<code>addResource</code>. But this kind of notifications is more for reloading of resource.
+			</li>
+			<li>The deprecated constructor of 
+				<code>DefaultLocalSessionCreationOperation</code> have been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SessionManager.getSession(URI)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SessionFactory.createSession(URI)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>Deprecated class 
+				<code>RefreshRepresentationCommand</code> has been removed. Use the class 
+				<code>RefreshRepresentationsCommand</code> instead.
+			</li>
+			<li>Deprecated classes 
+				<code>RevealSiriusElement</code> and 
+				<code>RevealDDiagramElement</code> have been removed. Use the class 
+				<code>RevealDDiagramElements</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>DAnalysisSession.save(Map&lt;?, ?&gt;)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>MappingTableEntry.getImporter()</code> has been updated. It now returns an optional (
+				<code>org.eclipse.sirius.common.tools.api.util.Option</code>) of 
+				<code>MappingTableEntry</code>.
+			</li>
+			<li>The deprecated class 
+				<code>IEMFCommandFactory</code> has been removed. It is not used in Sirius code anymore.
+			</li>
+			<li>The deprecated method 
+				<code>IDiagramCommandFactory.buildCreateDiagramFromDescription(DiagramDescription, EObject)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated methods 
+				<code>dispose()</code> and 
+				<code>disposeInterpreterRegistry(EObject)</code> have been removed from 
+				<code>InterpreterRegistry</code>. They corresponded to dead code.
+			</li>
+			<li>The deprecated method 
+				<code>InterpreterRegistry.prepareImportsFromModelElement(IInterpreter, EObject)</code> has been removed. Use 
+				<code>InterpreterRegistry.prepareImportsFromSession(IInterpreter, Session)</code> instead. To get 
+				<code>Session</code> from 
+				<code>EObject</code>, you can use 
+				<code>SessionManager.INSTANCE.getSession(EObject)</code>.
+			</li>
+			<li>The deprecated method 
+				<code>SiriusHelper.createDAnalysis()</code> has been removed. Use 
+				<code>ViewpointFactory.eINSTANCE.createDAnalysis()</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SessionFactory.createSession(DAnalysis)</code> has been removed. It is not intended to be used, but it can be replaced by 
+				<code>SessionFactory.INSTANCE.createSession(analysis.eResource().getURI(), new NullProgressMonitor())</code>.
+			</li>
+			<li>The method 
+				<code>buildDoExecuteDetailsOperation(DSemanticDecorator, RepresentationCreationDescription, String) has been pull up from @ITableCommandFactory</code>, 
+				<code>ITreeCommandFactory</code> and 
+				<code>IDiagramCommandFactory</code> to 
+				<code>ICommandFactory</code>.
+			</li>
+			<li>The method 
+				<code>getUserInterfaceCallBack()</code> has been pull up from 
+				<code>ITableCommandFactory</code> and 
+				<code>ITreeCommandFactory</code> to 
+				<code>ICommandFactory</code>. And 
+				<code>AbstractCommandFactory</code> now implements this method.
+			</li>
+			<li>The unused reference 
+				<code>allActivatedEdgeMappings</code> from 
+				<code>Layer</code> and 
+				<code>DiagramDescription</code> has been removed from the viewpoint.ecore meta-model. This reference always returns empty list.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram7">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li>The deprecated methods 
+				<code>IDiagramEdgeEditPart.refreshPath()</code> and 
+				<code>AbstractDiagramEdgeEditPart.refreshPath()</code> have been removed. It is not called in Sirius code anymore
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ecore.extender5">Changes in 
+			<code>org.eclipse.sirius.ecore.extender</code>
+		</h4>
+		<ul>
+			<li>The deprecated methods 
+				<code>IMetamodelExtender.eDelete(EObject)</code>, 
+				<code>CompositeMetamodelExtender.eDelete(EObject)</code> and 
+				<code>ModelAccessor.eDelete(EObject)</code> have been removed. Use the variants which takes an additional 
+				<code>ECrossReferenceAdapter</code> instead. This 
+				<code>ECrossReferenceAdapter</code> can be null.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui10">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li>All deprecated methods in 
+				<code>ModelingProjectManager</code> have been removed. Use the corresponding versions which take an additional 
+				<code>IProgressMonitor</code> parameter instead.
+			</li>
+			<li>All deprecated methods in 
+				<code>ViewpointSelection</code> have been removed. Use the corresponding versions which take an additional 
+				<code>IProgressMonitor</code> parameter instead.
+			</li>
+			<li>Deprecated class 
+				<code>org.eclipse.sirius.ui.business.api.control.SiriusControlCommand</code> has been removed. Use the class 
+				<code>org.eclipse.sirius.business.api.control.SiriusControlCommand</code> instead (same constructor but with an additional 
+				<code>IProgressMonitor</code> parameter).
+				<ul>
+					<li>Ditto for 
+						<code>SiriusUnControlCommand</code>
+					</li>
+				</ul>
+			</li>
+			<li>The deprecated method 
+				<code>DialectUIServices.openEditor(Session, DRepresentation)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SessionHelper.openStartupRepresentations(Session)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SiriusControlHandler.performControl(Shell, EObject)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>The deprecated method 
+				<code>SiriusUncontrolHandler.performUncontrol(Shell, EObject)</code> has been removed. Use the variant which takes an additional 
+				<code>IProgressMonitor</code> instead.
+			</li>
+			<li>New class 
+				<code>AbstractCreateRepresentationFromRepresentationCreationDescription</code>: Generalization of all 
+				<code>CreateRepresentationFromRepresentationCreationDescription</code> classes (iof plug-ins sirius.diagram, sirius.table.ui, sirius.tree.ui).
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table4">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li>The deprecated method 
+				<code>TableHelper.getCell(DLine, String)</code> has been removed. Use the variant which take a DLine and a DColumn as parameters.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree4">Changes in 
+			<code>org.eclipse.sirius.tree</code>
+		</h4>
+		<ul>
+			<li>The deprecated method 
+				<code>DTreeUserInteraction.refreshContent()</code> has been removed. Use the variant which take an additional 
+				<code>IProgressMonitor</code> parameter instead.
+			</li>
+		</ul>
+		<h2 id="sirius0.9">Changes in Sirius 0.9.0</h2>
+		<p>Version 0.9.0 is the first release under the Sirius name and under the Eclipse Foundation umbrella. Except for the few cases mentioned below (in the &#8220;Other API Changes&#8221;, &#8220;Specifier-Visible Changes&#8221; and &#8220;User-Visible Changes&#8221; sections), Sirius 0.9.0 is functionally equivalent to the latest version of Viewpoint (version 6.10), which was the name of the project before it was open sourced at Eclipse. See the rest of the documentation for the complete list of feature of the Sirius platform.</p>
+		<h3 id="MigratingfromObeoDesignerorViewpointtoSirius">Migrating from Obeo Designer or Viewpoint to Sirius</h3>
+		<p>If you have existing projects which used this technology before it became Eclipse Sirius and want to migrate to Sirius, you must:</p>
+		<ol>
+			<li>first migrate your projects and models to the latest pre-Sirius version of Viewpoint or Obeo Designer available to you (Viewpoint is the previous name of Sirius);</li>
+			<li>then migrate those to Sirius 0.9.</li>
+		</ol>
+		<p>The latest version of Viewpoint which was available in an Obeo Designer release is Viewpoint 6.8, released in Obeo Designer 6.2. Sirius 0.9 is based on Viewpoint 6.10, which was not released publicly.</p>
+		<p>If you were using Obeo Designer, you must thus first migrate your projects and models to Obeo Designer 6.2, and then consult the 
+			<a href="release_notes_vp.html">release notes for Viewpoint 6.9 and 6.10</a>, which lists the API changes from Viewpoint 6.8 to 6.10.
+		</p>
+		<p>Once your projects are compatible with the latest Viewpoint available to you, you can migrate to Sirius, first by updating your Viewpoint Specification Projects and plug-ins which use the Viewpoint APIs, then by updating any Modeling Project and representation files (
+			<code>*.aird</code>).
+		</p>
+		<h4 id="MigratingViewpointSpecificationProjects">Migrating Viewpoint Specification Projects</h4>
+		<ul>
+			<li>Any plug-in dependencies towards Viewpoint plug-ins must be updated to the corresponding Sirius plug-in and version number. See the correspondence table below for the plug-in names to use.</li>
+			<li>If your plug-ins used any of the extension points defined in Viewpoint, you will need to update your 
+				<code>plugin.xml</code> files to reference the correct extension points identifiers. In particular, all Viewpoint Specification Projects created using Viewpoint use the 
+				<code>fr.obeo.dsl.viewpoint.componentization</code> in their 
+				<code>plugin.xml</code> to register the VSMs they define. This should be changed to use the equivalent 
+				<code>org.eclipse.sirius.componentization</code> extension point id. The identifier changes for the other extension points follow the same rules as the name changes of the plug-ins they are defined in.
+			</li>
+			<li>The migration of your VSMs (
+				<code>*.odesign</code> files) is automatic: simply open your files once in the VSM editor, perform some no-op change to make the editor &#8220;dirty&#8221; and save it. The saved version will have been migrated to Sirius.
+			</li>
+			<li>If you had Java code which used the Viewpoint APIs, you will need to update it to use the Sirius APIs. A simple &#8220;Source &gt; Organize Imports&#8221; on your source folders should find most classes you used in their new namespace. The Viewpoint code base and APIs used the term &#8220;Viewpoint&#8221; both for the name of the product and for the name of the concept. When it refered to the name of the product, the names were changed to use &#8220;Sirius&#8221; instead, so you may need to adjust some names in your code beyond just updating the imports (for example, 
+				<code>ViewpointControlCommand</code> is now 
+				<code>SiriusControlCommand</code>).
+			</li>
+		</ul>
+		<p>Note that if you used Obeo Designer, you may have used the legacy Acceleo 2.x language for the computed expressions inside the 
+			<code>*.odesign</code> files (if your expressions are of the form 
+			<code>&lt;%something%&gt;</code> then you used the legacy language). That language is not supported anymore in Sirius 0.9, so you must migrate your expressions to use Acceleo 3 and/or the specialized interpreters (
+			<code>var:</code>, 
+			<code>feature:</code> and 
+			<code>service:</code>, see the documentation).
+		</p>
+		<h4 id="MigratingModelingProjectsandRepresentationFiles">Migrating Modeling Projects and Representation Files</h4>
+		<ul>
+			<li>First migrate any modeler definitions used by your modeling projects and representation files (see the section above).</li>
+			<li>Modeling projects created using Viewpoint will not be recognized directly by Sirius, because the nature identfier has changed. You must use the &#8220;Configure/Convert to Modeling Project&#8221; action in the project&#8217;s context menu to make it a Sirius-compatible modeling project (see the section below for the technical details of the change).</li>
+			<li>The migration of you representation files (
+				<code>*.aird</code>) is performed automatically when they are loaded in memory. It will become permanent the first time you save it (you can force this by opening a representation, making some arbitrary change and saving the session).
+			</li>
+		</ul>
+		<h3 id="Pluginsversionnumbers.">Plug-ins version numbers.</h3>
+		<p>As of Sirius 0.9, and probably at least until Sirius 1.0 when the APIs will be more stable, all the bundles share the same version, which is also the version for the feature. If you used versioned dependencies to the old Viewpoint code (e.g. dependencies towards Viewpoint 6.8), you need to adjust the versions in your 
+			<code>MANIFEST.MF</code> files in addition to the namespaces.
+		</p>
+		<h3 id="Majornamespacechanges">Major namespace changes</h3>
+		<p>In the context of the move as an official Eclipse project named Sirius, all the namespaces used in the code have changed.</p>
+		<h4 id="Pluginandfeaturesidentifiers">Plug-in and features identifiers</h4>
+		<p>All identifiers have changed to start with the 
+			<code>org.eclipse.sirius</code> namespace prefix. The tables below give the mapping between the Viewpoint plug-in and features identifiers and their Sirius equivalent.
+		</p>
+		<table>
+			<tr>
+				<th>Viewpoint 6.x plug-in</th>
+				<th>Sirius 0.9 plug-in</th>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common</td>
+				<td>org.eclipse.sirius.common</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common.acceleo.mtl</td>
+				<td>org.eclipse.sirius.common.acceleo.mtl</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common.acceleo.mtl.ide</td>
+				<td>org.eclipse.sirius.common.acceleo.mtl.ide</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common.ocl</td>
+				<td>org.eclipse.sirius.common.ocl</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common.ui</td>
+				<td>org.eclipse.sirius.common.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.common.xtext</td>
+				<td>org.eclipse.sirius.common.xtext</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint</td>
+				<td>org.eclipse.sirius</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.diagram</td>
+				<td>org.eclipse.sirius.diagram</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.diagram.layoutdata</td>
+				<td>org.eclipse.sirius.layoutdata</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.diagram.sequence</td>
+				<td>org.eclipse.sirius.sequence</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.diagram.sequence.edit</td>
+				<td>org.eclipse.sirius.sequence.edit</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.diagram.sequence.ui</td>
+				<td>org.eclipse.sirius.sequence.edit.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.doc</td>
+				<td>org.eclipse.sirius.doc</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.editor</td>
+				<td>org.eclipse.sirius.editor</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.editor.sequence</td>
+				<td>org.eclipse.sirius.editor.sequence</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.editor.table</td>
+				<td>org.eclipse.sirius.editor.table</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.editor.tree</td>
+				<td>org.eclipse.sirius.editor.tree</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.eef.adapters</td>
+				<td>org.eclipse.sirius.eef.adapters</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.interpreter</td>
+				<td>org.eclipse.sirius.interpreter</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.table</td>
+				<td>org.eclipse.sirius.table</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.table.ui</td>
+				<td>org.eclipse.sirius.table.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.tree</td>
+				<td>org.eclipse.sirius.tree</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.tree.ui</td>
+				<td>org.eclipse.sirius.tree.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.ui</td>
+				<td>org.eclipse.sirius.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.mda.ecore.extender</td>
+				<td>org.eclipse.sirius.ecore.extender</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.mda.pim.ecore.design</td>
+				<td>org.eclipse.sirius.sample.ecore.design</td>
+			</tr>
+			<tr>
+				<td>org.eclipselab.emf.synchronizer</td>
+				<td>org.eclipse.sirius.synchronizer</td>
+			</tr>
+		</table>
+		<table>
+			<tr>
+				<th>Viewpoint 6.x feature</th>
+				<th>Sirius 0.9 feature</th>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime</td>
+				<td>org.eclipse.sirius.runtime</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.acceleo</td>
+				<td>org.eclipse.sirius.runtime.acceleo</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.ide.eef</td>
+				<td>org.eclipse.sirius.runtime.ide.eef</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.ide.ui</td>
+				<td>org.eclipse.sirius.runtime.ide.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.ide.ui.acceleo</td>
+				<td>org.eclipse.sirius.runtime.ide.ui.acceleo</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.ide.xtext</td>
+				<td>org.eclipse.sirius.runtime.ide.xtext</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.runtime.ocl</td>
+				<td>org.eclipse.sirius.runtime.ocl</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.specifier.ide.ui</td>
+				<td>org.eclipse.sirius.specifier.ide.ui</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.specifier.ide.ui.acceleo</td>
+				<td>org.eclipse.sirius.specifier.ide.ui.acceleo</td>
+			</tr>
+			<tr>
+				<td>fr.obeo.dsl.viewpoint.doc.feature</td>
+				<td>org.eclipse.sirius.doc.feature</td>
+			</tr>
+		</table>
+		<h4 id="JavaPackagesandClassesNames">Java Packages and Classes Names</h4>
+		<p>The Java package names have changed to start with the identifier of the plug-in they are defined in (which has changed). A simple &#8220;Source &gt; Organize Imports&#8221; on your source folders should find most classes you used in their new namespace.</p>
+		<p>The Viewpoint code base and APIs used the term &#8220;Viewpoint&#8221; both for the name of the product and for the name of the concept. When it refered to the name of the product, the names where changed to use &#8220;Sirius&#8221; instead (for example, 
+			<code>ViewpointControlCommand</code> is now 
+			<code>SiriusControlCommand</code>).
+		</p>
+		<h4 id="ModelsnamespaceURIs">Models namespace URIs</h4>
+		<p>All namespace URIs have also been changed from &#8220;http://www.obeo.fr/dsl/viewpoint*&#8221; to &#8220;http://www.eclipse.org/sirius/&#8221;.</p>
+		<p>If you have created VSM file (.odesign) or representations file (.aird) with Viewpoint, the changes of the namespace URIs will be automatically migrated during the loading of your VSM or your representations file. These new nsURIs will be stored physically in the file during the first save. If the file is not saved, the automatic migration will be replayed at the next opening.</p>
+		<h3 id="NatureID">Nature ID</h3>
+		<p>The modeling project has a specific nature (
+			<code>org.eclipse.sirius.nature.modelingproject</code>).
+			<br/>If you have modeling project created with Viewpoint, you must launch the action &#8220;Configure/Convert to Modeling Project&#8221; to replace old nature id (
+			<code>fr.obeo.dsl.viewpoint.nature.modelingproject</code>) by the new one.
+			<br/>If you have many modeling projects to &#8220;migrate&#8221;, you can easily make a script to replace 
+			<code>fr.obeo.dsl.viewpoint.nature.modelingproject</code> by 
+			<code>org.eclipse.sirius.nature.modelingproject</code> in all 
+			<code>.project</code> file of each modeling projects.
+		</p>
+		<h3 id="OtherAPIChanges">Other API Changes</h3>
+		<p>This section only lists API changes in Sirius 0.9.0 compared to the latest version of Viewpoint it is based on, i.e. Viewpoint 6.10.</p>
+		<h4 id="APIAdded">API Added</h4>
+		<ul>
+			<li>Add 
+				<code>IMigrationParticipant.getPackage()</code> to return the EPackage to use for the given namespace. This change concerns our internal migration framework. This is useful to handle our namespace changes (from Viewpoint to Sirius).
+			</li>
+		</ul>
+		<h4 id="APIRemoval">API Removal</h4>
+		<ul>
+			<li>Removed 
+				<code>org.eclipse.sirius.common.tools.api.interpreter.IAcceleoInterpreterVariables</code>: This interface only defined a single constant, which refered to the syntax of an obsolete version of the Acceleo language.
+			</li>
+			<li>Removed 
+				<code>org.eclipse.sirius.common.tools.api.resource.IFileContributorExtension</code>: This interface only defined a few constants relative to an extension point which does not exist anymore.
+			</li>
+			<li>Removed the 
+				<code>org.eclipse.sirius.reconciler</code> extension point definition (which used to be defined in the 
+				<code>org.eclipse.sirius</code> plug-in): This extension point is not supported anymore (and has not been for a long time).
+			</li>
+			<li>Removed all the deprecated methods from 
+				<code>Session</code> and replaced the internal calls with the equivalent versions with 
+				<code>IProgressMonitors</code>. The removed methods are:
+			</li>
+		</ul>
+		<pre>void open();
+void addSemanticResource(Resource newResource, boolean addCrossReferencedResources);
+void addSemanticResource(URI semanticModelURI, boolean addCrossReferencedResources);
+void addSemanticResource(URI semanticModelURI, boolean addCrossReferencedResources, IProgressMonitor monitor);
+void removeSemanticResource(Resource resource, boolean removeCrossReferencedResources);
+void removeSemanticResource(Resource semanticResource);
+void save();
+void close();
+Collection&lt;Viewpoint&gt; getSelectedViewpoints();
+void createView(Viewpoint viewpoint, Collection&lt;EObject&gt; semantics);
+void createView(Viewpoint viewpoint, Collection&lt;EObject&gt; semantics, boolean createNewRepresentations);
+void addSelectedView(DView view) throws IllegalArgumentException;
+void removeSelectedView(DView view);
+
+</pre>
+		<h3 id="SpecifierVisibleChanges8">Specifier-Visible Changes</h3>
+		<p>New variables are available for 
+			<code>sizeComputationExpression</code> to compute the size of edges on 
+			<code>EdgeStyleDescription</code> and 
+			<code>BracketEdgeStyleDescription</code>:
+		</p>
+		<ul>
+			<li>
+				<em>diagram</em>: the current 
+				<code>DDiagram</code>
+			</li>
+			<li>
+				<em>view</em>: the current 
+				<code>DEdge</code>
+			</li>
+			<li>
+				<em>sourceView</em>: the source view of the current edge.
+			</li>
+			<li>
+				<em>targetView</em>: the target view of the current edge.
+			</li>
+		</ul>
+		<h3 id="UserVisibleChanges11">User-Visible Changes</h3>
+		<ul>
+			<li>The ability to print table representations has been disabled for the 0.9 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=422223" target="_blank">bug #422223</a>: for the details). It should be re-introduced in 1.0.</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/Architecture.html b/doc/6.0.x/developer/Architecture.html
new file mode 100644
index 0000000..6b714a5
--- /dev/null
+++ b/doc/6.0.x/developer/Architecture.html
@@ -0,0 +1,225 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Architecture</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusArchitectureandConcepts">Sirius Architecture and Concepts</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SiriusArchitectureandConcepts">Sirius Architecture and Concepts</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#session">Sessions</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#ted">Transactional Editing Domain</a>
+							</li>
+							<li>
+								<a href="#vp_selection">Changing the Viewpoint Selection</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#uisession">Editing Sessions</a>
+					</li>
+					<li>
+						<a href="#model_accessor">The Model Accessor</a>
+					</li>
+					<li>
+						<a href="#dialects">Dialects</a>
+					</li>
+					<li>
+						<a href="#viewpoint_registry">The Viewpoint Registry</a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>This document presents an overview of the internal architecture of Sirius, and the main concepts and APIs.</p>
+		<p>Sirius relies heavily on the Eclipse platform, and reuses (and extends) many of the standard Eclipse frameworks, in particular the Eclipse Modeling Platform. This document assumes that you are already familiar with these frameworks and libraries, in particular EMF and EMF Transaction, GEF and GMF for diagrams. Refer to these frameworks' own documentation for more details about them.</p>
+		<h2 id="session">Sessions</h2>
+		<p>The central concept of Sirius&#8217;s API is the 
+			<code>Session</code>. In Sirius, all data is stored in EMF models: the semantic models themselves obviously, but also the representations (diagrams, tables) and the viewpoint configuration (the 
+			<em>Viewpoint Specification Models</em>). A session is a wrapper around a 
+			<em>Transactional Editing Domain</em> and its 
+			<em>Resource Set</em>. It ensures the consistency of the models inside the editing domain, from the platform&#8217;s point of view; for example it makes sure the representation files correctly reference all the semantic models they need to in order to handle the representations in the session. The session also provides high-level, Sirius-specific services through its own APIs and support classes and interfaces.
+		</p>
+		<p>In the standard UI, each 
+			<em>Modeling Project</em>  corresponds to exactly one 
+			<code>Session</code>, and each session contains its own 
+			<em>Editing Domain</em> and 
+			<em>Resource Set</em>. This means that sessions (and thus modeling projects) are isolated from each other.
+		</p>
+		<p>The 
+			<em>representation files</em> (
+			<code>*.aird</code> files) can be though as the serialized form of a 
+			<code>Session</code>, and symmetrically a session is the runtime incarnation of a representation file (or more precisely of the unique top-level representation file in a modeling project).
+		</p>
+		<p>A session, inside its resource set, contains three kinds of resources:</p>
+		<ul>
+			<li>the 
+				<em>semantic resources</em>, which contain the user&#8217;s semantic model;
+			</li>
+			<li>the 
+				<em>representation resources</em>, which correspond to the 
+				<code>aird</code> file(s), and contain representation data (e.g. diagrams);
+			</li>
+			<li>the 
+				<em>Viewpoint Specification Models</em> which contain all the viewpoints used by the representations inside the session. These are the 
+				<code>*.odesign</code> files, and are typically loaded from installed plug-in instead of from the workspace (except when using the 
+				<em>dynamic mode</em> to develop viewpoints).
+			</li>
+		</ul>
+		<p>The 
+			<code>SessionManager</code> is a global object which references all the sessions currently opened in the system. It can also be used to find which session is responsible for a given semantic element. This is very important because many Sirius APIs require that you provide a 
+			<code>Session</code> parameter. If what you have is an element from a user semantic model, you can use 
+			<code>SessionManager.INSTANCE.getSession(theSemanticElement)</code> to find in which of  the opened session, if any, this object is loaded. Note that this method can be relatively costly, so do not call it in tight loops to avoid hurting performance.
+		</p>
+		<p>To create a Session programmatically:</p>
+		<pre><code>URI sessionResourceURI = URI.createPlatformResourceURI("/Project/archi.aird", true);
+Session createdSession = SessionManager.INSTANCE.getSession(sessionResourceURI);
+createdSession.open();
+</code></pre>
+		<p>The 
+			<code>Session</code> API provides several methods to manage the different kind of resources it contains: finding all the 
+			<em>semantic resources</em> and adding new ones, finding about all the referenced session resources (all the secondary 
+			<code>*.aird</code> files which are part of the same session), etc. Refer to the 
+			<code>Session</code> interface&#8217;s JavaDoc for details.
+		</p>
+		<p>The 
+			<code>Session.getInterpreter()</code> method can be used to obtain an 
+			<code>IInterpreter</code> properly configured to query the models in that session. The interpreter it returns will handle expression from any of the supported query languages, and you can use it to run your own queries (see the 
+			<code>IInterpreter</code> API).
+		</p>
+		<p>Another interesting method in 
+			<code>Session</code> is 
+			<code>Session.getEventBroker()</code>. It returns a 
+			<code>SessionEventBroker</code> object, which can be used to add trigger actions that will be performed whenever a change in the session&#8217;s model occurs. See 
+			<code>SessionEventBroker</code> and 
+			<code>ModelChangeTrigger</code> for details.
+		</p>
+		<p>When you are finished working with a session, you must 
+			<code>close()</code> it. This will unload all the models in its resource set and free the corresponding memory. After a session has been close it can not be reopened, but you can open a new one on the same files if needed.
+		</p>
+		<h3 id="ted">Transactional Editing Domain</h3>
+		<p>The editing domain associated to each session is an EMFT 
+			<em>Transactional Editing Domain</em>. In addition to basic undo/redo, it supports advanced features like atomicity and pre- and post-commit listeners, which are triggered after a command has been executed, and can be used to perform additional work (for pre-commit listeners) or to update external application data like UI state for post-commit listeners.
+		</p>
+		<p>The 
+			<code>Session.getTransactionalEditingDomain()</code> will return the 
+			<code>TransactionlEditingDomain</code> for a session. 
+		</p>
+		<p>To modify a model element with a transactional editing domain, you must use a 
+			<code>RecordingCommand</code>. If you try to modify the models inside a session (semantic model or representations) outside the context of a recording command, you will get an exception. The proper usage pattern is:
+		</p>
+		<pre><code>TransactionalEditingDomain ted = ...;
+ted.getCommandStack().execute(myCommand);
+</code></pre>
+		<p>where 
+			<code>myCommand</code> is a 
+			<code>RecordingCommand</code>.
+		</p>
+		<h3 id="vp_selection">Changing the Viewpoint Selection</h3>
+		<p>Each session has its own set of Viewpoints enabled, which determine which representations and extension are available. Users can change that selection using the 
+			<em>Viewpoint Selection</em> action (for example on a 
+			<em>Modeling Project</em>). You can also change this selection programmatically.
+		</p>
+		<p>The simplest way to do this is to use the 
+			<code>UserSession</code> API; for example:
+		</p>
+		<pre><code>Session userSession = UserSession.from(createdSession);
+userSession.selectViewpoint("Design");
+</code></pre>
+		<h2 id="uisession">Editing Sessions</h2>
+		<p>An 
+			<em>editing session</em>, represented by an instance of 
+			<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code>,  manages the graphical editors associated to a session. A session can exist without an associated editing session, but some operations require that an editing session is explicitly opened. At most one editing session can exist for a given session.
+		</p>
+		<p>To retrieve the editing session associated to a session or create a new one, use the 
+			<code>org.eclipse.sirius.ui.business.api.session.SessionUIManager</code>  API. The manager serves both as a factory for editing sessions and as a registry of all the ones which are opened at a given time and which session they correspond to.
+		</p>
+		<p>The main services offered by an editing session are to open, close, save, and generally manage the lifecycle of the Eclipse editors associated with a session. Every time a representation (e.g. a diagram) is opened on a model, it happens through the corresponding editing session.</p>
+		<p>You can use the editing session&#8217;s APIs yourself to open representations, check their dirty states, save them, etc. Refer to the 
+			<code>EditingSession</code>'s JavaDoc for details.
+		</p>
+		<p>You can also register 
+			<code>IEditingSessionListeners</code> on an editing session, to be notified of state changes in the session, in particular when it becomes 
+			<em>dirty</em>, meaning that it contains unsaved changes.
+		</p>
+		<h2 id="model_accessor">The Model Accessor</h2>
+		<p>The semantic models inside a session are never manipulated directly by Sirius. All access to these models is mediated through the session&#8217;s 
+			<code>ModelAccessor</code> instead of directly through the normal EMF reflective APIs. This accessor serves two purposes:
+		</p>
+		<ul>
+			<li>It enables seamless extension (or restriction) of how the session views the semantic model. For example a model accessor could give access to virtual elements or properties, which do not exist &#8220;physically&#8221; inside the semantic model; it could also decide to hide some parts of the semantic model to viewpoint.</li>
+			<li>It allows the verification of any access or modification using the associated 
+				<code>IPermissionAuthorithy</code>. The permission authority is used to lock model elements (both diagram and semantic elements), and to check if you have read and/or write access to each element and feature before access or modification.
+			</li>
+		</ul>
+		<p>You can obtain the model accessor associated to a session using the 
+			<code>Session.getModelAccessor()</code> method, and the permission authority using 
+			<code>ModelAccessor.getPermissionAuthority()</code>.  If you extend Sirius, you should make sure to use the model accessor API to read and write the semantic model, and to use the permission authority to check any change you want to perform beforehand.
+		</p>
+		<h2 id="dialects">Dialects</h2>
+		<p>Sirius supports different kinds of representations: diagrams, tables and trees. These are all 
+			<strong>dialects</strong>, which are supported by default by the platform. The core of the platform only deals with the abstract notion of a dialect, and each one is simply an extension.
+		</p>
+		<p>The 
+			<code>DialectManager</code>  (
+			<code>org.eclipse.sirius.business.api.dialect.DialectManager</code>) offers some general APIs which can be used to manipulate representations in a uniform way, independently of which concrete dialect provides them. The 
+			<code>DialectManager</code> can be used to:
+		</p>
+		<ul>
+			<li>create new representations;</li>
+			<li>synchronize representations;</li>
+			<li>delete representations;</li>
+			<li>find existing representations.</li>
+		</ul>
+		<p>The 
+			<code>DialectManager</code> is a global object but the services it offers work on representations inside sessions, so all the methods it provides require a 
+			<code>Session</code> object as argument.
+		</p>
+		<p>In the same way as sessions are split in a core 
+			<code>Session</code> API and an 
+			<code>EditingSession</code> API to handle UI-specific services, the 
+			<code>DialectManager</code> is complemented with the 
+			<code>DialectUIManager</code>  (
+			<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIManager</code>), which offers generic APIs to representations services which depend on the UI. The main ones are:
+		</p>
+		<ul>
+			<li>opening and closing editors;</li>
+			<li>exporting representations into external files (e.g. images).</li>
+		</ul>
+		<h2 id="viewpoint_registry">The Viewpoint Registry</h2>
+		<p>The 
+			<code>ViewpointRegistry</code> is a global object which knows about all the Viewpoint definitions available in the system at every time.
+		</p>
+		<p>When a plug-in containing properly packaged 
+			<em>VSMs</em> is deployed, the registry will be notified (through the 
+			<code>org.eclipse.sirius.componentization</code> extension point) and register all the viewpoints defined in any of these 
+			<em>VSMs</em>. The registry also listens to changes in the Eclipse workspace to detect the creation, modification and deletion of any 
+			<code>*.odesign</code> files; this is (part of) what enables dynamic development of VSMs, with no need for a costly deployment of plug-ins to test your changes: the latest version of a Viewpoint definition from the workspace is always known from the registry.
+		</p>
+		<p>You can use the registry to discover about all the viewpoint definitions which are available, and introspect the corresponding models. However be aware that the Viewpoint registry maintains its own editing domain and EMF 
+			<code>ResourceSet</code> in which the viewpoints are loaded. The model loaded in the registry are 
+			<strong>not</strong> the same as the ones loaded in a session that uses a given viewpoint. It is a different instance of the same model. This means you must be careful when comparing or passing around elements from a viewpoint definition. For example if you have defined a viewpoint named 
+			<em>A</em>, and have two different sessions where 
+			<em>A</em> is enabled, you will have three equivalent but different instances of 
+			<em>A</em>: one in each of the sessions' 
+			<code>ResourceSet</code>, and one in the 
+			<code>ViewpointRegistry</code>'s private 
+			<code>ResourceSet</code>.
+		</p>
+		<p>You can register listeners on the 
+			<code>ViewpointRegistry</code> to be notified when Viewpoints are registered, unregistered, or when the definition of a viewpoint changes (for example because it was defined from an 
+			<code>*.odesign</code> file in the workspace that you have just modified, and the registry detected it and reloaded the new definition);
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/Architecture_Overview.html b/doc/6.0.x/developer/Architecture_Overview.html
new file mode 100644
index 0000000..2e20e5d
--- /dev/null
+++ b/doc/6.0.x/developer/Architecture_Overview.html
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Architecture_Overview</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusArchitectureOverview">﻿Sirius Architecture Overview</h1>
+		<p>Sirius is a platform for developing and using graphical model editors for any domain. It is based on the Eclipse Platform, and in particular the Eclipse Modeling stack based on EMF. The Sirius platform itself is domain-agnostic, in that it can be used to create modelers for any business domain as long as they can described using EMF.
+			<br/>There are two categories of users of Sirius:
+		</p>
+		<ol>
+			<li> 
+				<strong>Architects</strong>  use Sirius to develop modelers for their specific business domains, provided they have defined their domain using EMF’s Ecore.
+			</li>
+			<li>
+				<strong>End Users</strong>  use the resulting modelers to create, view, edit, and in general manipulate actual business models of their domain.
+			</li>
+		</ol>
+		<p>The general architecture of Sirius is illustrated in the figure below and reflects this split:</p>
+		<img style="box-shadow: 0 0 0 0" border="0" src="images/Sirius_High-Level_Architecture_Overview.png"/> 
+		<p>On top of Eclipse and EMF, Sirius is made of two main parts.</p>
+		<p>The Sirius 
+			<strong>tooling</strong>   (on the right hand of the figure), is the part used by architects. It provides an environment in which they can specify the modeler(s) they want to give to their end-users. This specification is done in a declarative way, by configuring a 
+			<em>description model</em> . For each modeler, the architect must specify in the description model:
+		</p>
+		<ol>
+			<li>
+				<em>what</em>  is to be represented in the modeler, i.e. which elements of the domain model should be visible;
+			</li>
+			<li>how these elements should 
+				<em>look</em> , i.e. visual styling information;
+			</li>
+			<li>how these elements should 
+				<em>behave</em> , i.e. which tools and interaction modes are available to the end-users to modify the business models, and how each tool behaves.
+			</li>
+		</ol>
+		<p>The Sirius Tooling provides a complete, easy to use environment for architects to create these specifications. The result is a (set of) 
+			<em>description model(s)</em> , optionally with some accompanying Java code, that can be deployed as a normal Eclipse plug-in.
+		</p>
+		<p>The Sirius 
+			<strong>runtime</strong>  (on the left hand of the figure), is the part used by end-users, along with the modeler definition(s) produced by the architects. End-users do not need the Sirius Tooling in order to use Sirius-based modelers. The runtime is responsible for 
+			<em>interpreting</em>  the modeler description models and presenting to the user actual modeler(s) which look and behave as specified in the description.
+			<br/>To do this, the runtime uses a 
+			<em>representation model</em>  (and the corresponding meta-model), which describes the concrete representation(s) of end-users business models according to what is configured in the modelers’ specifications (i.e. which concrete business elements are represented, and how they look). These representation models are produced by the Sirius runtime using a refresh algorithm which produces a “projection” of the business data onto the representation domain using the rules defined in the modeler’s definitions.
+			<br/>The representation model is then shown to the end-user in a 
+			<em>graphical editor</em> , integrated into the Eclipse workbench. Through the editor, the end-user can visualize his business model according to the rules defined by the architect in the modeler’s specification. The end-user can  also 
+			<em>interact</em>  with his models as represented, but only in the ways configured by the architect. When the user interacts with the representation in the editor, some interactions (e.g. dragging and dropping and element on a diagram) can trigger behaviors defined by the architect, which will modify the underlying business model in ways that are consistent with the business rules. Whenever the business model is modified, Sirius re-launches the refresh algorithm, which is incremental: instead of creating a new representation model for the updated business model’s state, it updates the existing model and only changes the parts that need it. The ends-user can then see the effect of his changes immediately in the editor.
+		</p>
+		<p>
+			<img style="box-shadow: 0 0 0 0" border="0" src="images/Sirius_Representation_Refresh-Sync.png"/>
+		</p>
+		<p>An important property of the refresh algorithm(s) is that they are not only incremental in terms of changes in the business model, but also in terms of changes in the modeler description model itself. This gives rise to one of the most important and distinctive features of Sirius: support for dynamic and incremental development of modelers by architects, with real-time feedback. In practice, this means that when an architect is developing a new modeler definition (or changing an existing one), he can have both the modeler’s definition open (using the Sirius Tooling) and an example representation also open alongside, and whenever he changes the modeler’s definition and saves it, the updated definition is automatically picked-up by the runtime and taken into account instantaneously by issuing a refresh.</p>
+		<p>In addition to the 
+			<em>runtime</em>  vs 
+			<em>tooling</em>  split, the Sirius architecture also separates the core part of the platform, which is independent on any specific kind of representation, and the 
+			<em>dialect-specific extensions</em> . Each dialect, which handles a specific kind of representation, is built on top of the core architecture. For example by default Sirius supports three different dialects: diagrams, tables, and trees. More dialects can be implemented by other parties using the public APIs exposed by the Sirius core parts.
+			<br/>Each dialect provides its own specific extensions to the architecture elements in the core:
+		</p>
+		<ol>
+			<li>The representation meta-model is extended with the dialect’s own concepts. For example a diagram can have nodes and connections between these nodes.</li>
+			<li>The core description meta-model is extended to support the definition of these specific concepts. The tooling environment must then be extended to allow architects to specify these new concepts (in general this part can mostly be inferred from the structure of description metamodel and thus automatically generated).</li>
+			<li>Each dialect must provide its own refresh algorithm (although the Sirius core provides some common code to facilitate this).</li>
+			<li>Finally, each dialect must implement the editor(s) used to present their representations to the end-users and allow them to interact with them. This is where dialects make use of additional frameworks and technologies, like GMF for example to render diagrams.</li>
+		</ol>
+		<p>The Sirius architecture as described in this document has the following important properties:</p>
+		<ul>
+			<li>separation of tooling from the runtime: smaller runtime for end-users (which are much more numerous) with no UI “pollution” by architects-specific concepts; the runtime does not care how the modeler definitions where produced: using the standard tooling, using an alternate tooling developed completely separately, produced by a program… the only requirement is that the resulting definition conforms to the meta-model.</li>
+			<li>separation of the core from dialect-specific parts: isolates technical dependencies required by some dialects out of the core; allow installations with only a subset of all the supported dialects; extensible; by making even the standard dialects normal clients of the core, keeps us “honest” about our APIs: the standard dialect do not (or at least should not) have privileged access to core features that externally-developed dialects can not access; the core still provides a good place to share common abstractions and code, which results in less code in dialects, a better integration and more uniform end-user experience across different types of representations.</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/Meta-models.html b/doc/6.0.x/developer/Meta-models.html
new file mode 100644
index 0000000..afbcf1d
--- /dev/null
+++ b/doc/6.0.x/developer/Meta-models.html
@@ -0,0 +1,121 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Meta-models</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="OverviewoftheSiriusMetaModels">Overview of the Sirius Meta-Models</h1>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius uses EMF models to store both 
+			<em>Viewpoint Specification Models</em> (the 
+			<code>*.odesign</code> files) and representation data (the 
+			<code>*.aird</code> files). If you need to extend the Sirius platform in Java, sooner or later you will have to deal with elements from these meta-models, so this document gives a very brief overview of which meta-models are used, where they are defined and how they are organized.
+		</p>
+		<h2 id="vsm_metamodels">Viewpoint Specification Meta-Models</h2>
+		<p>The structure of the 
+			<em>VSMs</em> is defined by several meta-models. The 
+			<code>org.eclipse.sirius</code> plug-in contains the 
+			<code>http://www.eclipse.org/sirius/1.1.0</code> Ecore package and its sub-packages, which defines the general structure of a VSM:
+		</p>
+		<ul>
+			<li>
+				<code>http://www.eclipse.org/sirius/description/1.1.0</code>: defines the overall structure (
+				<code>Group</code>, 
+				<code>Viewpoint</code>, the abstract 
+				<code>RepresentationDescription</code> type used for all dialects).
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/description/style/1.1.0</code>: defines the abstract and generic 
+				<code>StyleDescription</code> and associated types which are used by all dialects.
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/description/tool/1.1.0</code>: defines the generic 
+				<code>AbstractToolDescription</code> and generic tool types. This package also contains the definitions for all the 
+				<a href="../specifier/general/Model_Operations.html">Model Operations</a> like 
+				<code>If</code>, 
+				<code>CreateInstance</code>, etc.
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/description/validation/1.1.0</code>: defines the validation rules which can be added to viewpoints and diagrams, include the quick-fixes definitions.
+			</li>
+		</ul>
+		<p>The other dialects define their own extensions to these packages, in their own plug-ins. They follow the same structure:</p>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.diagram</code> defines 
+				<code>http://www.eclipse.org/sirius/diagram/description/1.1.0</code> and its sub-packages, with all the elements that are used to specify a diagram description inside a VSM.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.sequence</code> defines 
+				<code>http://www.eclipse.org/sirius/diagram/sequence/description/2.0.0</code> and 
+				<code>http://www.eclipse.org/sirius/diagram/sequence/description//tool/2.0.0</code> for sequence diagrams-specific mappings and tools.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table</code> defines 
+				<code>http://www.eclipse.org/sirius/table/description/1.1.0</code>  for table mappings and tools.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree</code>  defines 
+				<code>http://www.eclipse.org/sirius/tree/description/1.1.0</code>  for tree mappings and tools.
+			</li>
+		</ul>
+		<h2 id="representation_metamodels">Representation Meta-Models</h2>
+		<p>The meta-models described above correspond to the elements which are found inside the 
+			<code>*.odesign</code> files. The 
+			<em>representation files</em> (
+			<code>*.aird</code>) are also stored as models. A representation can be thought of as a serialized version of a session. It includes references to the semantic models represented in the session, and the model for each actual representation (diagram, table or tree). These representation models are organized into groups corresponding to which viewpoint defines them, and the representation file also stores the set of currently enabled viewpoints in the session.
+		</p>
+		<p>This means the representation file 
+			<em>contains</em> the representation and session data, 
+			<em>references</em> the semantic models, and also 
+			<em>references</em> the 
+			<em>VSMs</em> which define the representations it contains.
+		</p>
+		<p>The meta-model for representation files is defined in the 
+			<code>http://www.eclipse.org/sirius/1.1.0</code> package, from the main 
+			<code>org.eclipse.sirius</code> plug-in. Diagrams, sequence diagrams, tables and trees define their own meta-models to describe their representations' data:
+		</p>
+		<ul>
+			<li>
+				<code>http://www.eclipse.org/sirius/diagram/1.1.0</code> defined in 
+				<code>org.eclipse.sirius.diagram</code>.
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/diagram/sequence/2.0.0</code> defined in 
+				<code>org.eclipse.sirius.diagram.sequence</code>.
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/table/1.1.0</code> defined in 
+				<code>org.eclipse.sirius.table</code>.
+			</li>
+			<li>
+				<code>http://www.eclipse.org/sirius/tree/1.0.0</code> defined in 
+				<code>org.eclipse.sirius.tree</code>.
+			</li>
+		</ul>
+		<p>The concrete structure of an 
+			<code>aird</code> file is the following: An 
+			<code>aird</code> resource contains a single 
+			<code>DAnalysis</code>. The analysis references the semantic resources in the session, via its 
+			<code>semanticResources</code> reference, and may reference other &#8220;sub-aird&#8221; through its 
+			<code>referencedAnalysis</code> reference. It also contains through 
+			<code>ownedViews</code> a 
+			<code>DView</code> for every Viewpoint which was ever enabled in the session. The sub-set of 
+			<code>ownedViews</code> in 
+			<code>selectedViews</code> corresponds to the Viewpoints currently enabled in the session. Each 
+			<code>DView</code> references (through 
+			<code>viewpoint</code>) the viewpoint definition it is an &#8220;instance&#8221; of, and contains actual representations (from that viewpoint) in 
+			<code>ownedRepresentations</code>.
+		</p>
+		<p>The structure of the representations themselves depend on each dialect, which defines its own meta-model as mentioned above. However, they all use the 
+			<code>org.eclipse.sirius.viewpoint.DSemanticDecorator</code> interface for representation elements which stand for semantic elements. The 
+			<code>getTarget()</code> method of 
+			<code>DSemanticDecorator</code> can be used to obtain the actual semantic target element being represented. This means that both a node on a diagram (which is a 
+			<code>DNode</code>) and a cell in a table (a 
+			<code>DCell</code>), and any other representation element in Sirius, share the same API to retrieve the element in the user&#8217;s semantic model that it represents.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/Sirius Developer Manual.html b/doc/6.0.x/developer/Sirius Developer Manual.html
new file mode 100644
index 0000000..86692ef
--- /dev/null
+++ b/doc/6.0.x/developer/Sirius Developer Manual.html
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Sirius Developer Manual</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusDeveloperManual">Sirius Developer Manual</h1>
+		<p>This document gives an overview of the internals of the 
+			<em>Sirius</em> platform, and describes the main APIs and extension points.
+		</p>
+		<ul>
+			<li>
+				<a href="Architecture_Overview.html">
+					<strong>Architecture Overview</strong>
+				</a> provides a high-level view of how Sirius is structured.
+			</li>
+			<li>
+				<a href="Architecture.html">
+					<strong>Architecture and Concepts</strong>
+				</a> describes the general architecture of the system, the main concepts and top-level entry points in the APIs.
+			</li>
+			<li>
+				<a href="Meta-models.html">
+					<strong>Meta-models</strong>
+				</a> gives a high-level description of the various meta-models used internally by Sirius, to represent both 
+				<em>VSMs</em> and representation files.
+			</li>
+			<li>The Sirius platform publishs a set of API, and the next sections describe some which require particular attention:
+				<ul>
+					<li>
+						<a href="siriusCrossReferenceAdapter.html">
+							<strong>SiriusCrossReferenceAdapter</strong>
+						</a>
+					</li>
+					<li>
+						<a href="representations_lazy_loading.html">
+							<strong>Representations lazy loading (experimental)</strong>
+						</a>
+					</li>
+				</ul>
+			</li>
+			<li>The Sirius platform is extensible, and the next sections describe some common extension scenarios:
+				<ul>
+					<li>
+						<a href="integration-plm.html">
+							<strong>Integration with Product Life Cycle Management</strong>
+						</a>
+					</li>
+					<li>
+						<a href="integration-modeler_description_file_deployment.html">
+							<strong>Deploy a Modeler Description File</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_save_dialog.html">
+							<strong>Provide custom save dialog</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_custom-arrange-all.html">
+							<strong>Provide custom arrange-all</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_custom_style.html">
+							<strong>Provide custom style</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_tabbar_extensions.html">
+							<strong>Provide tab-bar extensions</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_migrate_contribution.html">
+							<strong>Provide custom representation files migration</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_repair_contribution.html">
+							<strong>Provide custom repair participant</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_celleditor.html">
+							<strong>Provide custom cell editor</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_custom_bundled_image_shape.html">
+							<strong>Provide custom bundled image shape</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-properties_provide_custom_widget.html">
+							<strong>Provide custom widget for the properties view and dialogs</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_custom_model_operation.html">
+							<strong>Provide custom model operation</strong>
+						</a>
+					</li>
+					<li>
+						<a href="extensions-provide_custom_aird_editor_pages.html">
+							<strong>Provide custom aird editor pages</strong>
+						</a>
+					</li>
+				</ul>
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-properties_provide_custom_widget.html b/doc/6.0.x/developer/extensions-properties_provide_custom_widget.html
new file mode 100644
index 0000000..3983cac
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-properties_provide_custom_widget.html
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-properties_provide_custom_widget</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvideCustomWidgetForThePropertiesView">Sirius &#8211; Provide Custom Widget For The Properties View</h1>
+		<h2 id="Goal">Goal</h2>
+		<p>Using the Properties DSL in the odesign, a specifier can create the content of the Properties view for her/his Sirius-based designers. In some projects, a specifier may require the use of additional widgets not provided by the Sirius Properties runtime. In order to fulfill this need, the Sirius Properties runtime provide two ways for a developer to contribute additional widgets for specifiers.</p>
+		<h2 id="Strategies">Strategies</h2>
+		<p>Two strategies, 
+			<a href="extensions-properties_provide_custom_widget_basic.html">
+				<strong>Basic Custom Widget</strong>
+			</a> and 
+			<a href="extensions-properties_provide_custom_widget_advanced.html">
+				<strong>Advanced Custom Widget</strong>
+			</a>, exist to create a custom widget depending on the quality of the integration of the custom widget that you want to create.
+		</p>
+		<table class="table table-bordered" style="margin-left:0">
+			<tr>
+				<td></td>
+				<th>Basic Custom Widget</th>
+				<th>Advanced Custom Widget</th>
+			</tr>
+			<tr>
+				<td>Advantages</td>
+				<td>Easier to implement by the developer</td>
+				<td>Exactly the same integration in Sirius as any other concepts</td>
+			</tr>
+			<tr>
+				<td>Drawbacks</td>
+				<td>Poor user interface for the specifier to manipulate</td>
+				<td>Complex to implement by the developer</td>
+			</tr>
+		</table>
+		<p>Those two strategies have their own specific advantages and drawbacks but the &#8220;Advanced Custom Widget&#8221; strategy can developed as a follow-up of a &#8220;Basic Custom Widget&#8221; while keeping most of the code developed for the &#8220;Basic Custom Widget&#8221; approach.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-properties_provide_custom_widget_advanced.html b/doc/6.0.x/developer/extensions-properties_provide_custom_widget_advanced.html
new file mode 100644
index 0000000..a0c8bd3
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-properties_provide_custom_widget_advanced.html
@@ -0,0 +1,623 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-properties_provide_custom_widget_advanced</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusPropertiesAdvancedCustomWidget">Sirius Properties &#8211; Advanced Custom Widget</h1>
+		<h2 id="Goal">Goal</h2>
+		<p>Using the Advanced Custom Widget approach, our goal aims at the creation of a custom widget with a great user experience for the Sirius specifier. This custom widget will be created after the development of the basic custom widget. You should be familiar with this approach first.</p>
+		<h2 id="Strategy">Strategy</h2>
+		<p>In order to create a custom widget, we will have to think about the two kind of users that will interact with our work, the Sirius specifier and the end-user. With this advanced approach, we will create a table widget for the end-user with a great experience for the Sirius specifier who will manipulate it.</p>
+		<h3 id="SpecificationofthecustomwidgetinEclipseSirius">Specification of the custom widget in Eclipse Sirius</h3>
+		<p>The specification of the advanced custom widget will be the main difference with the basic custom widget. While with the basic approach, the Sirius specifier had to use a generic and bland custom widget description, with the advanced approach we will create a real definition for the Sirius specifier to manipulate.</p>
+		<p>As a first step, we want to contribute a piece of model to be displayed in the odesign file for our Sirius specifiers. For that, you will have to create a plugin named 
+			<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code> containing, in a folder named model, an Ecore model named 
+			<code>properties-ext-widgets-table.ecore</code>. In this Ecore model, you will have to load the resource 
+			<code>properties.ecore</code> used to define the Properties view description in the odesign. This meta-model can be found in the EPackage registry using its NsURI 
+			<code>http://www.eclipse.org/sirius/properties/1.0.0</code>.
+		</p>
+		<p>Once this resource has been loaded, give a name, NsPrefix and NsURI to your EPackage (the root element), for example:</p>
+		<ul>
+			<li>Name: 
+				<code>propertiesextwidgetstable</code>
+			</li>
+			<li>NsPrefix: 
+				<code>properties-ext-widgets-table</code>
+			</li>
+			<li>NsURI: 
+				<code>http://www.example.com/awesomeproject/properties/ext/widgets/table</code>
+			</li>
+		</ul>
+		<p>After that, you can create an EClass under the EPackage with the named 
+			<code>ExtTableDescription</code> and with the EClass 
+			<code>WidgetDescription</code> as a supertype. This EClass should contain for our example two EAttributes named 
+			<code>onClickExpression</code> and 
+			<code>valueExpression</code> and both should have the type 
+			<code>InterpretedExpresion</code>.
+		</p>
+		<p>You can then create a genmodel file for your Ecore model in the same repository. Make sure to configure your 
+			<code>genmodel</code> with a 
+			<em>Runtime Version</em> property set to 
+			<em>2.3</em> so that the generated Java is compatible with the &#8220;parent&#8221; metamodel from Sirius. Launching the generation of the model and its edit support will produce two plugins:
+		</p>
+		<ul>
+			<li>Sirius Properties model extension: 
+				<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code>
+			</li>
+			<li>Sirius Properties model extension Edit support: 
+				<code>com.example.awesomeproject.sirius.properties.ext.widgets.table.edit</code>
+			</li>
+		</ul>
+		<h3 id="SpecificationofthecustomwidgetinEclipseEEF">Specification of the custom widget in Eclipse EEF</h3>
+		<p>Eclipse EEF has a runtime independent of Eclipse Sirius and as such the definition of the widget that exist in the odesign file has to be transformed into a definition that can be maintained by Eclipse EEF. For most of the existing concepts this transformation is very basic since it only involves the transformation of the Sirius concepts directly into similar EEF concepts but both domain specific languages have very different roles.</p>
+		<p>The Eclipse Sirius Properties DSL is used as the user interface for the Eclipse Sirius specifier while the Eclipse EEF DSL is the model interpreted by the runtime. It is perfectly possible, and even recommended, to define, in the extension of the Sirius Properties DSL, high level concepts that should be user-friendly for the Sirius specifier and to keep in the extension of the EEF DSL raw concepts transformed from the extension of the Sirius Properties DSL.</p>
+		<p>You will now have to create a third plugin named 
+			<code>com.example.awesomeproject.eef.ext.widgets.table</code> with a model folder and an Ecore model inside named 
+			<code>eef-ext-widgets-table.ecore</code>. In this model you should load the resource 
+			<code>eef.ecore</code> containing the EEF DSL that you will have to extend. You can find it in the EPackage registry using its NsURI 
+			<code>http://www.eclipse.org/eef</code>. Once the EEF DSL is loaded, you can set the properties of your root EPackage:
+		</p>
+		<ul>
+			<li>Name: 
+				<code>eefextwidgetstable</code>
+			</li>
+			<li>NsPrefix: 
+				<code>eef-ext-widgets-table</code>
+			</li>
+			<li>NsURI: 
+				<code>http://www.example.com/awesomeproject/eef/ext/widgets/table</code>
+			</li>
+		</ul>
+		<p>Under this root EPackage, you can now create your EClass named 
+			<code>EEFExtTableDescription</code> which should have 
+			<code>EEFWidgetDescription</code> as a supertype. This EClass should contain for our example two EAttributes named 
+			<code>onClickExpression</code> and 
+			<code>valueExpression</code> and both should have the type 
+			<code>EString</code>. In our example, both the extension of the Sirius DSL and the EEF DSL have the same properties since we are using a very simple example.
+		</p>
+		<p>You can now create a genmodel for your extension of the EEF DSL and generate the code for the model (the Edit support is not necessary here). You will now have three plugins:</p>
+		<ul>
+			<li>Sirius Properties model extension: 
+				<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code>
+			</li>
+			<li>Sirius Properties model extension Edit support: 
+				<code>com.example.awesomeproject.sirius.properties.ext.widgets.table.edit</code>
+			</li>
+			<li>EEF model extension: 
+				<code>com.example.awesomeproject.eef.ext.widgets.table</code>
+			</li>
+		</ul>
+		<h3 id="ContributionoftheconverterfromSiriustoEEF">Contribution of the converter from Sirius to EEF</h3>
+		<p>Now that you have your extension to the Sirius Properties DSL and the EEF DSL, you need to inform the Sirius bridge how to transform the concepts from your extension to the Sirius DSL into EEF concepts. For that an extension point is available in order to contribute an IDescriptionConverter. This converter will have to depend on the Sirius bridge for Eclipse EEF and at least the extension to both the Sirius Properties DSL and the EEF DSL. As a result, this code will have to go into another plugin because having those dependencies on an existing plugins would be against the best practices. We will thus create a fourth plugin named 
+			<code>com.example.awesomeproject.sirius.ui.properties.ext.widgets.table</code>. In this plugin, we will declare our description converter using the following extension.
+		</p>
+		<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;?eclipse version="3.4"?&gt;
+&lt;plugin&gt;
+   &lt;extension
+         point="org.eclipse.sirius.ui.properties.descriptionConverter"&gt;
+      &lt;descriptor
+            class="com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.internal.ExtTableDescriptionConverter"
+            description="%tableDescriptionConverter.Description"
+            id="com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.descriptionConverter"
+            label="%tableDescriptionConverter.Label"&gt;
+      &lt;/descriptor&gt;
+   &lt;/extension&gt;
+&lt;/plugin&gt;
+
+</pre>
+		<p>
+			<br/>The transformation from the Sirius DSL to the EEF DSL occur in two parts, first the description are converted using an IDescriptionConverter and after an IDescriptionLinkResolver may be used to resolve some links. In our case, the description converter will simply be used to transform a instance of 
+			<code>ExtTableDescription</code> into an 
+			<code>EEFExtTableDescription</code> and we won&#8217;t use a description link resolver since it is not useful here.
+		</p>
+		<pre>package com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.internal;
+
+import java.util.Map;
+
+import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
+import com.example.awesomeproject.eef.ext.widgets.table.EefExtWidgetsTableFactory;
+import org.eclipse.emf.ecore.EObject;
+import com.example.awesomeproject.sirius.properties.ext.widgets.table.ExtTableDescription;
+import org.eclipse.sirius.ui.properties.api.DescriptionCache;
+import org.eclipse.sirius.ui.properties.api.IDescriptionConverter;
+
+public class ExtTableDescriptionConverter implements IDescriptionConverter {
+
+    @Override
+    public boolean canHandle(EObject description) {
+        return description instanceof ExtTableDescription;
+    }
+
+    @Override
+    public EObject convert(EObject description, Map&lt;String, Object&gt; parameters, DescriptionCache cache) {
+        if (description instanceof ExtTableDescription) {
+            ExtTableDescription extTableDescription = (ExtTableDescription) description;
+
+            EEFExtTableDescription eefExtTableDescription = EefExtWidgetsTableFactory.eINSTANCE.createEEFExtTableDescription();
+            eefExtTableDescription.setIdentifier(extTableDescription.getIdentifier());
+            eefExtTableDescription.setHelpExpression(extTableDescription.getHelpExpression());
+            eefExtTableDescription.setIsEnabledExpression(extTableDescription.getIsEnabledExpression());
+            eefExtTableDescription.setLabelExpression(extTableDescription.getLabelExpression());
+
+            eefExtTableDescription.setValueExpression(extTableDescription.getValueExpression());
+            eefExtTableDescription.setOnClickExpression(extTableDescription.getOnClickExpression());
+
+            // Let's not forget to populate the cache for the other converters or link resolvers
+            cache.put(extTableDescription, eefExtTableDescription);
+
+            return eefExtTableDescription;
+        }
+        return null;
+    }
+}
+
+</pre>
+		<p>
+			<br/>An IDescriptionConverter can be used to convert any element from the Sirius Properties DSL into an EEF DSL element. In order to support custom widgets, you only have to handle your own objects but you could still modify other kind of objects from the Sirius Properties DSL. As a result, this mechanism can be used to dynamically modify anything in the description of the Properties view at runtime. This usage of the IDescriptionConverter should almost never be used, it&#8217;s a very powerful mechanism for extremely advanced users only.
+		</p>
+		<p>In order to help developer transform their Sirius entities into EEF entities, multiple possible super-classes are available:</p>
+		<ul>
+			<li>org.eclipse.sirius.ui.properties.api.AbstractDescriptionConverter &#8211; Common superclass with utility methods</li>
+			<li>org.eclipse.sirius.ui.properties.api.DefaultDescriptionConverter &#8211; Converter for basic transformations</li>
+			<li>org.eclipse.sirius.ui.properties.api.DefaultDescriptionWithInitialOperationConverter &#8211; Converter with support for the transformation of a basic operation into a regular expression</li>
+			<li>org.eclipse.sirius.ui.properties.api.DefaultStyleDescriptionConverter &#8211; Converter with support for styling</li>
+		</ul>
+		<h3 id="ContributionofthepreprocessorfromSiriuswithextensibilityfeaturestoflattenSirius">Contribution of the preprocessor from Sirius with extensibility features to flatten Sirius</h3>
+		<p>Now that you have your extension to the Sirius Properties DSL, you need to inform the Sirius bridge how to transform the concepts from your new widget with extensibility to the Sirius DSL without extends or overrides mechanism. For that an extension point is available in order to contribute an IDescriptionPreprocessor. This preprocessor will have to depend on the Sirius bridge. As a result, this code will have to go into the same plugin as the converter for best practices. We will thus contribute to the plugin named 
+			<code>com.example.awesomeproject.sirius.ui.properties.ext.widgets.table</code>. In this plugin, we will declare our description preprocessor using the following extension.
+		</p>
+		<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;?eclipse version="3.4"?&gt;
+&lt;plugin&gt;
+   &lt;extension
+         point="org.eclipse.sirius.ui.properties.descriptionPreprocessor"&gt;
+      &lt;descriptor
+            class="com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.internal.ExtTableDescriptionPreprocessor"
+            description="%tableDescriptionPreprocessor.Description"
+            id="com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.descriptionPreprocessor"
+            label="%tableDescriptionPreprocessor.Label"&gt;
+      &lt;/descriptor&gt;
+   &lt;/extension&gt;
+&lt;/plugin&gt;
+
+</pre>
+		<p>
+			<br/>The transformation from the Sirius DSL with extends/overrides to the Sirius DSL occur in two parts, first the description are converted using an IDescriptionPreprocessor and after an IDescriptionLinkResolver may be used to resolve some links. In our case, the description preprocessor will simply be used to transform a instance of 
+			<code>ExtTableDescription</code> with extends into a flatten 
+			<code>ExtTableDescription</code> without extends/overrides and we won&#8217;t use a description link resolver since it is not useful here.
+		</p>
+		<pre>package com.example.awesomeproject.sirius.ui.properties.ext.widgets.table.internal;
+
+import java.util.Map;
+
+import com.example.awesomeproject.eef.ext.widgets.table.EEFExtTableDescription;
+import com.example.awesomeproject.eef.ext.widgets.table.EefExtWidgetsTableFactory;
+import org.eclipse.emf.ecore.EObject;
+import com.example.awesomeproject.sirius.properties.ext.widgets.table.ExtTableDescription;
+import org.eclipse.sirius.ui.properties.api.DescriptionCache;
+import org.eclipse.sirius.ui.properties.api.IDescriptionPreprocessor;
+
+public class ExtTableDescriptionPreprocessor extends PreconfiguredPreprocessor&lt;ExtTableDescription&gt; {
+
+    @Override
+    public boolean canHandle(EObject description) {
+        return description instanceof ExtTableDescription;
+    }
+}
+
+</pre>
+		<p>
+			<br/>An IDescriptionPreprocessor can be used to convert any element from the Sirius Properties DSL with extends/overrides to a flatten Sirius DSL.
+		</p>
+		<p>In order to help developer transform their Sirius entities into Sirius flatten entities, multiple possible super-classes are available:</p>
+		<ul>
+			<li>org.eclipse.sirius.ui.properties.api.DefaultDescriptionPreprocessor &#8211; Preprocessor for basic transformations</li>
+			<li>org.eclipse.sirius.ui.properties.api.DefaultDescriptionPreprocessorWithFiltering &#8211; Preprocessor with support for ignoring some features and copying the value of some other features. This means that in the models resulting from the preprocessing, the ignored values are not copied or inherited.</li>
+			<li>org.eclipse.sirius.ui.properties.api.PreconfiguredPreprocessor &#8211; Preprocessor with support for most of the cases by ignoring : the extends reference, all the filters of the extension mechanism and by copying: the actions, the initial operation, the style, the conditional styles.</li>
+		</ul>
+		<h3 id="ContributionofthePropertiessectionfortheodesign">Contribution of the Properties section for the odesign</h3>
+		<p>If you try to edit your extension of the Sirius DSL in the odesign editor, you will find out that it does not work. In order to be able to view the properties of your widget, in our case the 
+			<code>onClickExpression</code> and the 
+			<code>valueExpression</code>, you will need to contribute to the Properties view of the odesign editor. Since this contribution will require a dependency with the framework used for the Properties view of the odesign editor, it will require another plugin named 
+			<code>com.example.awesomeproject.sirius.editor.properties.ext.widgets.table</code> with a dependency to at least:
+		</p>
+		<ul>
+			<li>com.example.awesomeproject.sirius.properties.ext.widgets.table</li>
+			<li>com.example.awesomeproject.sirius.properties.ext.widgets.table.edit</li>
+			<li>org.eclipse.ui.views.properties.tabbed</li>
+			<li>org.eclipse.sirius.editor</li>
+		</ul>
+		<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;?eclipse version="3.4"?&gt;
+&lt;plugin&gt;
+   &lt;extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections"&gt;
+      &lt;propertySections
+            contributorId="org.eclipse.sirius.editor.editorPlugin.SiriusEditorContributor"&gt;
+         &lt;propertySection
+               afterSection="properties.section.widgetDescription.IsEnabledExpression"
+               class="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal.ExtTableDescriptionValueExpressionPropertySection"
+               filter="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal.ExtTableDescriptionValueExpressionFilter"
+               id="properties.section.extTableDescription.valueExpression"
+               tab="viewpoint.tab.general"&gt;
+            &lt;input
+                  type="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.propertiesextwidgetstablee.ExtTableDescription"&gt;
+            &lt;/input&gt;
+         &lt;/propertySection&gt;
+         &lt;propertySection
+               afterSection="properties.section.extTableDescription.valueExpression"
+               class="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal.ExtTableDescriptionOnClickExpressionPropertySection"
+               filter="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal.ExtTableDescriptionOnClickExpressionFilter"
+               id="properties.section.extTableDescription.valueExpression"
+               tab="viewpoint.tab.general"&gt;
+            &lt;input
+                  type="com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.propertiesextwidgetstablee.ExtTableDescription"&gt;
+            &lt;/input&gt;
+         &lt;/propertySection&gt;
+      &lt;/propertySections&gt;
+   &lt;/extension&gt;
+&lt;/plugin&gt;
+
+
+</pre>
+		<p>
+			<br/>Two property sections will be necessary in order to display a text field for the value expression and the on click expression.
+		</p>
+		<pre>package com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.sirius.editor.properties.filters.common.ViewpointPropertyFilter;
+import com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.propertiesextwidgetstablee.PropertiesExtTablePackage;
+
+public class ExtTableDescriptionOnClickExpressionFilter extends ViewpointPropertyFilter {
+
+    @Override
+    protected EStructuralFeature getFeature() {
+        return PropertiesExtTablePackage.eINSTANCE.getExtTableDescription_OnClickExpression();
+    }
+
+    @Override
+    protected boolean isRightInputType(Object arg0) {
+        return arg0 instanceof com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.propertiesextwidgetstablee.ExtTableDescription;
+    }
+
+}
+
+</pre>
+		<p>
+			<br/>Both filter will look almost the same, the only difference will be the structural feature that they will return.
+		</p>
+		<pre>package com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.internal;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.sirius.editor.editorPlugin.SiriusEditor;
+import org.eclipse.sirius.editor.properties.sections.common.AbstractTextWithButtonPropertySection;
+import org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider;
+import org.eclipse.sirius.editor.tools.internal.presentation.TextWithContentProposalDialog;
+import com.example.awesomeproject.sirius.editor.properties.ext.widgets.table.propertiesextwidgetstablee.PropertiesExtTablePackage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+@SuppressWarnings("restriction")
+public class ExtTableDescriptionOnClickExpressionPropertySection extends AbstractTextWithButtonPropertySection {
+
+    @Override
+    protected String getDefaultLabelText() {
+        return "On Click Expression"; //$NON-NLS-1$
+    }
+
+    @Override
+    protected String getLabelText() {
+        String labelText;
+        labelText = super.getLabelText() + "*:"; //$NON-NLS-1$
+        return labelText;
+    }
+
+    @Override
+    public EAttribute getFeature() {
+        return PropertiesExtTablePackage.eINSTANCE.getExtTableDescription_OnClickExpression();
+    }
+
+    @Override
+    protected Object getFeatureValue(String newText) {
+        return newText;
+    }
+
+    @Override
+    protected boolean isEqual(String newText) {
+        return this.getFeatureAsText().equals(newText);
+    }
+
+    @Override
+    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+        super.createControls(parent, tabbedPropertySheetPage);
+
+        text.setToolTipText(getToolTipText());
+        /*
+         * We set the color as it's a InterpretedExpression
+         */
+        text.setBackground(SiriusEditor.getColorRegistry().get("yellow")); //$NON-NLS-1$
+
+        TypeContentProposalProvider.bindPluginsCompletionProcessors(this, text);
+
+        FormData data = new FormData();
+        data.top = new FormAttachment(text, 0, SWT.TOP);
+        data.left = new FormAttachment(nameLabel);
+
+        nameLabel.setFont(SiriusEditor.getFontRegistry().get("required")); //$NON-NLS-1$
+    }
+
+    @Override
+    protected SelectionListener createButtonListener() {
+        return new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                TextWithContentProposalDialog dialog = new TextWithContentProposalDialog(composite.getShell(), ExtTableDescriptionOnClickExpressionPropertySection.this, text.getText());
+                dialog.open();
+                text.setText(dialog.getResult());
+                handleTextModified();
+            }
+        };
+    }
+
+    @Override
+    protected String getPropertyDescription() {
+        return ""; //$NON-NLS-1$
+    }
+
+}
+
+
+</pre>
+		<p>
+			<br/>This property section will create a text field and label in the Properties view of the odesign editor in order to let the Sirius specifier edit the 
+			<code>onClickExpression</code> of the table. Our text field will have the same appear and feature as the regular yellow text fields used by Sirius. 
+		</p>
+		<h3 id="Updatetothepluginsofourbasicwidgetapproach">Update to the plugins of our basic widget approach</h3>
+		<p>Now we can reuse our work in the basic approach but this time with our own specific DSL instead of reusing the CustomElements from the EEF DSL. First we will have to modify the lifecycle manager provider to support our EEFExtTableDescription.</p>
+		<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
+
+import org.eclipse.eef.EEFControlDescription;
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManager;
+import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManagerProvider;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+
+public class TableLifecycleManagerProvider implements IEEFLifecycleManagerProvider {
+    /**
+     * The identifier of the control description supported.
+     */
+    private static final String SUPPORTED_ID = "com.example.awesomeproject.sirius.properties.ext.widgets.table"; //$NON-NLS-1$
+
+    @Override
+    public boolean canHandle(EEFControlDescription controlDescription) {
+        // only support custom widgets with the proper identifier
+        return SUPPORTED_ID.equals(controlDescription.getIdentifier()) &amp;&amp; controlDescription instanceof EEFCustomWidgetDescription;
+    }
+
+    @Override
+    public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager, IInterpreter interpreter, EditingContextAdapter contextAdapter) {
+        if (controlDescription instanceof EEFCustomWidgetDescription) {
+            return new TableLifecycleManager((EEFCustomWidgetDescription) controlDescription, variableManager, interpreter, contextAdapter);
+        }
+        throw new IllegalArgumentException();
+    }
+}
+
+
+</pre>
+		<p>
+			<br/>Now we can just modify our lifecycle manager to support our EEFExtTableDescription.
+		</p>
+		<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
+
+import java.util.function.Consumer;
+
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.EEFWidgetDescription;
+import org.eclipse.eef.common.ui.api.IEEFFormContainer;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
+import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Table;
+
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
+
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
+
+    private EEFCustomWidgetDescription description;
+
+    private TableViewer tableViewer;
+
+    private ComposedAdapterFactory composedAdapterFactory;
+
+    private SelectionListener onClickListener;
+
+    private TableController controller;
+
+    private Consumer&lt;Object&gt; newValueConsumer;
+    
+    public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+            EditingContextAdapter contextAdapter) {
+        super(variableManager, interpreter, contextAdapter);
+        this.description = description;
+    }
+
+    @Override
+    protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+        Table table = formContainer.getWidgetFactory().createTable(parent,
+                SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+        this.tableViewer = new TableViewer(table);
+        this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+        this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+                this.composedAdapterFactory, this.tableViewer)));
+
+        this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+    }
+
+    @Override
+    public void aboutToBeShown() {
+        super.aboutToBeShown();
+
+        this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
+        this.controller.onNewValue(this.newValueConsumer);
+
+        this.onClickListener = new SelectionListener() {
+            @Override
+            public void widgetSelected(SelectionEvent event) {
+                Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+                TableLifecycleManager.this.controller.handleClick(selection);
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent event) {
+                Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+                TableLifecycleManager.this.controller.handleClick(selection);
+            }
+        };
+        this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+    }
+
+    @Override
+    public void refresh() {
+        super.refresh();
+
+        this.controller.refresh();
+    }
+
+    @Override
+    public void aboutToBeHidden() {
+        super.aboutToBeHidden();
+        this.controller.removeValueConsumer();
+        this.newValueConsumer = null;
+
+        this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+        this.onClickListener = null;
+    }
+
+    @Override
+    protected IEEFWidgetController getController() {
+        return this.controller;
+    }
+
+    @Override
+    protected EEFWidgetDescription getWidgetDescription() {
+        return this.description;
+    }
+
+    @Override
+    protected Control getValidationControl() {
+        return this.tableViewer.getTable();
+    }
+
+    @Override
+    public void dispose() {
+        super.dispose();
+
+        this.composedAdapterFactory.dispose();
+    }
+    
+    @Override
+    protected void setEnabled(boolean isEnabled) {
+        this.tableViewer.getTable().setEnabled(isEnabled);
+    }
+}
+
+</pre>
+		<p>
+			<br/>And finally we can easily adapter our controller.
+		</p>
+		<pre>package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
+
+import java.util.function.Consumer;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
+import org.eclipse.eef.core.api.utils.EvalFactory;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+
+public class TableController extends AbstractEEFCustomWidgetController {
+
+    private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
+
+    private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+
+    private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+
+    private Consumer&lt;Object&gt; newValueConsumer;
+    
+    public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+            EditingContextAdapter contextAdapter) {
+        super(description, variableManager, interpreter, contextAdapter);
+    }
+
+    @Override
+    protected EEFCustomWidgetDescription getDescription() {
+        return this.description;
+    }
+
+    @Override
+    public void refresh() {
+        super.refresh();
+        this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+    }
+
+    public void handleClick(Object object) {
+        this.editingContextAdapter.performModelChange(() -&gt; {
+            String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
+
+            Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
+            variables.putAll(this.variableManager.getVariables());
+            variables.put(SELECTION_VARIABLE_NAME, object);
+
+            EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+        });
+    }
+
+    public void onNewValue(Consumer&lt;Object&gt; consumer) {
+        this.newValueConsumer = consumer;
+    }
+
+    public void removeValueConsumer() {
+        this.newValueConsumer = null;
+    }
+}
+
+</pre>
+		<p>
+			<br/>With minimal changes, we can reuse the code of the basic approach in this advanced approach. But now we have the ability to provide the Sirius specifiers with a proper user interface for the manipulation of our widget and we can manipulate our own concepts in the EEF runtime.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-properties_provide_custom_widget_basic.html b/doc/6.0.x/developer/extensions-properties_provide_custom_widget_basic.html
new file mode 100644
index 0000000..aebe5ac
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-properties_provide_custom_widget_basic.html
@@ -0,0 +1,332 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-properties_provide_custom_widget_basic</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusPropertiesBasicCustomWidget">Sirius Properties &#8211; Basic Custom Widget</h1>
+		<h2 id="Goal">Goal</h2>
+		<p>Using the Basic Custom Widget approach, our goal aims at the quick creation of a custom widget with a minimal amount of code even if it creates only a basic user interface for the specifier to use our widget. In this example, we will try to create a simple table widget.</p>
+		<h2 id="Strategy">Strategy</h2>
+		<p>In order to create a custom widget, we will have to think about the two kind of users that will interact with our work, the Sirius specifier and the end-user. With this basic approach, we will create a nice table widget for the end-user but we will be a bit limited regarding what we can offer to the specifier.</p>
+		<h3 id="Specificationofthecustomwidget">Specification of the custom widget</h3>
+		<p>The implementation of the Properties view support in Eclipse Sirius is based on the Eclipse EEF project. While both projects are closely related, EEF can be used without Eclipse Sirius and in order to contribute a basic custom widget, we will only have to contribute to the EEF runtime. Both Eclipse EEF and Eclipse Sirius have the ability to let the specifier define a custom widget with a custom widget description.</p>
+		<p>This custom widget description in Eclipse Sirius is manipulated, like any other widget, in the odesign file. In this widget, you can specify the following properties of your widget:</p>
+		<ul>
+			<li>identifier</li>
+			<li>labelExpression</li>
+			<li>helpExpression</li>
+			<li>isEnabledExpression</li>
+			<li>customExpressions</li>
+			<li>customOperations</li>
+			<li>style</li>
+			<li>conditionalStyles</li>
+		</ul>
+		<p>Most of those properties are inherited from the description of the widget (identifier, labelExpression, helpExpression, isEnabledExpression) and the others are specific to the custom widget description (customExpressions, customOperations, style, conditionalStyles). In order to provide a basic custom widget to a Sirius specifier, you will have to indicate her/him the proper identifier to use for the widget, its expressions and its operations. For example, we will specify that in order to make our custom table widget work, the specifier will have to use a custom widget description with the identifier 
+			<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code>.
+		</p>
+		<p>In order to provide the implementation of our table, we will need to use Eclipse EEF&#8217;s lifecycle manager provider extension point. This extension point let you define the appearance and behavior of a custom widget using a lifecycle manager.</p>
+		<h3 id="Extensioncontribution">Extension contribution</h3>
+		<p>You will have to start by creating an Eclipse plugin named 
+			<code>com.example.awesomeproject.eef.ide.ui.ext.widgets.table</code> which will contain the provider of the lifecycle manager. In Eclipse EEF, a lifecycle manager is used to create the user interface of a widget and manage its lifecycle (add listeners, refresh, remove listeners, dispose etc) while a controller is used to define its behavior. The controller is not compulsary but it is highly recommended. In order to create the lifecycle manager provider, you will have to define the following extension.
+		</p>
+		<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;?eclipse version="3.4"?&gt;
+&lt;plugin&gt;
+   &lt;extension
+         point="org.eclipse.eef.ide.ui.eefLifecycleManagerProvider"&gt;
+      &lt;descriptor
+            class="com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal.TableLifecycleManagerProvider"
+            description="%tableLifecycleManagerProvider.Description"
+            id="com.example.awesomeproject.eef.ide.ui.ext.widgets.table"
+            label="%tableLifecycleManagerProvider.Label"&gt;
+      &lt;/descriptor&gt;
+   &lt;/extension&gt;
+&lt;/plugin&gt;
+
+</pre>
+		<p>
+			<br/>To make your code compile, you will have to add at least some dependencies (Required Bundle) to the following plugins:
+		</p>
+		<ul>
+			<li>org.eclipse.eef</li>
+			<li>org.eclipse.eef.core</li>
+			<li>org.eclipse.eef.ide.ui</li>
+			<li>org.eclipse.sirius.common.interpreter</li>
+		</ul>
+		<h3 id="EEFlifecyclemanagerprovider">EEF lifecycle manager provider</h3>
+		<p>
+			<br/>The properties label and description should both be internationalized and the class should reference a Java class implementing IEEFLifecycleManagerProvider. Our lifecycle manager provider will have two methods, one to indicate if it can handle the description given by the EEF runtime and one to return a proper lifecycle manager for this description. In our case, the only description that we want to support is a custom widget with the identifier 
+			<code>com.example.awesomeproject.sirius.properties.ext.widgets.table</code>.
+		</p>
+		<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
+
+import org.eclipse.eef.EEFControlDescription;
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManager;
+import org.eclipse.eef.ide.ui.api.widgets.IEEFLifecycleManagerProvider;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+
+public class TableLifecycleManagerProvider implements IEEFLifecycleManagerProvider {
+	/**
+	 * The identifier of the control description supported.
+	 */
+	private static final String SUPPORTED_ID = "com.example.awesomeproject.sirius.properties.ext.widgets.table"; //$NON-NLS-1$
+
+	@Override
+	public boolean canHandle(EEFControlDescription controlDescription) {
+		// only support custom widgets with the proper identifier
+		return SUPPORTED_ID.equals(controlDescription.getIdentifier()) &amp;&amp; controlDescription instanceof EEFCustomWidgetDescription;
+	}
+
+	@Override
+	public IEEFLifecycleManager getLifecycleManager(EEFControlDescription controlDescription, IVariableManager variableManager,
+			IInterpreter interpreter, EditingContextAdapter contextAdapter) {
+		if (controlDescription instanceof EEFCustomWidgetDescription) {
+			return new TableLifecycleManager((EEFCustomWidgetDescription) controlDescription, variableManager, interpreter, contextAdapter);
+		}
+		throw new IllegalArgumentException();
+	}
+}
+
+
+</pre>
+		<p>
+			<br/>To create the lifecycle manager, the EEF runtime gives us access to several variables:
+		</p>
+		<ul>
+			<li>controlDescription: The description of the control that we support</li>
+			<li>variableManager: The variables available for this control, we can use it to add new variables and even create child contexts with new variables</li>
+			<li>interpreter: The interpreter used to run expression given by the Sirius specifier</li>
+			<li>contextAdapter: The wrapper used to run modifications of the model with optional support for transactions</li>
+		</ul>
+		<h3 id="EEFlifecyclemanager">EEF lifecycle manager</h3>
+		<p>The lifecycle manager must implements the interface 
+			<code>IEEFLifecycleManager</code> but for a custom widget it is easier to extends on of its default abstract implementation, in our case 
+			<code>org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager</code>.
+		</p>
+		<pre>package com.example.awesomeproject.eef.ide.ui.ext.widgets.table.internal;
+
+import java.util.function.Consumer;
+
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.EEFWidgetDescription;
+import org.eclipse.eef.common.ui.api.IEEFFormContainer;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.core.api.controllers.IEEFWidgetController;
+import org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Table;
+
+import com.example.awesomeproject.eef.core.ext.widgets.table.internal.TableController;
+
+public class TableLifecycleManager extends AbstractEEFWidgetLifecycleManager {
+
+    private EEFCustomWidgetDescription description;
+
+    private TableViewer tableViewer;
+
+    private ComposedAdapterFactory composedAdapterFactory;
+
+    private SelectionListener onClickListener;
+
+    private TableController controller;
+
+    private Consumer&lt;Object&gt; newValueConsumer;
+    
+    public TableLifecycleManager(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+            EditingContextAdapter contextAdapter) {
+        super(variableManager, interpreter, contextAdapter);
+        this.description = description;
+    }
+
+    @Override
+    protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
+        Table table = formContainer.getWidgetFactory().createTable(parent,
+                SWT.READ_ONLY | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.SINGLE);
+        this.tableViewer = new TableViewer(table);
+        this.composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        this.tableViewer.setContentProvider(ArrayContentProvider.getInstance());
+        this.tableViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(
+                this.composedAdapterFactory, this.tableViewer)));
+
+        this.controller = new TableController(description, variableManager, interpreter, editingContextAdapter);
+    }
+
+    @Override
+    public void aboutToBeShown() {
+        super.aboutToBeShown();
+
+        this.newValueConsumer = (newValue) -&gt; this.tableViewer.setInput(newValue);
+        this.controller.onNewValue(this.newValueConsumer);
+
+        this.onClickListener = new SelectionListener() {
+            @Override
+            public void widgetSelected(SelectionEvent event) {
+                Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+                TableLifecycleManager.this.controller.handleClick(selection);
+            }
+
+            @Override
+            public void widgetDefaultSelected(SelectionEvent event) {
+                Object selection = ((IStructuredSelection) TableLifecycleManager.this.tableViewer.getSelection()).getFirstElement();
+                TableLifecycleManager.this.controller.handleClick(selection);
+            }
+        };
+        this.tableViewer.getTable().addSelectionListener(this.onClickListener);
+    }
+
+    @Override
+    public void refresh() {
+        super.refresh();
+
+        this.controller.refresh();
+    }
+
+    @Override
+    public void aboutToBeHidden() {
+        super.aboutToBeHidden();
+        this.controller.removeValueConsumer();
+        this.newValueConsumer = null;
+
+        this.tableViewer.getTable().removeSelectionListener(this.onClickListener);
+        this.onClickListener = null;
+    }
+
+    @Override
+    protected IEEFWidgetController getController() {
+        return this.controller;
+    }
+
+    @Override
+    protected EEFWidgetDescription getWidgetDescription() {
+        return this.description;
+    }
+
+    @Override
+    protected Control getValidationControl() {
+        return this.tableViewer.getTable();
+    }
+
+    @Override
+    public void dispose() {
+        super.dispose();
+
+        this.composedAdapterFactory.dispose();
+    }
+    
+    @Override
+    protected void setEnabled(boolean isEnabled) {
+        this.tableViewer.getTable().setEnabled(isEnabled);
+    }
+}
+
+</pre>
+		<p>
+			<br/>The lifecycle manager will first create the controls of the table widget and it will initialized a controller for the table.
+		</p>
+		<h3 id="EEFcontroller">EEF controller</h3>
+		<p>The controller is not required but it will handle several keys problems for us, for example by extending the proper abstract class it can handle the validation rules of your widget. For a basic custom widget, it is highly recommended to extend 
+			<code>org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController</code>. The controller does not have any reason to depend on the user interface, thus it will be created in another Eclipse plugin which will be usable without any dependency to an user interface specific plugins. This plugin will be named 
+			<code>com.example.awesomeproject.eef.core.ext.widgets.table</code>. It will depend on at least the following plugins:
+		</p>
+		<ul>
+			<li>org.eclipse.eef</li>
+			<li>org.eclipse.eef.core</li>
+			<li>org.eclipse.sirius.common.interpreter</li>
+		</ul>
+		<pre>package com.example.awesomeproject.eef.core.ext.widgets.table.internal;
+
+import java.util.function.Consumer;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.eef.EEFCustomWidgetDescription;
+import org.eclipse.eef.core.api.EditingContextAdapter;
+import org.eclipse.eef.core.api.controllers.AbstractEEFCustomWidgetController;
+import org.eclipse.eef.core.api.utils.EvalFactory;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+
+public class TableController extends AbstractEEFCustomWidgetController {
+
+    private static final String VALUE_EXPRESSION_ID = "valueExpression"; //$NON-NLS-1$
+
+    private static final String ON_CLICK_EXPRESSION_ID = "onClickExpression"; //$NON-NLS-1$
+
+    private static final String SELECTION_VARIABLE_NAME = "selection"; //$NON-NLS-1$
+
+    private Consumer&lt;Object&gt; newValueConsumer;
+    
+    public TableController(EEFCustomWidgetDescription description, IVariableManager variableManager, IInterpreter interpreter,
+            EditingContextAdapter contextAdapter) {
+        super(description, variableManager, interpreter, contextAdapter);
+    }
+
+    @Override
+    protected EEFCustomWidgetDescription getDescription() {
+        return this.description;
+    }
+
+    @Override
+    public void refresh() {
+        super.refresh();
+        this.newEval().call(this.getCustomExpression(VALUE_EXPRESSION_ID).get(), this.newValueConsumer);
+    }
+
+    public void handleClick(Object object) {
+        this.editingContextAdapter.performModelChange(() -&gt; {
+            String onClickExpression = this.getCustomExpression(ON_CLICK_EXPRESSION_ID).get();
+
+            Map&lt;String, Object&gt; variables = new HashMap&lt;String, Object&gt;();
+            variables.putAll(this.variableManager.getVariables());
+            variables.put(SELECTION_VARIABLE_NAME, object);
+
+            EvalFactory.of(this.interpreter, variables).call(onClickExpression);
+        });
+    }
+
+    public void onNewValue(Consumer&lt;Object&gt; consumer) {
+        this.newValueConsumer = consumer;
+    }
+
+    public void removeValueConsumer() {
+        this.newValueConsumer = null;
+    }
+}
+
+</pre>
+		<p>
+			<br/>The controller here will handle two different situations. Firstly, it will react to the refresh in order to compute the new value of the table widget. For that, it will look for an expression with the identifier 
+			<code>valueExpression</code> and it will execute it. Once executed, it will give its result to the 
+			<code>newValueConsumer</code>. In the table lifecycle manager, we have set, in the method 
+			<code>aboutToBeShown</code>, this new value consumer to a lambda which will set a new input for the table. Each time that the lifecycle manager will be refreshed by the framework, its call to 
+			<code>super.refresh()</code> will trigger the refresh of the controller (among other things) which will compute the new value to display and given this value to the callback (consumer) registered by the lifecycle manager.
+		</p>
+		<p>Secondly, the controller will be used to handle the click in the table. For that it has a method named 
+			<code>handleClick</code> which will be called with the selected object in the table. The controller will then evaluate an expression with the identifier 
+			<code>onClickExpression</code> with the variables available along with an additional variable specifically for this use case. The additional variable named 
+			<code>selection</code> will here be used to give access to the current selection to the 
+			<code>onClickExpression</code>.
+		</p>
+		<p>Now your end users can use your two plugins to create tables in their Properties view using the custom widget description.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_celleditor.html b/doc/6.0.x/developer/extensions-provide_celleditor.html
new file mode 100644
index 0000000..36bd293
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_celleditor.html
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_celleditor</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvideCustomCellEditors">Sirius &#8211; Provide Custom Cell Editors</h1>
+		<h2 id="SiriusSemanticPropertiesView">Sirius Semantic Properties View</h2>
+		<p>You can override the default CellEditors in the Sirius semantic properties views by implementing 
+			<code>org.eclipse.sirius.ext.emf.ui.ICellEditorProvider</code> and provide it through the 
+			<code>org.eclipse.sirius.ui.siriuspropertiescelleditor</code> extension point.
+		</p>
+		<p>
+			<img border="0" src="images/propertiesView.png"/>
+			<br/>
+			<em>The semantic properties view</em>
+		</p>
+		<h2 id="OtherEditorsPropertiesView">Other Editors Properties View</h2>
+		<p>This extension mechanism can also be used for other editors properties view. That can be done by providing the 
+			<code>org.eclipse.sirius.ui.tools.api.properties.SiriusExtensiblePropertySource</code> instead of the default EMF one by replacing the 
+			<code>propertySourceProvider</code> in the generated editor.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom-arrange-all.html b/doc/6.0.x/developer/extensions-provide_custom-arrange-all.html
new file mode 100644
index 0000000..46b5190
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom-arrange-all.html
@@ -0,0 +1,885 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom-arrange-all</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ProvidingacustomdiagramlayoutalgorithmArrangeAll">Providing a custom diagram layout algorithm (&#8220;Arrange All&#8221;)</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#ProvidingacustomdiagramlayoutalgorithmArrangeAll">Providing a custom diagram layout algorithm ("Arrange All")</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#TheArrangeAllfunctionalityinshort">The Arrange All functionality in short</a>
+					</li>
+					<li>
+						<a href="#TheArrangeAllconceptasimplementedbyGMF">The Arrange All concept as implemented by GMF</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#Theviewsandeditparts">The views and edit parts</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#SiriusLayoutingAPI">Sirius Layouting API</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#siriusLayoutProviders">Sirius Layout providers</a>
+							</li>
+							<li>
+								<a href="#Theviewordering">The view ordering</a>
+							</li>
+							<li>
+								<a href="#Writeyourcustomlayoutalgorithm">Write your custom layout algorithm</a>
+							</li>
+							<li>
+								<a href="#IntegrateyourcustomlayoutalgorithmtoSirius">Integrate your custom layout algorithm to Sirius </a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="TheArrangeAllfunctionalityinshort">The Arrange All functionality in short</h2>
+		<p>The arrange-all functionality is available in Sirius diagram editors in the form of a button and a context menu:</p>
+		<p>
+			<img border="0" src="images/arrange-all/arrange-all-ui.png"/>
+		</p>
+		<p>Its effect is to layout the selected diagram elements (or the whole diagram if no elements are selected) based on the layout algorithm defined for the diagram, or using a default, generic algorithm if nothing is specified. </p>
+		<p>By default, there are two different layout algorithm that can be configured in the VSM for a diagram:</p>
+		<ul>
+			<li>The 
+				<code>Ordered Tree Layout</code> algorithm: useful to represent elements in a hierarchical way. 
+			</li>
+			<li>The 
+				<code>Composite Layout</code> algorithm: used to customize specific aspects of the default algorithm, i.e. the general layout orientation and the padding between elements.
+			</li>
+		</ul>
+		<img border="0" src="images/arrange-all/arrange-all-vsm.png"/>
+		<p>If none of these algorithms fit your needs, Sirius provides two extension points 
+			<code>org.eclipse.sirius.diagram.ui.layoutProvider</code> and 
+			<code>org.eclipse.sirius.diagram.ui.viewOrderingProvider</code> as well as an API to ease the writing of your own layout algorithms and their usage in Sirius diagram editors.
+		</p>
+		<p>This API reuse the GMF &#8220;Arrange All&#8221; API and augments it with features needed by Sirius layout algorithms like:</p>
+		<ul>
+			<li>The need to take in consideration pinned diagram elements</li>
+			<li>The need to take in consideration bordered nodes connected to edges</li>
+		</ul>
+		<h2 id="TheArrangeAllconceptasimplementedbyGMF">The Arrange All concept as implemented by GMF</h2>
+		<p>GMF provides basic API and implementations to ease the customization of the &#8220;Arrange All&#8221; mechanism. It also implements a complete algorithm that is based on the graphical elements.</p>
+		<p>The top level type of this this API is 
+			<code>ILayoutNodeProvider</code> :
+		</p>
+		<img border="0" src="images/arrange-all/arrange-all-iproviderApi.png"/>
+		<p>This interface is very generic, but GMF provides abstract classes that handle the low-level work while letting you define only the layouting business rules:</p>
+		<img border="0" src="images/arrange-all/arrange-all-ilayoutNodeproviderApi.png"/>
+		<p>This can be done by creating a component inheriting the abstract class 
+			<code>AbstractLayoutEditPartProvider</code> and implementing its methods:
+		</p>
+		<ul>
+			<li>
+				<code>boolean provides(IOperation operation)</code>  from 
+				<code>IProvider</code> super interface
+			</li>
+			<li>
+				<code>Command layoutEditParts(GraphicalEditPart containerEditPart, IAdaptable layoutHint)</code>
+			</li>
+			<li>
+				<code>Command layoutEditParts(selectedObjectst List, IAdaptable layoutHint)</code>
+			</li>
+		</ul>
+		<p>The 
+			<code>provides</code> operation is meant to return true if the class can arrange the diagram for the specified operation. 
+		</p>
+		<p>The 
+			<code>layoutEditParts</code> operations will return the commands that will actually be in charge of arranging the diagrams' edit parts. The first one takes the main container that is to be arranged while the latter accepts a list of edit parts to arrange. 
+		</p>
+		<p>The implementation of those three methods forms your layout algorithm.</p>
+		<p>With this API comes an extension point 
+			<code>org.eclipse.gmf.runtime.diagram.ui.layoutProviders</code>. It allows your own 
+			<code>AbstractLayoutEditPart</code> layout algorithm to be used. 
+		</p>
+		<h3 id="Theviewsandeditparts">The views and edit parts</h3>
+		<p>When doing layouting with GMF based tools like Sirius you will hear about views and edit parts. It is important to understand what they are.</p>
+		<p>The views are persisted model elements that when interpreted represent your diagram visually. You have the 
+			<code>Node</code>, 
+			<code>Edge</code>, 
+			<code>Style</code>, etc...
+		</p>
+		<p>They contain all visual information like the position, the size of the element, its color, etc... 
+			<br/>Edit parts ties the model (the views) to a visual representation with a one on one relationship. One edit part points at one view. They are responsible for making changes to the model and interpret and display graphically the view.
+		</p>
+		<h2 id="SiriusLayoutingAPI">Sirius Layouting API</h2>
+		<p>The Sirius Layouting API simplifies the writing of a custom layout algorithm by providing different layout providers specific to Sirius context that you can reuse easily in addition of your own layout algorithm if it does not conflict with these. </p>
+		<p>It also provides utility methods that you can find useful</p>
+		<p>The Sirius API for layouting Sirius diagrams is the following:</p>
+		<p>
+			<img border="0" src="images/arrange-all/arrange-all-layoutingAPI.png"/>
+		</p>
+		<h3 id="siriusLayoutProviders">Sirius Layout providers</h3>
+		<p>Sirius defines and already uses various different layout providers in different contexts.</p>
+		<p>Here is a list of all of those with a basic description of each:</p>
+		<h5 id="DefaultLayoutProvider">DefaultLayoutProvider</h5>
+		<p>It is used by Sirius as entry point to dispatch arrange requests on a Sirius diagram to registered layout providers. The dispatch takes in consideration layout algorithm specified in the VSM and layout providers provided from the Sirius extension point 
+			<code>org.eclipse.sirius.diagram.ui.layoutProvider</code>.
+		</p>
+		<h5 id="LineLayoutProvider">LineLayoutProvider</h5>
+		<p>Lays out all views on a single line (either vertical or horizontal). </p>
+		<h5 id="GridLayoutProvider">GridLayoutProvider</h5>
+		<p>Lays out all views as a grid.</p>
+		<h5 id="InlineEdgeLayoutProvider">InlineEdgeLayoutProvider</h5>
+		<p>Lays out connections alongside their source and target nodes (useful on the sequence diagram for example).</p>
+		<h5 id="ArrangeSelectionLayoutProvider">ArrangeSelectionLayoutProvider</h5>
+		<p>This provider only purpose is to delegate arrangement to attached layout provider after having added information about not selected parts in the layout hint. </p>
+		<p>It is used for example with our composite layout providers to keep fixed the not selected parts and to avoid putting other selected parts on it when layouting. </p>
+		<p>It is used primary by default provider whenever the arrange-all action is called because the arrangement can be done on a selection and not on all diagram elements.</p>
+		<h5 id="ArrangeAllOnlyLayoutProvider">ArrangeAllOnlyLayoutProvider</h5>
+		<p>This provider is used to delegate layouting to attached provider only when an arrange-all is done on a diagram and not an arrange selection. </p>
+		<p>When used as primary provider, the arrange selection action is not available in the menu of a Sirius editor using this provider. </p>
+		<p>It is used for example in the 
+			<code>OrderedTreeLayoutProvider</code> where it does not make sense to make a tree of just some elements because the all concept is to have a complete tree representation.
+		</p>
+		<h5 id="PinnedElementLayoutProvider">PinnedElementLayoutProvider</h5>
+		<p>This provider is designed to work with another layout provider. When its attached layout provider has done its layouting part, this provider iterates on all diagram elements that are pinned (should not have its position changes by an automatic layout) to put it back at its original position. In case of visual overlap conflict with a non-pinned element, the non-pinned element is move near the pinned one where no overlap is visible.</p>
+		<h5 id="CompoundLayoutProvider">CompoundLayoutProvider</h5>
+		<p>This provider allows to compose different layout providers into a compound one. It is useful to reuse some layouting rules that does not conflict with others needed ones.</p>
+		<p>For example the providers 
+			<code>CompositeDownTopLayoutProvider</code> and 
+			<code>PinnedElementLayoutProvider</code> can be attached to a compound instance. Then those providers are called in their attach order one after another to do their layouting parts. It avoids the composite provider to duplicate code to handle pinned elements.
+		</p>
+		<h5 id="BorderedItemAwareLayoutProvider">BorderedItemAwareLayoutProvider</h5>
+		<p>This provider arranges all the bordered nodes which are connected to one edge. It reduces the path of the edge between each extremity. For example:</p>
+		<img border="0" src="images/arrange-all/arrange-all-border1.png"/>
+		<p>Becomes </p>
+		<img border="0" src="images/arrange-all/arrange-all-border2.png"/>
+		<h3 id="Theviewordering">The view ordering</h3>
+		<h4 id="API">API</h4>
+		<p>The view ordering is an API used by layout algorithms provided by Sirius. It allows to define a sub class of 
+			<code>ViewOrdering</code> that will sort children views of a parent view. The layouting will be done on sorted views instead of the original order in the layout provider.
+		</p>
+		<p>For example, if I use the 
+			<code>LineLayoutProvider</code> with default view ordering component in a diagram with two elements, views will be aligned in their natural iteration order:
+		</p> 
+		<img border="0" src="images/arrange-all/arrange-all-viewOrdering.png"/>
+		<p>If I define a view ordering component that reorder view in the lexicographic order, views will be aligned accordingly:</p>  
+		<img border="0" src="images/arrange-all/arrange-all-viewOrdering2.png"/>
+		<p>This mechanism avoid to rewrite a layout provider if the only thing that should be changed is the order the layout provider lays out its views.</p>
+		<p>Its architecture is the following:</p>
+		<img border="0" src="images/arrange-all/arrange-all-viewOrderingArchitecture.png"/>
+		<h4 id="Compatibleproviders">Compatible providers</h4>
+		<p>Layout providers need to sort view by using the view ordering framework so your view ordering component can be used. The Sirius providers using this framework are the following:</p>
+		<ul>
+			<li>
+				<code>GridLayoutProvider</code>
+			</li>
+			<li>
+				<code>InlineEdgeLAyoutProvider</code>
+			</li>
+			<li>
+				<code>LineLAyoutProvider</code>
+			</li>
+		</ul>
+		<h4 id="WritingaViewOrdering">Writing a ViewOrdering</h4>
+		<p>To contribute a 
+			<code>ViewOrdering</code> that should be used in a Sirius provider, you have to create a sub class of 
+			<code>AbstractViewOrdering</code> or 
+			<code>AbstractViewOrdering</code> or 
+			<code>ViewOrdering</code> if you need to do an ordering different from what Sirius offers with its abstract classes.
+			<br/>Sirius abstract classes offers ordering only on Node views by default.
+		</p>
+		<p>For example the lexicographic view ordering component would be the following:</p>
+		<pre><code>public class LexicographicViewOrdering extends AbstractViewOrdering {
+
+        @Override
+        protected List&lt;View&gt; sortViews(List&lt;View&gt; views) {
+            Comparator&lt;View&gt; comparing = Comparator.comparing(new Function&lt;View, String&gt;() {
+                @Override
+                public String apply(View t) {
+                    DDiagramElement element = (DDiagramElement) t.getElement();
+                    return element.getName();
+                }
+            });
+            Collections.sort(views, comparing);
+            return views;
+        }
+    }
+
+</code></pre>
+		<h4 id="ContributingyourViewOrderingwithextensionpoint">Contributing your ViewOrdering with extension point</h4>
+		<p>Once your view ordering component has been written you have to make Sirius aware of it so it can be used.
+			<br/>To do that Sirius provides an extension point 
+			<code>org.eclipse.sirius.diagram.viewOrderingProvider</code>. 
+			<br/>It allows to register a 
+			<code>ViewOrderingProvider</code> that will provide your view ordering component:
+		</p>
+		<img border="0" src="images/arrange-all/arrange-all-viewOrderingProvider.png"/>
+		<p>It contains the following methods:
+			<br/>- 
+			<code>provides</code>:  tell Sirius if your ordering component should be used when layouting views associated to the given mapping.
+			<br/>- 
+			<code>getViewOrdering</code>: tell Sirius what view ordering component to use to order views when the provides method returns true.
+		</p>
+		<p>For example with the lexicographic you will have:</p> 
+		<img border="0" src="images/arrange-all/arrange-all-viewOrderingExtensionPoint.png"/>
+		<pre><code>&lt;extension point="org.eclipse.sirius.diagram.viewOrderingProvider"&gt;
+   &lt;viewOrderingProvider providerClass="org.eclipse.sirius.diagram.ui.tools.internal.providers.LexicographicViewOrderingProvider" /&gt;
+&lt;/extension&gt;
+
+
+</code></pre>
+		<p>The 
+			<code>LexicographicViewOrderingProvider</code> code would be:
+		</p>
+		<pre><code>public class LexicographicViewOrderingProvider implements ViewOrderingProvider {
+
+    public LexicographicViewOrderingProvider() {
+    }
+
+    @Override
+    public boolean provides(DiagramElementMapping mapping) {
+        return true;
+    }
+
+    @Override
+    public ViewOrdering getViewOrdering(DiagramElementMapping mapping) {
+        return new LexicographicViewOrdering();
+    }
+}
+
+
+</code></pre>
+		<h3 id="Writeyourcustomlayoutalgorithm">Write your custom layout algorithm</h3>
+		<p>To create your own layout algorithm with Sirius API you have to subclass one Sirius abstract class depending on what you need to use:</p>
+		<h5 id="DefaultLayoutProvider2">DefaultLayoutProvider</h5>
+		<p>This provider is the recommended one to use if you don&#8217;t need the liberty of composition of others below. If you want to have the capability for specifiers to be able to configure your layout algorithm directly in the VSM you must use this provider.</p>
+		<p>For example the ELK layout algorithms if installed are using it:</p>
+		<pre><code>/**
+ * Layout node provider allowing to apply an ELK layout algorithm while
+ * arranging diagram elements.
+ * 
+ * @author &lt;a href=mailto:pierre.guilet@obeo.fr&gt;Pierre Guilet&lt;/a&gt;
+ *
+ */
+public class ELKLayoutNodeProvider extends DefaultLayoutProvider {
+
+    @Override
+    public Command layoutEditParts(final List selectedObjects, final IAdaptable layoutHint) {
+        Injector injector = LayoutConnectorsService.getInstance().getInjector(null, selectedObjects);
+        ElkDiagramLayoutConnector connector = injector.getInstance(ElkDiagramLayoutConnector.class);
+        LayoutMapping layoutMapping = connector.buildLayoutGraph(null, selectedObjects);
+        connector.layout(layoutMapping);
+        connector.transferLayout(layoutMapping);
+        return connector.getApplyCommand(layoutMapping);
+    }
+
+}
+
+</code></pre>
+		<h5 id="AbstractLayoutEditPartProvider">AbstractLayoutEditPartProvider</h5>
+		<p>This class should be extended if you do not need what AbstractLayoutProvider provides.
+			<br/>Its API is:
+		</p>
+		<p>
+			<img border="0" src="images/arrange-all/arrange-all-abstractLayoutEditPart.png"/>
+		</p>
+		<p>Only the abstract methods 
+			<code>layoutEditParts</code> should be override. It is these methods that do the layouting by providing commands modifying underlying views information.
+		</p>
+		<h5 id="AbstractLayoutProvider">AbstractLayoutProvider</h5>
+		<p>This class should be extended if your layouting algorithm is meant to be used in addition to others during a same layouting pass and if you need to be aware of the bound changes produced by the other algorithms. It also should be used if you need all the utility methods regarding view bounds manipulation provided by this abstract class.</p>
+		<p>When sub classing this one, you only have to implement 
+			<code>layoutEditParts(List, IAdaptable)</code> and to override 
+			<code>provides(IOperation)</code> methods.
+		</p>
+		<p>For example the 
+			<code>LineLayoutProvider</code> have the following code:
+		</p>
+		<pre><code>public class LineLayoutProvider extends AbstractLayoutProvider {
+
+    /** The default padding. */
+    private static final Insets DEFAULT_PADDING = new Insets(30, 30, 30, 30);
+
+    /**
+     * &lt;code&gt;true&lt;/code&gt; if the line is horizontal, &lt;code&gt;false&lt;/code&gt; if the line is vertical.
+     */
+    private boolean horizontal = true;
+
+    /**
+     * &lt;code&gt;true&lt;/code&gt; if the line is horizontal, &lt;code&gt;false&lt;/code&gt; if the line is vertical.
+     * 
+     * @param horizontal
+     *            &lt;code&gt;true&lt;/code&gt; if the line is horizontal, &lt;code&gt;false&lt;/code&gt; if the line is vertical.
+     */
+    public void setHorizontal(final boolean horizontal) {
+        this.horizontal = horizontal;
+    }
+
+    @Override
+    public Command layoutEditParts(final List selectedObjects, final IAdaptable layoutHint) {
+        final Iterator&lt;?&gt; iterEditParts = selectedObjects.iterator();
+        final List&lt;View&gt; views = new ArrayList&lt;View&gt;(selectedObjects.size());
+        final Map&lt;View, ShapeEditPart&gt; viewsToEditPartMap = new HashMap&lt;View, ShapeEditPart&gt;();
+        while (iterEditParts.hasNext()) {
+            final Object next = iterEditParts.next();
+            if (next instanceof ShapeEditPart &amp;&amp; !(next instanceof IBorderItemEditPart)) {
+                final ShapeEditPart shapeEditPart = (ShapeEditPart) next;
+                final View view = shapeEditPart.getNotationView();
+                viewsToEditPartMap.put(view, shapeEditPart);
+                views.add(view);
+            } else {
+                iterEditParts.remove();
+            }
+        }
+        ViewOrdering viewOrdering = ViewOrderingHint.getInstance().consumeViewOrdering(getContainerEditPart(selectedObjects).getNotationView());
+        if (viewOrdering == null) {
+            // use a simple view ordering ... too bad.
+            viewOrdering = new SimpleViewOrdering();
+        }
+
+        viewOrdering.setViews(views);
+        final List&lt;View&gt; sortedViews = viewOrdering.getSortedViews();
+        final List&lt;ShapeEditPart&gt; sortedEditParts = new ArrayList&lt;ShapeEditPart&gt;(sortedViews.size());
+        final Iterator&lt;View&gt; iterSortedViews = sortedViews.listIterator();
+        while (iterSortedViews.hasNext()) {
+            final View currentView = iterSortedViews.next();
+            final ShapeEditPart currentEditPart = viewsToEditPartMap.get(currentView);
+            sortedEditParts.add(currentEditPart);
+        }
+        return createNodeChangeBoundCommands(sortedEditParts);
+    }
+
+    /**
+     * Create the change bounds commands.
+     * 
+     * @param sortedNodes
+     *            the nodes to move.
+     * @return the change bounds command.
+     */
+    protected Command createNodeChangeBoundCommands(final List&lt;ShapeEditPart&gt; sortedNodes) {
+        final CompoundCommand result = new CompoundCommand();
+        final Iterator&lt;ShapeEditPart&gt; iterEditParts = sortedNodes.iterator();
+        int currentX = 0;
+        while (iterEditParts.hasNext()) {
+            final ShapeEditPart shapeEditPart = iterEditParts.next();
+            if (!(shapeEditPart instanceof IBorderItemEditPart)) {
+
+                final View view = shapeEditPart.getNotationView();
+                // the zoom.
+                double scale = 1.0;
+                if (shapeEditPart.getRoot() instanceof DiagramRootEditPart) {
+                    final ZoomManager zoomManager = ((DiagramRootEditPart) shapeEditPart.getRoot()).getZoomManager();
+                    scale = zoomManager.getZoom();
+                }
+                //
+                // Compute request data.
+                final Point ptOldLocation = shapeEditPart.getFigure().getBounds().getLocation();
+                // shapeEditPart.getFigure().translateToAbsolute(ptOldLocation);
+                final int locationX = horizontal ? currentX + this.getPadding().left : this.getPadding().left;
+                final int locationY = horizontal ? this.getPadding().top : currentX + this.getPadding().top;
+                final Point ptLocation = new Point(locationX, locationY);
+                final Dimension delta = ptLocation.getDifference(ptOldLocation);
+
+                final Object existingRequest = this.findRequest(view, org.eclipse.gef.RequestConstants.REQ_MOVE);
+                int step = 0;
+                if (existingRequest == null) {
+                    final ChangeBoundsRequest request = new ChangeBoundsRequest(org.eclipse.gef.RequestConstants.REQ_MOVE);
+                    request.setEditParts(shapeEditPart);
+                    request.setMoveDelta(new PrecisionPoint(delta.width * scale, delta.height * scale));
+                    request.setLocation(new PrecisionPoint(ptLocation.x * scale, ptLocation.y * scale));
+                    step = this.horizontal ? getBounds(shapeEditPart).width : getBounds(shapeEditPart).height;
+
+                    final Command cmd = this.buildCommandWrapper(request, shapeEditPart);
+                    if (cmd != null &amp;&amp; cmd.canExecute()) {
+                        result.add(cmd);
+                        // this.getViewsToChangeBoundsRequest().put(view,
+                        // request);
+                    }
+                } else if (existingRequest instanceof ChangeBoundsRequest) {
+                    final ChangeBoundsRequest changeBoundsRequest = (ChangeBoundsRequest) existingRequest;
+                    changeBoundsRequest.setMoveDelta(new PrecisionPoint(delta.width * scale, delta.height * scale));
+                    changeBoundsRequest.setLocation(new PrecisionPoint(ptLocation.x * scale, ptLocation.y * scale));
+
+                    step = this.horizontal ? getBounds(shapeEditPart).width : getBounds(shapeEditPart).height;
+                }
+                currentX += horizontal ? step + getPadding().right + getPadding().left : step + this.getPadding().bottom + this.getPadding().top;
+
+                // check the size of the container.
+                EditPart container = shapeEditPart.getParent();
+                while (container instanceof CompartmentEditPart) {
+                    container = container.getParent();
+                }
+                if (container instanceof ShapeEditPart) {
+                    final ShapeEditPart containerEditPart = (ShapeEditPart) container;
+
+                    // The minimum witdh
+                    final int minWidth = this.horizontal ? ((getPadding().left + getPadding().right) * sortedNodes.size()) + (getNodeMaxWidth(sortedNodes) * sortedNodes.size())
+                            : getPadding().left + getNodeMaxWidth(sortedNodes) + getPadding().right;
+                    // The minimum height
+                    final int minHeight = this.horizontal ? getPadding().top + this.getNodeMaxHeight(sortedNodes) + this.getPadding().bottom
+                            : ((getPadding().top + getPadding().bottom) * sortedNodes.size()) + (this.getNodeMaxHeight(sortedNodes) * sortedNodes.size());
+
+                    final Dimension minDimension = new Dimension(minWidth, minHeight);
+
+                    final Dimension difference = minDimension.getShrinked(containerEditPart.getFigure().getBounds().getSize());
+                    if (difference.width &gt; 0 || difference.height &gt; 0) {
+                        final Object existingContainerRequest = this.findRequest(containerEditPart, org.eclipse.gef.RequestConstants.REQ_RESIZE); // ;this.getViewsToChangeBoundsRequest().get(containerEditPart.getNotationView());
+                        createChangeBoundsCommand(result, existingContainerRequest, containerEditPart, difference, scale);
+                    }
+
+                }
+
+            }
+        }
+        return result;
+    }
+
+    private void createChangeBoundsCommand(final CompoundCommand compoundCommand, final Object existingContainerRequest, final ShapeEditPart containerEditPart, final Dimension difference,
+            final double scale) {
+
+        if (existingContainerRequest == null) {
+            final ChangeBoundsRequest changeBoundsRequest = new ChangeBoundsRequest();
+            changeBoundsRequest.setEditParts(containerEditPart);
+            changeBoundsRequest.setResizeDirection(PositionConstants.SOUTH_EAST);
+            changeBoundsRequest.setSizeDelta(new Dimension((int) (difference.width * scale), (int) (difference.height * scale)));
+            changeBoundsRequest.setLocation(new Point(0, 0));
+            changeBoundsRequest.setType(org.eclipse.gef.RequestConstants.REQ_RESIZE);
+            final Command cmd = this.buildCommandWrapper(changeBoundsRequest, containerEditPart);
+            if (cmd.canExecute()) {
+                compoundCommand.add(cmd);
+                // this.getViewsToChangeBoundsRequest().put(containerEditPart.getNotationView(),
+                // changeBoundsRequest);
+            }
+        } else if (existingContainerRequest instanceof ChangeBoundsRequest) {
+            final ChangeBoundsRequest changeBoundsRequest = (ChangeBoundsRequest) existingContainerRequest;
+            changeBoundsRequest.setResizeDirection(PositionConstants.SOUTH_EAST);
+            changeBoundsRequest.setSizeDelta(new Dimension((int) (difference.width * scale), (int) (difference.height * scale)));
+        }
+    }
+
+    /**
+     * Return the maximum width of all nodes (instances of {@link ShapeEditPart} ) that are in the specified list.
+     * 
+     * @param nodes
+     *            the nodes.
+     * @return the maximum width of all nodes that are in the specified list.
+     */
+    protected int getNodeMaxWidth(final List&lt;ShapeEditPart&gt; nodes) {
+        int max = -1;
+        for (final ShapeEditPart shapeEditPart : nodes) {
+            final Object existingRequest = this.getViewsToChangeBoundsRequest().get(shapeEditPart.getNotationView());
+            int width = shapeEditPart.getFigure().getBounds().width;
+            if (existingRequest instanceof ChangeBoundsRequest) {
+                width = width + ((ChangeBoundsRequest) existingRequest).getSizeDelta().width;
+            }
+            if (width &gt; max) {
+                max = width;
+            }
+        }
+        return max;
+    }
+
+    /**
+     * Return the maximum height of all nodes (instances of {@link ShapeEditPart}) that are in the specified list.
+     * 
+     * @param nodes
+     *            the nodes.
+     * @return the maximum width of all nodes that are in the specified list.
+     */
+    protected int getNodeMaxHeight(final List&lt;ShapeEditPart&gt; nodes) {
+        int max = -1;
+        for (final ShapeEditPart shapeEditPart : nodes) {
+            final int height = this.getBounds(shapeEditPart).height;
+            if (height &gt; max) {
+                max = height;
+            }
+        }
+        return max;
+    }
+
+    @Override
+    public boolean provides(final IOperation operation) {
+        final View cview = getContainer(operation);
+        if (cview == null) {
+            return false;
+        }
+        final IAdaptable layoutHint = ((ILayoutNodeOperation) operation).getLayoutHint();
+        final String layoutType = layoutHint.getAdapter(String.class);
+        return LayoutType.DEFAULT.equals(layoutType);
+    }
+
+    /**
+     * Return the padding to use.
+     * 
+     * @return the padding to use.
+     */
+    public Insets getPadding() {
+        return DEFAULT_PADDING;
+    }
+
+    /**
+     * Get the container edit part of an object list. Currently the function takes only the first object of the list
+     * 
+     * @param selectedObjects
+     *            the selected object
+     * @return the container edit part
+     */
+    protected IGraphicalEditPart getContainerEditPart(final List&lt;EditPart&gt; selectedObjects) {
+        if (selectedObjects != null &amp;&amp; !selectedObjects.isEmpty()) {
+            return (IGraphicalEditPart) (selectedObjects.iterator().next()).getParent();
+        }
+        return null;
+    }
+
+}
+</code></pre>
+		<h4 id="Allowvieworderingcustomization">Allow view ordering customization</h4>
+		<p>If you want to add the capability for other developers to customize the order the views are laid out in your layout algorithm, you have to use the Sirius view ordering API. For example you will have in your 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.layout.provider.LineLayoutProvider.layoutEditParts(List, IAdaptable)</code> method of your layout provider the following code:
+		</p>
+		<pre><code>ViewOrdering viewOrdering = ViewOrderingHint.getInstance().consumeViewOrdering(getContainerEditPart(selectedObjects).getNotationView());
+        if (viewOrdering == null) {
+            //Use the default one that return the same order.
+            viewOrdering = new SimpleViewOrdering();
+        }
+
+        viewOrdering.setViews(views);
+        final List&lt;View&gt; sortedViews = viewOrdering.getSortedViews();
+</code></pre>
+		<p>with the method 
+			<code>getContainerEditPart</code> that would be :
+		</p>
+		<pre><code>protected IGraphicalEditPart getContainerEditPart(final List&lt;EditPart&gt; selectedObjects) {
+        if (selectedObjects != null &amp;&amp; !selectedObjects.isEmpty()) {
+            return (IGraphicalEditPart) (selectedObjects.iterator().next()).getParent();
+        }
+        return null;
+    }
+</code></pre>
+		<p>Then you will apply your layout algorithm on those ordered views.</p>
+		<h3 id="IntegrateyourcustomlayoutalgorithmtoSirius">Integrate your custom layout algorithm to Sirius </h3>
+		<p>Three extension points are available to provide your custom algorithms.</p>
+		<ul>
+			<li>the GMF one 
+				<code>org.eclipse.gmf.runtime.diagram.ui.layoutProviders</code> is the high level one. It does not contains specificities linked to Sirius API. You will have to handle those on your own. 
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.layoutProvider</code> is the oldest Sirius extension point. It avoids you to handle specificities linked to Sirius API. 
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.customLayoutAlgorithmProvider</code> is the new one used by ELK it avoids you to handle specificities linked to Sirius API. It also allows you to let specifiers configure your layout algorithm directly in the VSM. The layout algorithm from PinnedElementLayoutProvider and BorderedItemAwareLayoutProvider will be applied after your layouting pass.  You should use this one if it fits your needs.
+			</li>
+		</ul>
+		<h4 id="org.eclipse.sirius.diagram.ui.customLayoutAlgorithmProvider">org.eclipse.sirius.diagram.ui.customLayoutAlgorithmProvider</h4>
+		<p>This extension point requires a sub class of 
+			<code>CustomLayoutAlgorithmProvider</code> that will provide your layout algorithm(s) as 
+			<code>CustomLayoutAlgorithm</code> based on 
+			<code>DefaultLayoutProvider</code> class. 
+		</p>
+		<p>When provided, Sirius will expose your algorithm in the VSM like for ELK integration:</p>
+		<img border="0" src="images/arrange-all/arrange-all-siriusVSMIntegration.png"/>
+		<p>The API is the following: </p>
+		<img border="0" src="images/arrange-all/arrange-all-customLayoutAlgorithmProvider.png"/>
+		<h5 id="CustomLayoutAlgorithmProvider">CustomLayoutAlgorithmProvider</h5>
+		<p>This interface contains one method to implement: </p>
+		<ul>
+			<li>
+				<code>List&lt;CustomLayoutAlgorithm&gt; getCustomLayoutAlgorithms()</code> It must returns a 
+				<code>CustomLayoutAlgorithm</code> per layout algorithm you want to provide to the Sirius environment.
+			</li>
+		</ul>
+		<h5 id="CustomLayoutAlgorithm">CustomLayoutAlgorithm</h5>
+		<p>Allows you to provide an instance of the layout algorithm to be used by Sirius as well as all the options to configure it and that will be available from the VSM. 
+			<br/>The API is the following:
+		</p>
+		<img border="0" src="images/arrange-all/arrange-all-customLayoutAlgorithm.png"/>
+		<p>You will have to provide it by using the constructor: </p>
+		<ul>
+			<li>an id for your algorithm. This id should be unique.</li>
+			<li>a label that will be used when displaying information about your algorithm in Sirius.</li>
+			<li>a 
+				<code>Supplier&lt;DefaultLayoutProvider&gt;</code> that will allow Sirius to instantiate your layout algorithm when needed.
+			</li>
+			<li>a map of 
+				<code>Map&lt;String, LayoutOption&gt;</code> that will contain the options allowing to configure your algorithm and that will be readable by Sirius. To create option you must use the 
+				<code>LayoutOptionFactory</code> described below. Option type supported are the following:
+				<ul>
+					<li>
+						<code>Boolean</code>
+					</li>
+					<li>
+						<code>Integer</code>
+					</li>
+					<li>
+						<code>String</code>
+					</li>
+					<li>
+						<code>Double</code>
+					</li>
+					<li>
+						<code>Enum</code>
+					</li>
+					<li>
+						<code>EnumSet</code>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h5 id="LayoutOptionFactory">LayoutOptionFactory</h5>
+		<p>The 
+			<code>LayoutOptionFactory</code> must be used to create an option to give to a 
+			<code>CustomLayoutAlgorithm</code>. This option will be readable by Sirius and offered to VSM specifiers.
+		</p>
+		<pre><code>LayoutOptionFactory layoutOptionFactory = new LayoutOptionFactory();
+
+</code></pre>
+		<p>This factory contains a method per option type handled. The created option will have:</p>
+		<ul>
+			<li>An 
+				<strong>id</strong> to identify it. Should be unique.
+			</li>
+			<li>A 
+				<strong>label</strong> to be display in the Sirius environment.
+			</li>
+			<li>A 
+				<strong>description</strong> that will be available to Sirius specifier when modifying it.
+			</li>
+			<li>The available 
+				<strong>value(s)</strong> to select for enum and enum set.
+			</li>
+		</ul>
+		<p>For example, the ELK integration is the following:</p>
+		<pre><code>public class ELKAlgorithmProvider implements CustomLayoutAlgorithmProvider {
+
+    @Override
+    public List&lt;CustomLayoutAlgorithm&gt; getCustomLayoutAlgorithms() {
+        List&lt;CustomLayoutAlgorithm&gt; layoutAlgorithms = new ArrayList&lt;&gt;();
+        // we fill the Sirius layout algorithm registry with all ELK algorithms.
+        Collection&lt;LayoutAlgorithmData&gt; algorithmData = LayoutMetaDataService.getInstance().getAlgorithmData();
+        for (LayoutAlgorithmData layoutAlgorithmData : algorithmData) {
+
+            List&lt;LayoutOptionData&gt; optionDatas = LayoutMetaDataService.getInstance().getOptionData(layoutAlgorithmData, Target.PARENTS);
+            Map&lt;String, LayoutOption&gt; layoutOptions = new HashMap&lt;&gt;();
+            LayoutOptionFactory layoutOptionFactory = new LayoutOptionFactory();
+            for (LayoutOptionData layoutOptionData : optionDatas) {
+                if (!CoreOptions.ALGORITHM.getId().equals(layoutOptionData.getId()) &amp;&amp; !layoutOptionData.getVisibility().equals(Visibility.HIDDEN)) {
+                    switch (layoutOptionData.getType()) {
+                    case STRING:
+                        layoutOptions.put(layoutOptionData.getId(), layoutOptionFactory.createStringOption((String) layoutOptionData.getDefault(), layoutOptionData.getId(),
+                                layoutOptionData.getDescription(), layoutOptionData.getName()));
+                        break;
+                    case BOOLEAN:
+                        layoutOptions.put(layoutOptionData.getId(), layoutOptionFactory.createBooleanOption((Boolean) layoutOptionData.getDefault(), layoutOptionData.getId(),
+                                layoutOptionData.getDescription(), layoutOptionData.getName()));
+                        break;
+                    case INT:
+                        layoutOptions.put(layoutOptionData.getId(), layoutOptionFactory.createIntegerOption((Integer) layoutOptionData.getDefault(), layoutOptionData.getId(),
+                                layoutOptionData.getDescription(), layoutOptionData.getName()));
+                        break;
+                    case DOUBLE:
+                        layoutOptions.put(layoutOptionData.getId(), layoutOptionFactory.createDoubleOption((Double) layoutOptionData.getDefault(), layoutOptionData.getId(),
+                                layoutOptionData.getDescription(), layoutOptionData.getName()));
+                        break;
+                    case ENUMSET:
+                    case ENUM:
+
+                        String[] choices = layoutOptionData.getChoices();
+                        List&lt;EnumChoice&gt; choicesList = new ArrayList&lt;&gt;();
+                        for (int i = 0; i &lt; choices.length; i++) {
+                            String choiceId = choices[i];
+                            choicesList.add(new EnumChoice(choiceId, ""));
+
+                        }
+                        String defaultValue = null;
+                        Object defaultObject = layoutOptionData.getDefaultDefault();
+                        if (defaultObject instanceof Enum) {
+                            defaultValue = ((Enum&lt;?&gt;) defaultObject).name();
+                        }
+                        if (layoutOptionData.getType() == Type.ENUM) {
+                            layoutOptions.put(layoutOptionData.getId(),
+                                    layoutOptionFactory.createEnumOption(choicesList, layoutOptionData.getId(), layoutOptionData.getDescription(), layoutOptionData.getName(), defaultValue));
+                        } else {
+                            layoutOptions.put(layoutOptionData.getId(),
+                                    layoutOptionFactory.createEnumSetOption(choicesList, layoutOptionData.getId(), layoutOptionData.getDescription(), layoutOptionData.getName()));
+                        }
+
+                        break;
+                    default:
+                        break;
+                    }
+                }
+            }
+            layoutAlgorithms.add(new CustomLayoutAlgorithm(layoutAlgorithmData.getId(), layoutAlgorithmData.getName(), () -&gt; new ELKLayoutNodeProvider(), layoutOptions));
+        }
+        return layoutAlgorithms;
+    }
+
+}
+
+</code></pre>
+		<h5 id="DefaultLayoutProvider3">DefaultLayoutProvider</h5>
+		<p>This class contains the core layout algorithm. When a user calls an arrange-all on a diagram that will be configured to use your layout algorithm, an instance of this class is created. You will be given the parts to layout. Then it is your job to layout it as you want. </p>
+		<p>For example, the ELK integration have the following:</p>
+		<pre><code>public class ELKLayoutNodeProvider extends DefaultLayoutProvider {
+
+    @Override
+    public Command layoutEditParts(final List selectedObjects, final IAdaptable layoutHint) {
+        Injector injector = LayoutConnectorsService.getInstance().getInjector(null, selectedObjects);
+        ElkDiagramLayoutConnector connector = injector.getInstance(ElkDiagramLayoutConnector.class);
+        LayoutMapping layoutMapping = connector.buildLayoutGraph(null, selectedObjects);
+        connector.layout(layoutMapping);
+        connector.transferLayout(layoutMapping);
+        return connector.getApplyCommand(layoutMapping);
+    }
+
+}
+
+
+</code></pre>
+		<h4 id="org.eclipse.sirius.diagram.ui.layoutProvider">org.eclipse.sirius.diagram.ui.layoutProvider</h4>
+		<p>To be used, your custom algorithm should be declared to Sirius with the provided extension point 
+			<code>org.eclipse.sirius.diagram.ui.layoutProvider</code>. This extension point requires a sub class of 
+			<code>LayoutProvider</code> that will provide your layout algorithm. Its API is the following:
+		</p>
+		<img border="0" src="images/arrange-all/arrange-all-layoutProvider.png"/>
+		<p>The 
+			<code>LayoutProvider</code> interface contains the following methods:
+		</p>
+		<ul>
+			<li>
+				<code>isDiagramLayoutProvider</code>: This method should return true if the provided layout algorithm can handle layouting from root diagram part when this part is layout action&#8217;s target. It means your provider will be called with 
+				<code>org.eclipse.gmf.runtime.diagram.ui.services.layout.AbstractLayoutEditPartProvider.layoutEditParts(GraphicalEditPart, IAdaptable)</code> in this case. The call will only be done if your provider inherits from 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.provider.AbstractLayoutProvider</code>. If not or if 
+				<code>isDiagramLayoutProvider</code> returns false, then the method 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.provider.DefaultLayoutProvider.layoutEditParts(List, IAdaptable)</code> is called and will delegate to the method 
+				<code>layoutEditParts(List, IAdaptable)</code> of your provider.
+			</li>
+			<li>
+				<code>provides</code>: Should return true if your 
+				<code>LayoutProvider</code> do provide a layout algorithm for the view associated to the given edit part and should be used. False otherwise.
+			</li>
+			<li>
+				<code>getLayoutNodeProvider</code>: Return the layout algorithm component to use to lay out the diagram elements target of the layout action.
+			</li>
+		</ul>
+		<p>For example the left right composite providers is declared as followed:</p>
+		<pre><code>public class CompositeLeftRightProvider implements LayoutProvider {
+	 /** The delegated GMF provider. */
+	 private AbstractLayoutEditPartProvider layoutNodeProvider;
+	 public AbstractLayoutEditPartProvider getLayoutNodeProvider(final IGraphicalEditPart container) {
+        if (this.layoutNodeProvider == null) {
+            final CompoundLayoutProvider clp = new CompoundLayoutProvider();
+            final CompositeLeftRightLayoutProvider cdtp = new CompositeLeftRightLayoutProvider();
+            clp.addProvider(cdtp);
+            clp.addProvider(new PinnedElementsLayoutProvider(cdtp));
+            if (ENABLE_BORDERED_NODES_ARRANGE_ALL) {
+                // ArrangeSelectionLayoutProvider wrap all providers to manage
+                // the selected diagram element on diagram "Arrange all"
+                AbstractLayoutProvider abstractLayoutProvider = BorderItemAwareLayoutProviderHelper.createBorderItemAwareLayoutProvider(clp);
+                this.layoutNodeProvider = new ArrangeSelectionLayoutProvider(abstractLayoutProvider);
+            } else {
+                this.layoutNodeProvider = new ArrangeSelectionLayoutProvider(clp);
+            }
+        }
+        return this.layoutNodeProvider;
+    }
+
+    public boolean provides(final IGraphicalEditPart container) {
+        return isInDDiagramWithConfiguredLeftRightLayout(container.getNotationView());
+    }
+
+    private boolean isInDDiagramWithConfiguredLeftRightLayout(final View view) {
+        final Layout foundLayout = DiagramLayoutCustomization.findLayoutSettings(view);
+        if (foundLayout instanceof CompositeLayout) {
+            return ((CompositeLayout) foundLayout).getDirection() == LayoutDirection.LEFT_TO_RIGHT;
+        }
+        return false;
+    }
+
+    public boolean isDiagramLayoutProvider() {
+        return true;
+    }
+}
+
+</code></pre>
+		<p>The layout algorithm provided by this 
+			<code>LayoutProvider</code> will be used if the view to layout is associated to a Sirius mapping contained by a diagram mapping declaring the left right composite provider in the VSM.
+		</p>
+		<p>After this provider creation, you have to registered it with the extension point:
+			<br/> 
+			<img border="0" src="images/arrange-all/arrange-all-layoutprovider-extension.png"/>
+		</p>
+		<p>A priority can be set. If two layout providers provide layouting for a same object, the one with the higher priority will be used.</p>
+		<h5 id="Composingyourlayoutproviders">Composing your layout providers</h5>
+		<p>You may want to reuse some of the Sirius layout providers in addition of your own layout provider to avoid code rewrite or duplication if the layouting you are doing does not conflict with the layouting other providers are doing.</p>
+		<p>To do that, Sirius offers a 
+			<code>CompoundLayoutProvider</code> allowing to trigger layouting of many compatible providers in their insertion order. The compatible providers are:
+		</p>
+		<ul>
+			<li>The PinnedElementsLayoutProvider</li>
+			<li>The LineLayoutProvider</li>
+			<li>The GridLayoutProvider</li>
+		</ul>
+		<p>Also some providers are not compatible with the compound one but instead use a wrapping mechanism. They wrap another provider. Then their layouting code is called before or after the wrapped&#8217;s code:</p>
+		<ul>
+			<li>The ArrangeSelectionLayoutProvider is called before wrapped provider</li>
+			<li>The ArrangeAllOnlyLayoutProvider is called before wrapped provider</li>
+			<li>The BorderItemAwareLayoutProvider is called after wrapped provider. Its initialization is done with the code </li>
+		</ul>
+		<pre><code>BorderItemAwareLayoutProviderHelper.createBorderItemAwareLayoutProvider(clp);
+</code></pre>
+		<p>
+			<code>PinnedElementsLayoutProvider</code> should always do its layouting before BorderItemAwareLayoutProvider but after any other layouting.
+			<br/>
+			<code>BorderItemAwareLayoutProvider</code> should always do its layouting at the end.
+			<br/>To know more about these providers you can read the section 
+			<a href="#siriusLayoutProviders">Sirius Layout Providers</a>.
+		</p>
+		<p>The 
+			<code>CompoundLayoutProvider</code> API is the following:
+		</p>
+		<img border="0" src="images/arrange-all/arrange-all-CompoundLayoutProvider.png"/>
+		<p>The 
+			<code>provides</code> and 
+			<code>layoutEditParts</code> methods delegate to registered providers. You should not override those.
+			<br/>You only have to add all the providers that should be used to layout with method 
+			<code>addProvider</code>.
+		</p>
+		<h6 id="Example">Example</h6>
+		<p>Compound and wrapping providers are used for example by the composite providers that can be used from a VSM declaration:</p>
+		<pre><code>public AbstractLayoutEditPartProvider getLayoutNodeProvider(final IGraphicalEditPart container) {
+        if (this.layoutNodeProvider == null) {
+            final CompoundLayoutProvider clp = new CompoundLayoutProvider();
+            final CompositeDownTopLayoutProvider cdtp = new CompositeDownTopLayoutProvider();
+            clp.addProvider(cdtp);
+            clp.addProvider(new PinnedElementsLayoutProvider(cdtp));
+            AbstractLayoutProvider abstractLayoutProvider = BorderItemAwareLayoutProviderHelper.createBorderItemAwareLayoutProvider(clp);
+            this.layoutNodeProvider = new ArrangeSelectionLayoutProvider(abstractLayoutProvider);
+        }
+        return this.layoutNodeProvider;
+    }
+</code></pre>
+		<p>We see that this composite provider is composed with the 
+			<code>PinnedElementsLayoutProvider</code> in a compound provider. The composite provider does its layouting first but does not handle pinned elements. The pinned one restore pinned elements to their original position and fix potential overlaps.
+			<br/>Then the compound provider is wrapped in a 
+			<code>BorderItemAwareLayoutProvider</code> that is also wrapped in the 
+			<code>ArrangeSelectionLayoutProvider</code>.
+			<br/>The layout execution flow is the following:
+			<br/>
+			<code>ArrangeSelectionLayoutProvider</code> is called first. Then 
+			<code>CompoundLayoutProvider</code> is called and delegates to 
+			<code>CompositeDownTopLayoutProvider</code> first and 
+			<code>PinnedElementsLayoutProvider</code> second. Lastly 
+			<code>BorderItemAwareLayoutProvider</code> is called.
+		</p>
+		<h4 id="ProvideacustomlayoutalgorithmwithGMFextensionpoint">Provide a custom layout algorithm with GMF extension point</h4>
+		<p>This extension point provided by GMF can be used to provide your custom layout algorithm in Sirius diagram editors if you don&#8217;t need any of the features and implementation ease brought by Sirius API.</p>
+		<p>To do that, your layout algorithm in the form of an 
+			<code>AbstractLayoutEditPartProvider</code> can be declared in GMF extension point 
+			<code>org.eclipse.gmf.runtime.diagram.ui.layoutProviders</code>.
+		</p>
+		<p>The priority of the default one used by Sirius is medium. To be override your priority must be lowest than medium.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom_aird_editor_pages.html b/doc/6.0.x/developer/extensions-provide_custom_aird_editor_pages.html
new file mode 100644
index 0000000..ac8cf91
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom_aird_editor_pages.html
@@ -0,0 +1,339 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom_aird_editor_pages</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidecustomairdeditorpages">Sirius &#8211; Provide custom aird editor pages</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>Sirius provides an aird editor with a default page allowing to handle viewpoints and representations as well as semantic models. It is the entry point to any Sirius project for end user.</p>
+		<p>Custom pages can be provided to aird editor instances to show different information not available in the default page. It can be anything from business information to aird information. The functionalities around custom page providing are the following: </p>
+		<ul>
+			<li>Custom page can replace the default page or any other contributed pages.  </li>
+			<li>Custom pages can be located before or after other pages.</li>
+			<li>Custom pages can be dynamically updated. I.e for any change in the resource set of the aird opened with the editor owing your page instance, you can tell the editor to execute reordering, removing or editor page tab refreshing commands in addition of a refresh done internally by your class.</li>
+			<li>Custom pages are displayed by aird editors only if a required context specified by your page is present. It no such context is specified, the page will always be shown in aird editors.</li>
+			<li>The update commands computing and internal refresh can be deferred to when your page is visible to avoid performance problem when browsing other page whereas yours is not used. This can be useful if you do heavy computing when refreshing or computing update commands.</li>
+		</ul>
+		<p>Sirius offers two distinct ways of providing custom pages for aird editor:</p>
+		<ul>
+			<li>an API with the 
+				<code>PageRegistry</code> as entry point.
+			</li>
+			<li>and the same API with 
+				<code>sessionEditorPageProvider</code> extension point as entry point.
+			</li>
+		</ul>
+		<h2 id="UsingtheAPItoprovidecustompages">Using the API to provide custom pages</h2>
+		<p>The API is composed of the following classes:</p>
+		<ul>
+			<li>The 
+				<code>AbstractSessionEditorPage</code>
+			</li>
+			<li>The 
+				<code>PageProvider</code>
+			</li>
+			<li>The 
+				<code>PageUpdateCOmmand</code>
+			</li>
+			<li>The 
+				<code>PositioningKind</code>
+			</li>
+			<li>The 
+				<code>PageUpdateCommandBuilder</code>
+			</li>
+			<li>The 
+				<code>PageRegistry</code>
+			</li>
+		</ul>
+		<p>and are available in the package 
+			<code>org.eclipse.sirius.ui.editor.api.pages</code> from the plugin 
+			<code>org.eclipse.sirius.ui.editor</code>
+		</p>
+		<p>To provide a custom page by using this API you have to:</p>
+		<ol>
+			<li>Build your custom page that extends 
+				<code>AbstractSessionEditorPage</code> and with the help of 
+				<code>PageUpdateCommandBuilder</code> if needed.
+			</li>
+			<li>Create a 
+				<code>PageProvider</code> that will provide your custom page as well as other custom pages you want.
+			</li>
+			<li>Register your 
+				<code>PageProvider</code> either directly in the 
+				<code>PageRegistry</code> or by using the provided extension point.
+			</li>
+			<li>Launch the runtime and open the aird editor of a modeling project. If the display context required by your custom page is present it will be visible.</li>
+		</ol>
+		<p>Example with the Sirius Debug Page:
+			<br/>
+			<img border="0" src="images/customPageApi_debugPage_example.png"/>
+		</p>
+		<h3 id="pagePositioning">Page positioning</h3>
+		<p>When contributing a custom page, you can tell where the editor tab corresponding to your page will be located regarding other pages' tab in different contexts:</p>
+		<ul>
+			<li>when the page is initialized by your 
+				<code>PageProvider</code>
+			</li>
+			<li>when the page position is updated by a reorder command in response to an aird editor&#8217;s session&#8217;s resource set event or a page visibility update.</li>
+		</ul>
+		<p>Whatever the context is, you always need to provide two kind of information to position your page regarding others:</p>
+		<ul>
+			<li>The 
+				<b>id</b> of the page from which your page will be placed relatively to it. The default aird editor page id is accessible in 
+				<code>org.eclipse.sirius.ui.editor.SessionEditorPlugin.DEFAULT_PAGE_ID</code>
+			</li>
+			<li>The kind of positioning you want to achieve. The different kinds are defined by the enum 
+				<code>org.eclipse.sirius.ui.editor.api.pages.PageProviderRegistry.PositioningKind</code>:
+				<ul>
+					<li>The 
+						<code>BEFORE</code> kind will place your page&#8217;s tab in the aird editor before the target page&#8217;s tab. For example with the debug page before 
+						<i>Overview</i>:
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/customPageApi_debugPage_before.png"/>
+		</p>
+		<ul>
+			<li>
+				<ul>
+					<li>The 
+						<code>AFTER</code> kind will place your page&#8217;s tab in the aird editor after the target page&#8217;s tab. For example with the debug page after 
+						<i>Overview</i>:
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/customPageApi_debugPage_after.png"/>
+		</p>
+		<ul>
+			<li>
+				<ul>
+					<li>The 
+						<code>REPLACE</code> kind will replace the target page&#8217;s tab in the aird editor by your page&#8217;s tab. For example with the debug page replace the default page 
+						<em>Overview</em>:
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/customPageApi_debugPage_replace.png"/>
+		</p>
+		<p>If a page identified by the id used to position your custom page does not exists in the aird editor when positioning your page, then your page will be added to the leftmost position.</p>
+		<h3 id="Buildingthecustompage">Building the custom page</h3>
+		<p>To build a custom page you need to create a class extending 
+			<code>org.eclipse.sirius.ui.editor.api.pages.AbstractSessionEditorPage</code> that also extends 
+			<code>FormPage</code>.  
+			<br/>The UI creation part of your page is handled by the methods of 
+			<code>FormPage</code> with the method 
+			<code>createFormContent(IManagedForm managedForm)</code> as entry point.
+			<br/>The 
+			<code>AbstractSessionEditorPage</code> abstract class brings the following methods to implement:
+		</p>
+		<ul>
+			<li>
+				<code>Optional&lt;PageUpdateCommand&gt; pageChanged(boolean)</code>
+			</li>
+			<li>
+				<code>Optional&lt;PageUpdateCommand&gt; resourceSetChanged(ResourceSetChangeEvent)</code>
+			</li>
+			<li>
+				<code>Optional&lt;PositioningKind&gt; getPositioning()</code>
+			</li>
+			<li>
+				<code>Optional&lt;String&gt; getLocationId()</code>
+			</li>
+		</ul>
+		<p>There is also a method 
+			<code>NotificationFilter getFilterForPageRequesting()</code> with default behavior that can be overridden.
+		</p>
+		<h4 id="resourceSetChanged">resourceSetChanged</h4>
+		<p>This method is called by the aird editor whenever a resource set event occurs on its session&#8217;s resource set. The event can be a change regarding the aird file, or the loaded resources or viewpoints. </p>
+		<p>You can internally refresh your graphic components when called according to the change event. You also can return a list of 
+			<code>PageUpdateCommand</code> that the editor needs to execute to update your page by using the builder 
+			<code>PageUpdateCommandBuilder</code>. For example:
+		</p>
+		<pre><code>return Optional.of(new PageUpdateCommandBuilder().removePage().build());
+</code></pre>
+		<p>This builder allows you to build a command the owning aird editor must execute. The built command can do one or a combination of the following command:</p>
+		<ul>
+			<li>the REMOVE command (
+				<code>PageUpdateCommandBuilder removePage()</code>): when the aird editor execute this command, your page will be removed from the editor.
+			</li>
+			<li>the REORDER command (
+				<code>PageUpdateCommandBuilder reorderPage(PositioningKind positioningKind, String targetPageId)</code>): when the aird editor execute this command, your page will be placed at the defined position. To know more about positioning, please read the section 
+				<a href="#pagePositioning">Page Positioning</a>  
+			</li>
+			<li>the RENAME command 
+				<code>PageUpdateCommandBuilder renameTab(String newLabel)</code>: when the aird editor execute this command, the editor tab owning your page will have its label updated with the one given to build the command.
+			</li>
+		</ul>
+		<p>If the built command contains the remove command and a reorder, rename or both command, then the remove command will be executed but not the other(s).</p>
+		<p>If you does not need to use this functionality you must return 
+			<code>Optional.empty()</code>.
+		</p>
+		<h4 id="pageChanged">pageChanged</h4>
+		<p>This method is called with true as parameter when your page just becomes visible (i.e it is selected). It is called with false as parameter when any other page than yours is selected. </p>
+		<p>You can use the parameter to avoid doing heavy computation on model changes when you know your page is not visible to the end-user, and defer these to later, when it will become visible again (i.e. when pageChanged is invoked with 
+			<code>true</code>).
+		</p>
+		<p>You also can internally refresh your graphic components when called according to the change event. You also can return a list of 
+			<code>PageUpdateCommand</code>  that the editor needs to execute to update your page by using the builder 
+			<code>PageUpdateCommandBuilder</code>. See section 
+			<a href="#resourceSetChanged">resourceSetChanged</a> to have details about the commands. 
+		</p>
+		<p>If you want to apply page update only when the page is visible and if certain conditions are fulfilled regarding the session, then it is your responsibility to keep track of what happens since the last page selection with calls to 
+			<code>resourceSetChanged(ResourceSetChangeEvent)</code> to know if some update must be done.
+		</p>
+		<p>If you does not need to use this functionality you must return 
+			<code>Optional.empty()</code>.
+		</p>
+		<h4 id="getFilterForPageRequesting">getFilterForPageRequesting</h4>
+		<p>This method defined with a default implementation in 
+			<code>AbstractSessionEditorPage</code> allows to prevent calls to 
+			<code>AbstractSessionEditorPage.resourceSetChanged(ResourceSetChangeEvent)</code> for events you does not want to consider because you know your page will not refresh anything from these. 
+		</p>
+		<p>By default the filter 
+			<code>org.eclipse.emf.transaction.NotificationFilter.NOT_TOUCH</code> is used. This filter makes sure you are not called when all the event&#8217;s notification does not change any values.
+		</p>
+		<p>You can override this method to provide your own filter.</p>
+		<h4 id="getPositioning">getPositioning</h4>
+		<p>This method is used when your page is created to position it among other pages. See section 
+			<a href="#pagePositioning">Page Positioning</a>  to now more about how positioning works.
+		</p>
+		<p>It defines the kind of positioning to achieve.</p>
+		<p>If you don&#8217;t want to position your page relatively to another one, you can return 
+			<code>Optional.empty()</code>. In this case your page will be added to the leftmost position (first position).
+		</p>
+		<h4 id="getLocationId">getLocationId</h4>
+		<p>This method is used when your page is created to position it among other pages. See section 
+			<a href="#pagePositioning">Page Positioning</a>  to now more about how positioning works.
+		</p>
+		<p>It defines the page id from which your page should be positioned relatively to.</p>
+		<p>If you don&#8217;t want to position your page relatively to another one, you can return 
+			<code>Optional.empty()</code>. In this case your page will be added to the leftmost position (first position).
+		</p>
+		<h3 id="BuildingthePageProvider">Building the PageProvider</h3>
+		<p>The PageProvider responsibilities are:  </p>
+		<ul>
+			<li>to provide all the custom pages you want to Sirius.</li>
+			<li>to give the id of the pages provided by it.</li>
+		</ul>
+		<p>To build a custom page you need to create a class extending 
+			<code>org.eclipse.sirius.ui.editor.api.pages.PageProvider</code>.
+			<br/>This abstract class brings the following methods to implements:
+		</p>
+		<ul>
+			<li>
+				<code>Map&lt;String, Supplier&lt;AbstractSessionEditorPage&gt;&gt; getPages(SessionEditor)</code>
+			</li>
+			<li>
+				<code>NotificationFilter getFilterForPageRequesting()</code>
+			</li>
+			<li>
+				<code>boolean provides(String)</code>
+			</li>
+		</ul>
+		<h4 id="getPages">getPages</h4>
+		<p>This method returns all custom pages instances extending 
+			<code>AbstractSessionEditorPage</code> to initialize.
+		</p>
+		<p>This method must return a map of page id to its supplier initializing a new instance of the page.</p>
+		<p>For example with the debug page:</p>
+		<pre><code>Map&lt;String, Supplier&lt;AbstractSessionEditorPage&gt;&gt; resultMap = new HashMap&lt;&gt;();
+resultMap.put(DebugPage.PAGE_ID, () -&gt; {
+    return new DebugPage(editor, DebugPage.PAGE_ID, DEBUG_PAGE_TITLE);
+});
+return resultMap;
+</code></pre>
+		<p>You can use the given parameter to determine if your pages should be provided at the moment. You have access to the editor 
+			<code>org.eclipse.sirius.ui.editor.SessionEditor</code> asking for the pages of your provider. From this parameter you can access to its session by using the method 
+			<code>org.eclipse.sirius.ui.editor.SessionEditor.getSession()</code>. You also can use any singleton like 
+			<code>PlatformUI</code> to know if your pages should be created at the moment.
+		</p>
+		<p>If the required conditions to display a page that can be computed from the session are not verified, then you should not return a new instance of this page.</p>
+		<p>The method is called when: </p>
+		<ul>
+			<li>the aird editor is created.</li>
+			<li>a resource set event occurs from the resource set of the editor&#8217;s session excepted if all notifications of the event are not filtered by the filter returned by method 
+				<code>getFilterForPageRequesting</code>.
+			</li>
+			<li>a 
+				<code>PageProvider</code> is added or removed from the providers registry.
+			</li>
+		</ul>
+		<h4 id="getFilterForPageRequesting2">getFilterForPageRequesting</h4>
+		<p>This method defined with a default implementation in 
+			<code>PageProvider</code> allows to prevent calls to 
+			<code>PageProvider.getPages(SessionEditor)</code> for events you does not want to consider because you know that the initial conditions to show your pages will not be fulfilled. 
+		</p>
+		<p>By default the filter 
+			<code>org.eclipse.emf.transaction.NotificationFilter.NOT_TOUCH</code> is used. This filter makes sure you are not called when the event does not change any values.
+		</p>
+		<p>You can override this method to provide your own filter.</p>
+		<h4 id="provides">provides</h4>
+		<p>This method tells if your provider can create a page instance of the given id as parameter. It is used when computing page positions. </p>
+		<p>Warning: If you don&#8217;t return true for the id of a page you provide, then positioning may not be what you expect.</p>
+		<h3 id="Pagestatussynchronization">Page status synchronization</h3>
+		<p>You can create pages at a given position of an editor only when some initial conditions are fulfilled. This mechanism involves the methods:</p>
+		<ul>
+			<li>
+				<code>PageProvider.getPages(SessionEditor)</code>
+			</li>
+			<li>
+				<code>AbstractSessionEditorPage.getPositioning()</code>
+			</li>
+			<li>
+				<code>AbstractSessionEditorPage.getLocationId()</code>
+			</li>
+		</ul>
+		<p>You also can dynamically change the page position by reacting to session&#8217;s resource set events or even tell the editor to remove the page no longer useful. This mechanism involves the methods:</p>
+		<ul>
+			<li>
+				<code>AbstractSessionEditorPage.resourceSetChanged(ResourceSetChangeEvent)</code>
+			</li>
+			<li>
+				<code>AbstractSessionEditorPage.pageChanged(boolean)</code>
+			</li>
+		</ul>
+		<p>So we have two distinct mechanism allowing for page positioning that can be conflicted if not careful.
+			<br/>For example, your 
+			<code>AbstractSessionEditorPage</code> page can dynamically be removed when a condition A is verified. But your page creation initial condition in 
+			<code>PageProvider</code> is also A. In this situation, if A is verified a first time, the page is created. Then if A is verified a second time, the page will be removed dynamically and created again.
+		</p>
+		<p>So to avoid conflicts, the page position and creation/removal must have the most specific conditions in the 
+			<code>PageProvider</code> and the less specific in 
+			<code>AbstractSessionEditorPage</code>
+		</p>
+		<p>For example, if a page can be created from 
+			<code>PageProvider</code> when condition A and B are verified, then this page can be dynamically removed only if !A or !B is verified but not if another condition is verified like C or !C.
+		</p>
+		<h3 id="RegisteringthePageProvider">Registering the PageProvider</h3>
+		<p>When your PageProvider providing your custom pages is done, you have to register it to Sirius so it can be use to display your pages in aird editors.
+			<br/>You have two ways to do that either by using the 
+			<code>PageRegistry</code> or an extension point.
+		</p>
+		<h4 id="Programmaticregistering">Programmatic registering</h4>
+		<p>The 
+			<code>PageRegistry</code> is the registry containing all 
+			<code>PageProvider</code> used by aird editors. 
+			<br/>To be used, your provider can be registered in this registry.
+		</p>
+		<p>You can do this programmatically by calling the method 
+			<code>org.eclipse.sirius.ui.editor.SessionEditorPlugin.getPlugin().getPageRegistry().addPageProvider(parameter)</code> with a new instance of your page provider as parameter.
+		</p>
+		<h4 id="Declarativeregistering">Declarative registering</h4>
+		<p>The extension point 
+			<code>org.eclipse.sirius.ui.editor.sessionEditorPageProvider</code> allows you to define the class of your page provider that should be taken in consideration when Sirius populates pages of aird editors:
+		</p>
+		<p>
+			<img border="0" src="images/customPageApi_debugPage_extensionPoint.png"/>
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom_bundled_image_shape.html b/doc/6.0.x/developer/extensions-provide_custom_bundled_image_shape.html
new file mode 100644
index 0000000..98bdbb1
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom_bundled_image_shape.html
@@ -0,0 +1,89 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom_bundled_image_shape</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidecustombundledimageshape">Sirius &#8211; Provide custom bundled image shape</h1>
+		<h2 id="Goals">Goals</h2>
+		<ul>
+			<li>Sirius provides a basic image style for node mappings. This style offer a selection of five different shapes. This extension point is used to allow specifiers to provide their own shapes defined in a SVG file.</li>
+		</ul>
+		<h2 id="Defineabundledimageshapeextension">Define a bundled image shape extension</h2>
+		<ul>
+			<li>This extension point is identified as 
+				<code>org.eclipse.sirius.diagram.bundledImageShape</code>. In this extension, there are three required fields:
+				<ul>
+					<li>The Id of the extension is for once required as it will be used to identify the provided shape in the models (VSM and graphical models).</li>
+					<li>The image path, that needs to start with the plug-in name as it is possible to define a bundled image shape extension using an image in a different plug-in.</li>
+					<li>The image label displayed in VSMs (suffixed with the plug-in name where the bundled image shape extension is declared).</li>
+				</ul>
+			</li>
+		</ul>
+		<ul>
+			<li>There are 6 optional parameters in this extension point. These parameters are used to provide the identifier or attribute name concerning the color, border color and border size used in the given SVG file, if these parameters are not the default ones (used in the 5 default shapes). Here is a list of these parameters and the default value.
+				<ul>
+					<li>colorIdentifier, the identifier of the tag defining the inner color of the figure. The default identifier is &#8220;stop1&#8221;.</li>
+					<li>colorAttribute, the attribute of the tag defining the inner color of the figure. The default identifier is &#8220;style&#8221;.</li>
+					<li>borderColorIdentifier, the identifier of the tag defining the border color of the figure. The default identifier is &#8220;elementWithGradient&#8221;.</li>
+					<li>borderColorAttribute, the attribute of the tag defining the border color of the figure. The default identifier is &#8220;style&#8221;.</li>
+					<li>borderSizeIdentifier, the identifier of the tag defining the border size of the figure. The default identifier is &#8220;externalBorder&#8221;.</li>
+					<li>borderSizeAttribute, the attribute of the tag defining the border color of the figure. The default identifier is &#8220;style&#8221;.</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Note that it is possible to provide a non SVG file but the colors and border size will not be synchronized with the selected information in the VSM.</p>
+		<h2 id="Example">Example</h2>
+		<p>The following example defines a new bundled image shape using an image file donut.svg.</p>
+		<pre>	&lt;extension
+        id="org.eclipse.sirius.tests.swtbot.donut"
+        point="org.eclipse.sirius.diagram.bundledImageShape"&gt;
+     &lt;image
+           imagePath="/org.eclipse.sirius.tests.swtbot/images/donut.svg"
+           label="Donut"&gt;
+        &lt;colorIdentifier
+              colorIdentifier="stop8224-2"&gt;
+        &lt;/colorIdentifier&gt;
+        &lt;colorAttribute
+              colorAttribute="style"&gt;
+        &lt;/colorAttribute&gt;
+        &lt;borderColorIdentifier
+              borderColorIdentifier="path10796-2-6-2-7"&gt;
+        &lt;/borderColorIdentifier&gt;
+        &lt;borderColorAttribute
+              borderColorAttribute="style"&gt;
+        &lt;/borderColorAttribute&gt;
+        &lt;borderSizeIdentifier
+              borderSizeIdentifier="path10796-2-6-2-7"&gt;
+        &lt;/borderSizeIdentifier&gt;
+        &lt;borderSizeAttribute
+              borderSizeAttribute="style"&gt;
+        &lt;/borderSizeAttribute&gt;
+     &lt;/image&gt;
+  &lt;/extension&gt;
+
+</pre>
+		<p>In this sample, the identifier concerning the tags for the inner color (colorIdentifier), the border color (borderColorIdentifier) and the border size (borderSizeIdentifier) are not the default one. However, the attributes are all the default values. Therefore, we can simplify the extension as follows.</p>
+		<pre>	&lt;extension
+        id="org.eclipse.sirius.tests.swtbot.donut"
+        point="org.eclipse.sirius.diagram.bundledImageShape"&gt;
+     &lt;image
+           imagePath="/org.eclipse.sirius.tests.swtbot/images/donut.svg"
+           label="Donut"&gt;
+        &lt;colorIdentifier
+              colorIdentifier="stop8224-2"&gt;
+        &lt;/colorIdentifier&gt;
+        &lt;borderColorIdentifier
+              borderColorIdentifier="path10796-2-6-2-7"&gt;
+        &lt;/borderColorIdentifier&gt;
+        &lt;borderSizeIdentifier
+              borderSizeIdentifier="path10796-2-6-2-7"&gt;
+        &lt;/borderSizeIdentifier&gt;
+     &lt;/image&gt;
+  &lt;/extension&gt;
+</pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom_model_operation.html b/doc/6.0.x/developer/extensions-provide_custom_model_operation.html
new file mode 100644
index 0000000..1c4109c
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom_model_operation.html
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom_model_operation</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidecustommodeloperation">Sirius &#8211; Provide custom model operation</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>Sirius provides various model operations (change context, if, for, create instance, etc). This extension point allows the contribution of additional model operations.</p>
+		<h2 id="Defineamodeloperationextension">Define a model operation extension</h2>
+		<p>This extension point is identified as 
+			<code>org.eclipse.sirius.diagram.bundledImageShape</code>. In this extension, there are three required fields:
+		</p>
+		<ul>
+			<li>id &#8211; The identifier of the contribution</li>
+			<li>name &#8211; The human readable name of the contribution</li>
+			<li>modelOperationManager &#8211; The Java class used to handle the model operation</li>
+		</ul>
+		<p>The model operation manager will have to create a Sirius task from the given description of the model operation. An example is available in the plugin 
+			<code>org.eclipse.sirius.ui.properties</code> with the class 
+			<code>org.eclipse.sirius.ui.properties.internal.dialog.DialogModelOperationManager</code>.
+		</p>
+		<pre>public class DialogModelOperationManager implements IModelOperationManager {
+
+    @Override
+    public Optional&lt;ICommandTask&gt; createTask(ModelOperation modelOperation, ModelAccessor modelAccessor, UICallBack uiCallback,
+             Session session, IInterpreter interpreter, CommandContext context) {
+        if (modelOperation instanceof DialogModelOperation) {
+            DialogModelOperation dialogModelOperation = (DialogModelOperation) modelOperation;
+            return Optional.of(new DialogTask(context, modelAccessor, interpreter, session, dialogModelOperation));
+        }
+        return Optional.empty();
+    }
+
+}
+
+</pre>
+		<p>In this example, we will only consider the DialogModelOperation and we will return a new DialogTask used to open a dialog.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom_permission_authority.html b/doc/6.0.x/developer/extensions-provide_custom_permission_authority.html
new file mode 100644
index 0000000..67ae3b7
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom_permission_authority.html
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom_permission_authority</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ProvidingaCustomPermissionAuthority">Providing a Custom Permission Authority</h1>
+		<p>Both read and write operations on the model are executed through an accessibility layer called the model accessor, implemented by 
+			<code>org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor</code>.  Each session has an an associated 
+			<code>ModelAccessor</code> which can be obtained with 
+			<code>Session.getModelAccessor()</code>.
+		</p>
+		<p>The model accessor itself delegates the permission checking to an 
+			<code>IPermissionAuthority</code> , which is responsible for checking which operations are permitted on a given model element. The permission authority is also used to lock model elements (both representation and semantic elements), query their lock status and be notified (through 
+			<code>IAuthorityListener</code>) when a lock is taken or released. 
+		</p>
+		<p>You can provide a custom permission authority by implementing the interface 
+			<code>org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority</code>  and registering your custom implementation with the 
+			<code>org.eclipse.sirius.ecore.extender.PermissionProvider</code> extension point.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_custom_style.html b/doc/6.0.x/developer/extensions-provide_custom_style.html
new file mode 100644
index 0000000..5c72ea1
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_custom_style.html
@@ -0,0 +1,697 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_custom_style</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidecustomstyle">Sirius &#8211; Provide custom style</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>Sirius provides tools to design and display diagrams. These diagrams are essentially composed of figures of distinct styles
+			<br/>and shapes and, even though the tooling initially allows for the usage of a wide array of styles, many diagrams will still require
+			<br/>customized styles to conform to the company&#8217;s theme.
+		</p>
+		<p>Sirius offers three distinct ways of customizing its graphical styles:</p>
+		<ol>
+			<li>the 
+				<code>StyleConfiguration</code> extension point.
+			</li>
+			<li>the 
+				<code>CustomStyle</code> in addition to the 
+				<code>EditPartProvider</code> GMF extension point.
+			</li>
+			<li>the GMF-provided extension points.</li>
+		</ol>
+		<h2 id="StyleConfiguration">StyleConfiguration</h2>
+		<p>StyleConfiguration is a mechanism that enables the customization of a specific style. It aims at providing support for different
+			<br/>ways of displaying labels, anchors, ...
+		</p>
+		<h3 id="TheStyleConfigurationinterface">The StyleConfiguration interface</h3>
+		<p>This interface defines a set of methods that need be implemented in order for the syle to be customizable:</p>
+		<ul>
+			<li>
+				<code>void adaptNodeLabel(DNode node, WrapLabel nodeLabel)</code>
+			</li>
+			<li>
+				<code>BorderItemLocatorProvider getBorderItemLocatorProvider()</code>
+			</li>
+			<li>
+				<code>IBorderItemLocator getNameBorderItemLocator(DNode node, IFigure mainFigure)</code>
+			</li>
+			<li>
+				<code>int adaptViewNodeSizeWithLabel(DNode viewNode, WrapLabel nodeLabel, int nodeWidth)</code>
+			</li>
+			<li>
+				<code>AnchorProvider getAnchorProvider()</code>
+			</li>
+			<li>
+				<code>Image getLabelIcon(DDiagramElement element)</code>
+			</li>
+			<li>
+				<code>Dimension fitToText(DNode node, WrapLabel nodeLabel, DefaultSizeNodeFigure defaultSizeNodeFigure)</code>
+			</li>
+		</ul>
+		<h4 id="adaptNodeLabel">adaptNodeLabel</h4>
+		<p>This method can be used to alter the size and location of a given label according to a given node.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>viewNode</code>: The node representation.
+					</li>
+					<li>
+						<code>nodeLabel</code>: Label of the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="getBorderItemLocatorProvider">getBorderItemLocatorProvider</h4>
+		<p>This method returns the instance currently providing border item locators for the node. A border item is a node located on the border of another node.</p>
+		<h4 id="getNameBorderItemLocator">getNameBorderItemLocator</h4>
+		<p>This method returns the item locator for the label of the node. This method is meaningless if the position of the label isn&#8217;t 
+			<code>BORDER</code>.
+		</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>node</code>: The node representation.
+					</li>
+					<li>
+						<code>mainFigure</code>: The Draw2D figure representing the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="adaptViewNodeSizeWithLabel">adaptViewNodeSizeWithLabel</h4>
+		<p>This method returns the minimum width a node needs to be correctly displayed with its label.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>viewNode</code>: The node representation.
+					</li>
+					<li>
+						<code>nodeLabel</code>: Label of the node.
+					</li>
+					<li>
+						<code>nodeWidth</code>: Current width of the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="getAnchorProvider">getAnchorProvider</h4>
+		<p>This method returns the instance providing connections anchors.</p>
+		<h4 id="getLabelIcon">getLabelIcon</h4>
+		<p>This method returns the icon that will displayed for this element&#8217;s representations.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>vpElement</code>: The element for which we need an icon.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h4 id="fitToText">fitToText</h4>
+		<p>This method returns the optimal dimension of the node.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>node</code>: The node representation.
+					</li>
+					<li>
+						<code>nodeLabel</code>: Label of the node.
+					</li>
+					<li>
+						<code>defaultSizeNodeFigure</code>: The draw2d representation of the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h3 id="ProvidingcustomStyleConfiguration">Providing custom StyleConfiguration</h3>
+		<p>The 
+			<code>StyleConfiguration</code> mechanism is only available for 
+			<code>ViewNode</code> at the moment. Default configurations are initially installed on nodes.
+		</p>
+		<p>
+			<b>SimpleStyleConfiguration</b>
+		</p>
+		<p>This configuration is the simplest implementation.</p>
+		<p>
+			<b>SquareStyleConfiguration</b>
+		</p>
+		<p>This is the minimal configuration for nodes using the 
+			<code>BundledImage</code> style with a square shape.
+		</p>
+		<p>
+			<b>SimpleSquareStyleConfiguration</b>
+		</p>
+		<p>This is the minimal configuration for nodes with a 
+			<code>Square</code> style.
+		</p>
+		<h4 id="ProvidersofStyleConfiguration">Providers of StyleConfiguration</h4>
+		<p>Installing your own configurations can be done through the 
+			<code>org.eclipse.sirius.diagram.styleConfigurationProvider</code> extension
+			<br/>point. This extension point requires only one attribute: the qualified name of the provider class.
+		</p>
+		<pre><code>&lt;extension point="org.eclipse.sirius.diagram.styleConfigurationProvider"&gt;
+   &lt;styleConfigurationProvider providerClass="com.example.diagseq.style.DiagSeqStyleConfigurationProvider" /&gt;
+&lt;/extension&gt;
+
+</code></pre>
+		<p>Here is a sample of the extension tab of the PDE editor when filling in this extension point:</p>
+		<p>
+			<img border="0" src="./images/style/styleConfigurationProviderExt.png"/>
+		</p>
+		<p>This example records the 
+			<code>DiagSeqStyleConfigurationProvider</code> as a configuration provider. This class must implement the
+			<br/>
+			<code>IStyleConfigrationProvider</code> interface.
+		</p>
+		<p>The latter interface defines two methods:</p>
+		<p>
+			<strong>
+				<code>boolean provides(DiagramElementMapping mapping, Style style)</code>
+			</strong>
+		</p>
+		<p>This method returns true if the provider provides a configuration for the given mapping and style.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>mapping</code>: The mapping of the node.
+					</li>
+					<li>
+						<code>style</code>: Style of the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<strong>
+				<code>StyleConfiguration createStyleConfiguration(DiagramElementMapping mapping, Style style)</code>
+			</strong>
+		</p>
+		<p>This method creates a StyleConfiguration for the specified mapping and style.</p>
+		<ul>
+			<li>Parameters
+				<ul>
+					<li>
+						<code>mapping</code>: Mapping of the node.
+					</li>
+					<li>
+						<code>style</code>: Style of the node.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Here is an example of a provider:</p>
+		<pre><code>public class DiagSeqStyleConfigurationProvider implements IStyleConfigurationProvider {
+    public StyleConfiguration createStyleConfiguration(DiagramElementMapping mapping, Style style) {
+        if (mapping instanceof NodeMapping) {
+            NodeMapping nodeMapping = (NodeMapping) mapping;
+            if (nodeMapping.getName() != null &amp;&amp; nodeMapping.getName().equals(DiagSeqConstants.INSTANCE_ROLE_MAPPING_NAME)) {
+                return new InstanceRoleStyleConfiguration();
+            }
+            if (nodeMapping.getName() != null &amp;&amp; nodeMapping.getName().equals(DiagSeqConstants.EXECUTION_MAPPING_NAME)) {
+                return new ExecutionSpecificationStyleConfiguration();
+            }
+        }
+        return null;
+    }
+
+    public boolean provides(DiagramElementMapping mapping, Style style) {
+        return mapping instanceof NodeMapping &amp;&amp; ((NodeMapping) mapping).getName() != null
+                &amp;&amp; (((NodeMapping) mapping).getName().equals(DiagSeqConstants.INSTANCE_ROLE_MAPPING_NAME)
+                	|| DiagSeqConstants.EXECUTION_MAPPING_NAME.equals(((NodeMapping) mapping).getName()));
+    }
+}
+
+
+</code></pre>
+		<h3 id="ExampleofaStyleConfigurationimplementation">Example of a StyleConfiguration implementation</h3>
+		<pre><code>public class SimpleStyleConfiguration implements StyleConfiguration {
+    public void adaptNodeLabel(DNode node, WrapLabel nodeLabel) {
+        if (nodeLabel.getParent() != null) {
+            Rectangle constraint = nodeLabel.getParent().getBounds().getCopy();
+
+            Insets borderDimension = this.getBorderDimension(node);
+            constraint.height -= (borderDimension.top + borderDimension.bottom);
+            constraint.width -= (borderDimension.left + borderDimension.right);
+            constraint.x += borderDimension.left;
+            constraint.y += borderDimension.top;
+
+            nodeLabel.setBounds(constraint);
+            nodeLabel.getParent().setConstraint(nodeLabel, constraint);
+        }
+    }
+
+    public int adaptViewNodeSizeWithLabel(DNode viewNode, WrapLabel nodeLabel, int nodeWidth) {
+        if (viewNode.getResizeKind() != ResizeKind.NONE_LITERAL) {
+
+        }
+        return nodeWidth;
+    }
+
+    public AnchorProvider getAnchorProvider() {
+        return null;
+    }
+
+    public BorderItemLocatorProvider getBorderItemLocatorProvider() {
+        return DefaultBorderItemLocatorProvider.getInstance();
+    }
+
+    public IBorderItemLocator getNameBorderItemLocator(DNode node, IFigure mainFigure) {
+        BorderItemLocator locator = new AirBorderItemLocator(mainFigure, PositionConstants.NSEW);
+        locator.setBorderItemOffset(new Dimension(1, 1));
+        return locator;
+    }
+
+    public Image getLabelIcon(DDiagramElement vpElement) {
+        EObject target = vpElement;
+        if (vpElement instanceof DSemanticDecorator) {
+            target = ((DSemanticDecorator) vpElement).getTarget();
+        }
+        if (isShowIcon(vpElement)) {
+            if (target != null) {
+                IItemLabelProvider labelProvider = (IItemLabelProvider) SiriusDiagramEditorPlugin.getInstance()
+                		.getItemProvidersAdapterFactory().adapt(target, IItemLabelProvider.class);
+                if (labelProvider != null) {
+                    ImageDescriptor descriptor = ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(target));
+                    if (descriptor == null) {
+                        descriptor = ImageDescriptor.getMissingImageDescriptor();
+                    }
+                    return SiriusDiagramEditorPlugin.getInstance().getImage(descriptor);
+                }
+            }
+        }
+        return null;
+    }
+
+    protected boolean isShowIcon(DDiagramElement vpElement) {
+        if (vpElement instanceof MappingBased) {
+            DiagramElementMapping vpElementMapping = ((MappingBased) vpElement).getMapping();
+            if (vpElementMapping instanceof NodeMapping) {
+                return ((NodeMapping) vpElementMapping).isShowIcon();
+            }
+            if (vpElementMapping instanceof EdgeMapping) {
+                return ((EdgeMapping) vpElementMapping).isShowIcon();
+            }
+            if (vpElementMapping instanceof ContainerMapping) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public Dimension fitToText(DNode node, WrapLabel nodeLabel, DefaultSizeNodeFigure defaultSizeNodeFigure) {
+        if (nodeLabel.getFont() != null) {
+            String text = node.getName();
+
+            int charHeight = FigureUtilities.getStringExtents("ABCDEF", nodeLabel.getFont()).height + 5;
+            int charWidth = FigureUtilities.getTextWidth("ABCDEFGHIJKLMNOPQRSTUVWXYZ", nodeLabel.getFont()) / 26;
+
+            double ratio = charHeight / charWidth;
+
+            int nbLines = (int) (Math.sqrt(text.length()) / ratio) + 1;
+            int nbCols = (int) (Math.sqrt(text.length()) * ratio) + 1;
+
+            int longestWord = this.getTheLongestWord(text.split("\\s"));
+            nbCols = Math.max(nbCols, longestWord);
+
+            int hHeight = nbLines * charHeight;
+            int hWidth = nbCols * charWidth;
+
+            Dimension size = nodeLabel.getPreferredSize(hWidth + nodeLabel.getIconBounds().width +
+            		nodeLabel.getIconTextGap(), hHeight).getCopy();
+
+            size.width += 20;
+            size.height += 30;
+
+            Insets borderDimension = this.getBorderDimension(node);
+            size.width += (borderDimension.left + borderDimension.right);
+            size.height += (borderDimension.top + borderDimension.bottom);
+
+            //
+            // Square ?
+            if (node.getHeight().intValue() == node.getWidth().intValue()) {
+                // size.width = Math.max(size.height, size.width);
+                // size.height = Math.max(size.height, size.width);
+            }
+
+            return size;
+        }
+        return defaultSizeNodeFigure.getBounds().getSize().getCopy();
+    }
+
+    private int getTheLongestWord(String[] strings) {
+        int max = -1;
+        for (int i = 0; i &lt; strings.length; i++) {
+            if (strings[i].length() &gt; max) {
+                max = strings[i].length();
+            }
+        }
+        return max;
+    }
+
+    /**
+     * Return the dimension of the border.
+     *
+     * @param nodeth
+     *            view node.
+     * @return the dimension of the border.
+     */
+    public Insets getBorderDimension(DNode node) {
+        return new Insets(0, 0, 0, 0);
+    }
+
+}
+
+</code></pre>
+		<p>The easiest way to implement your own configuration is to make it a sub class of 
+			<code>SimpleStyleConfiguration</code>.
+		</p>
+		<h2 id="GMFextensionpointsCustomStyleandEditPartProvider">GMF extension points, CustomStyle and EditPartProvider</h2>
+		<p>
+			<code>CustomStyle</code> is a style that can be applied to a node. Its only property is 
+			<code>id</code> that is a string value. By default,
+			<br/>applying a CustomStyle will have a Green Square be displayed. A custom 
+			<code>EditPart</code> describing the appearance of the node
+			<br/>must be implemented.
+		</p>
+		<p>Here is how to apply a 
+			<code>CustomStyle</code>:
+		</p>
+		<p>
+			<img border="0" src="./images/style/customStyle.png"/>
+		</p>
+		<p>Next step is to create and record an 
+			<code>EditPart</code> to define the way this style will be managed.
+		</p>
+		<p>An 
+			<code>EditPart</code> is a GEF class. It references both a model element and the shape that represents it. GMF adds a layer to GEF
+			<br/>and exposes its own 
+			<strong>EditPart</strong> API. The base type of this API is 
+			<code>IGraphicalEditPart</code> (in package
+			<br/>
+			<code>org.eclipse.gmf.runtime.diagram.ui.editparts</code>). Here are the main methods this interface defines:
+		</p>
+		<ul>
+			<li>
+				<code>EObject resolveSemanticElement()</code>: This method returns the semantic element of the edit part. The type of this semantic element is a type contained by the Sirius package (see 
+				<code>SiriusPackage</code>). For instance, if we were to write an 
+				<code>EditPart</code> for our 
+				<code>CustomStyle</code>, the semantic element would be the said 
+				<code>CustomStyle</code>. It is possible to get the ViewNode with it and, then, the target element.
+			</li>
+			<li>
+				<code>View getNotationView()</code>: This method returns the GMF View of the edit part. This is the view that will be saved into the GMF Diagram.
+			</li>
+		</ul>
+		<p>All Custom Style Edit Part must implement the 
+			<code>IStyleEditPart</code> interface. Semantically, a Style Edit Part should not be selectable: it is selected when the Shape or Connector that contains  it is selected. Therefore, 
+			<strong>all Custom Style Edit Part should override the 
+				<code>isSelectable()</code> method and return false
+			</strong>. If you can, inherit from the abstract class 
+			<code>AbstractNotSelectableShapeNodeEditPart</code> that already overrides correctly this method. You should also override the 
+			<code>createDefaultEditPolicies</code> to do nothing if you want to let Sirius control your custom node as it is done in the provided Sirius style edit parts: the style part is responsible for the style/figure aspects while its parent part will mainly control the behavior by its policies. Otherwise you will need to properly add policies to override the default GMF policies, add your own specific policies or the Sirius ones.
+		</p>
+		<p>Here is a sample of a Custom Style Edit Part:</p>
+		<pre><code>public class InstanceRoleStyleEditPart extends AbstractNotSelectableShapeNodeEditPart implements IStyleEditPart {
+
+    /**
+     * the content pane.
+     */
+    protected IFigure contentPane;
+
+    /**
+     * the primary shape.
+     */
+    protected ImageFigure primaryShape;
+
+    /**
+     * Create a new {@link ChangingImageEditPart}.
+     *
+     * @param view
+     *            the view.
+     */
+    public InstanceRoleStyleEditPart(View view) {
+        super(view);
+    }
+
+    public DragTracker getDragTracker(Request request) {
+        return getParent().getDragTracker(request);
+    }
+
+    protected NodeFigure createNodeFigure() {
+        NodeFigure figure = createNodePlate();
+        figure.setLayoutManager(new XYLayout());
+        IFigure shape = createNodeShape();
+        figure.add(shape);
+        contentPane = setupContentPane(shape);
+        return figure;
+    }
+
+    private NodeFigure createNodePlate() {
+        DefaultSizeNodeFigure result = new AirStyleDefaultSizeNodeFigure(getMapMode().DPtoLP(40), getMapMode().DPtoLP(40));
+        return result;
+    }
+
+    /**
+     * Create the instance role figure.
+     *
+     * @return the created figure.
+     */
+    protected ImageFigure createNodeShape() {
+        if (primaryShape == null) {
+            primaryShape = new ImageFigure();
+        }
+        return primaryShape;
+    }
+
+    /**
+     * Return the instance role figure.
+     *
+     * @return the instance role figure.
+     */
+    public ImageFigure getPrimaryShape() {
+        return primaryShape;
+    }
+
+    /**
+     * Default implementation treats passed figure as content pane. Respects
+     * layout one may have set for generated figure.
+     *
+     * @param nodeShape
+     *            instance of generated figure class
+     * @return the figure
+     */
+    protected IFigure setupContentPane(IFigure nodeShape) {
+        return nodeShape; // use nodeShape itself as contentPane
+    }
+
+    public IFigure getContentPane() {
+        if (contentPane != null) {
+            return contentPane;
+        }
+        return super.getContentPane();
+    }
+
+    protected void refreshVisuals() {
+        CustomStyle customStyle = (CustomStyle) this.resolveSemanticElement();
+        if (customStyle.eContainer() instanceof DNode) {
+            this.getPrimaryShape().setImage(SiriusPlugin.getDefault().getBundledImage(((DNode) customStyle.eContainer()).getName()));
+        }
+    }
+
+    protected void createDefaultEditPolicies() {
+        // empty.
+    }
+}
+
+</code></pre>
+		<p>We now have to notify Sirius that we are providing a new 
+			<code>EditPart</code> for nodes having a CustomStyle of that id.
+			<br/>The GMF extension mechanism can be used to achieve this.
+		</p>
+		<p>plugin.xml:</p>
+		<p>
+			<img border="0" src="./images/style/editPartProvider_plugin1.png"/>
+		</p>
+		<pre><code>&lt;extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders"&gt;
+  &lt;editpartProvider class="com.example.diagseq.provider.DiagSeqEditPartProvider"&gt;
+    &lt;Priority name="High"/&gt;
+  &lt;/editpartProvider&gt;
+&lt;/extension&gt;
+
+</code></pre>
+		<p>The provider class (
+			<code>com.example.diagseq.provider.DiagSeqEditPartProvider</code>) extends the GMF class
+			<br/>
+			<code>org.eclipse.gmf.runtime.diagram.ui.services.editpart.AbstractEditPartProvider</code>. Our custom Edit part will be
+			<br/>provided by overriding 
+			<code>getNodeEditPartClass</code>. Here is how this class looks like:
+		</p>
+		<pre><code>public class DiagSeqEditPartProvider extends AbstractEditPartProvider {
+    @Override
+    protected Class getNodeEditPartClass(View view) {
+        if (view.getElement() instanceof CustomStyle) {
+            CustomStyle customStyle = (CustomStyle) view.getElement();
+            if (customStyle.getId().equals(DiagSeqConstants.INSTANCE_ROLE_STYLE_ID)) {
+                return InstanceRoleStyleEditPart.class;
+            }
+        }
+        return super.getNodeEditPartClass(view);
+    }
+}
+
+</code></pre>
+		<p>Where 
+			<code>DiagSeqConstants.INSTANCE_ROLE_STYLE_ID</code> is the id of our custom style.
+		</p>
+		<p>In the modeler, the result looks like this:</p>
+		<p>
+			<img border="0" src="./images/style/instanceRole.png"/>
+		</p>
+		<h2 id="GMFextensionpoints">GMF extension points</h2>
+		<p>GMF exposes all of the necessary API to extend the default behavior of a modeler.</p>
+		<ul>
+			<li>Edit Part provider.</li>
+			<li>Edit Policy Provider.</li>
+			<li>Layout Provider</li>
+		</ul>
+		<h3 id="EditPartProvider">Edit Part Provider</h3>
+		<p>We saw earlier how to provide custom edit parts. Here is how the result looks like in Sirius.</p>
+		<p>Snapshot of the Sirius meta-model:</p>
+		<p>
+			<img border="0" src="./images/style/viewpoint.jpg"/>
+		</p>
+		<p>The types DNode, DNodeContainer, DNodeList, DNodeListElement, etc. have their own edit parts:</p>
+		<p>
+			<img border="0" src="./images/style/editParts.jpg"/>
+		</p>
+		<h3 id="EditPolicyProvider">Edit Policy Provider</h3>
+		<p>Edit Policies are objects responsible for the handling of user actions. There are Edit Policies for different behaviors:</p>
+		<ul>
+			<li>Creation</li>
+			<li>Deletion</li>
+			<li>Move elements</li>
+			<li>Selection</li>
+			<li>etc.</li>
+		</ul>
+		<p>As with edit parts, it is necessary to write an Edit Policy Provider as well as the Edit Policy that is to be provided. The
+			<br/>Edit Policy Provider must implement the 
+			<code>IEditPolicyProvider</code> interface:
+		</p>
+		<ul>
+			<li>
+				<code>public void addProviderChangeListener(IProviderChangeListener listener)</code>: Registers a listener on the provider.
+			</li>
+			<li>
+				<code>public boolean provides(IOperation operation)</code>: Returns true if this instance provides edit policies for the specified operation.
+			</li>
+			<li>
+				<code>public void removeProviderChangeListener(IProviderChangeListener listener)</code>: Removes a listener from this provider.
+			</li>
+			<li>
+				<code>public void createEditPolicies(EditPart editPart)</code>: Adds edit policies on the specified edit part.
+			</li>
+		</ul>
+		<p>Here is an example of an Edit Policy Provider</p>
+		<pre><code>/**
+ * Provides Edit Policy for Note Attachment.
+ */
+public class AirNoteAttachmentEditPolicyProvider implements IEditPolicyProvider {
+
+    /** the property change support. */
+    private List listeners;
+
+    /**
+     * Create a new {@link AirNoteAttachmentEditPolicyProvider}.
+     */
+    public AirNoteAttachmentEditPolicyProvider() {
+        this.listeners = new ArrayList(2);
+    }
+
+    public void createEditPolicies(EditPart editPart) {
+        if (editPart instanceof NoteAttachmentEditPart) {
+            editPart.installEditPolicy(EditPolicy.CONNECTION_ROLE, new AirNoteAttachmentEditPolicy());
+        }
+    }
+
+    public void addProviderChangeListener(IProviderChangeListener listener) {
+        this.listeners.add(listener);
+    }
+
+    public boolean provides(IOperation operation) {
+        if (operation instanceof CreateEditPoliciesOperation) {
+            CreateEditPoliciesOperation castedOperation = (CreateEditPoliciesOperation) operation;
+            EditPart editPart = castedOperation.getEditPart();
+            Object model = editPart.getModel();
+            if (model instanceof View) {
+                View view = (View) model;
+                if (view.getDiagram() != null &amp;&amp; view.getDiagram().getElement() != null
+                        &amp;&amp; view.getDiagram().getElement().eClass().getEPackage().getNsURI().equals(ViewpointPackage.eINSTANCE.getNsURI())) {
+                    if ("NoteAttachment".equals(view.getType())) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    public void removeProviderChangeListener(IProviderChangeListener listener) {
+        this.listeners.remove(listener);
+    }
+
+    /**
+     * Fire a {@link ProviderChangeEvent}.
+     */
+    protected void fireProviderChanged() {
+        ProviderChangeEvent event = new ProviderChangeEvent(this);
+        Iterator iterListener = this.listeners.iterator();
+        while (iterListener.hasNext()) {
+            IProviderChangeListener listener = (IProviderChangeListener) iterListener.next();
+            listener.providerChanged(event);
+        }
+    }
+
+}
+
+</code></pre>
+		<p>More flexibility can be achieved by writing an abstract provider:</p>
+		<pre><code>public abstract class AbstractEditPolicyProvider implements IEditPolicyProvider {
+
+    /** All listeners. */
+    private List listeners = new ArrayList(1);
+
+    public void addProviderChangeListener(IProviderChangeListener listener) {
+        this.listeners.add(listener);
+    }
+
+    public void removeProviderChangeListener(IProviderChangeListener listener) {
+        this.listeners.remove(listener);
+    }
+
+    protected void fireProviderChanged() {
+        ProviderChangeEvent event = new ProviderChangeEvent(this);
+        Iterator iterListener = this.listeners.iterator();
+        while (iterListener.hasNext()) {
+            IProviderChangeListener listener = (IProviderChangeListener) iterListener.next();
+            listener.providerChanged(event);
+        }
+    }
+}
+
+</code></pre>
+		<p>There only remains to override the methods 
+			<code>provides()</code> and 
+			<code>createEditPolicies()</code> in this provider&#8217;s implementations.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_migrate_contribution.html b/doc/6.0.x/developer/extensions-provide_migrate_contribution.html
new file mode 100644
index 0000000..2b8fe6f
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_migrate_contribution.html
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_migrate_contribution</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvideCustomMigrationParticipants">Sirius &#8211; Provide Custom Migration Participants</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>In some cases, a migration of representation files or VSMs between two versions of meta-model is required. The migration process has been rewritten to be performed automatically at resource loading time. This migration is transparent for the end-user.
+			<br/>If you have extended Sirius meta-models, you may need to implement your own migration rules.
+		</p>
+		<p>To contribute to the Sirius migration process, you need to implement an 
+			<code>org.eclipse.sirius.business.api.migration.IMigrationParticipant</code> and provide it through the 
+			<code>org.eclipse.sirius.migrationParticipant</code> extension point.
+		</p>
+		<h2 id="Extensionpoint">Extension point</h2>
+		<p>The 
+			<code>org.eclipse.sirius.migrationParticipant</code> extension point allows to contribute migration participants. Each contribution must provide an implementation of 
+			<code>IMigrationParticipant</code> and a &#8220;kind&#8221; attribute which gives informations about what kind of file is concerned (
+			<code>REPRESENTATIONSFILE_KIND</code> for Representation files and 
+			<code>VSM_KIND</code> for VSMs).
+		</p>
+		<h2 id="MigrationParticipantsimplementation">MigrationParticipants implementation</h2>
+		<p>Each methods of an 
+			<code>IMigrationParticipant</code> receives the current version of the model to migrate, corresponding to the 
+			<code>org.eclipse.sirius</code> bundle version.
+		</p>
+		<ul>
+			<li>
+				<code>EStructuralFeature getAttribute(EClass eClass, String name, String version)</code> is called during the parsing of XMIResources (at loading time). It allows to retrieve a renamed 
+				<code>EAttribute</code> from its old name. For example, if an attribute 
+				<em>foo</em> has been renamed to 
+				<em>bar</em>, then your MigrationParticipant should return the 
+				<em>bar</em> attribute when given the 
+				<em>'foo'</em> name.
+			</li>
+			<li>
+				<code>EStructuralFeature getLocalElement(EClass eClass, String name, String version)</code> is called during the parsing of XMIResources (at loading time). If the feature name has changed, you should return the correct one.
+			</li>
+			<li>
+				<code>EClassifier getType(EPackage ePackage, String name, String version)</code> is called during the parsing of XMIResources (at loading time). If an 
+				<code>EClassifier</code> name has changed, then you should return the correct one.
+			</li>
+			<li>
+				<code>Object getValue(EObject object, EStructuralFeature feature, Object value, String version)</code> is called during the parsing of XMIResources (at loading time). If a feature value has changed since a previous version, use this method to return the correct expected value. 
+			</li>
+			<li>
+				<code>void postLoad(XMLResource resource, String version)</code> is called after the resource loading. All other structural changes in meta-models should be migrated here.
+			</li>
+			<li>
+				<code>Version getMigrationVersion()</code> is used by the migration framework to determine if at least one migration is needed. This method has to provide the Sirius version for which your migration is written. The framework doesn&#8217;t decide whether your participant need to be launched or not, you have to make sure that the Sirius version number of the loaded resource (available via the version parameter) requires a migration.
+			</li>
+		</ul>
+		<h2 id="Managetheversionnumber">Manage the version number</h2>
+		<p>Your migration participant has to return the Sirius version number where your migration is introduced. For example, you have to write a new migration for viewpoint 6.7.0, your migration participant 
+			<code>getMigrationVersion()</code> has to return 6.7.0.qualifier, where the qualifier may be the current date.
+		</p>
+		<p>
+			<code>getMigrationVersion()</code> is used by the migration framework to determine if at least one participant has to be called, in that case the migration mechanism is launched.
+		</p>
+		<p>
+			<strong>Your migration participant is responsible to make sure that it has to perform its migration</strong>. Indeed, 
+			<code>getMigrationVersion()</code> is only used by the migration framework to determine if at least one migration is needed. You have to make sure that the viewpoint version number of the loaded resource requires a migration.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_repair_contribution.html b/doc/6.0.x/developer/extensions-provide_repair_contribution.html
new file mode 100644
index 0000000..d5974f2
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_repair_contribution.html
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_repair_contribution</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvideCustomRepairParticipants">Sirius &#8211; Provide Custom Repair Participants</h1>
+		<p>In some cases, some repair operations are specific to representation nature (like sequence diagram for example). You need to implement 
+			<code>org.eclipse.sirius.business.api.repair.IRepairParticipant</code> through the 
+			<code>org.eclipse.sirius.viewpoint.repair.repairParticipant</code> extension point to contribute to repair process.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_resource_strategy.html b/doc/6.0.x/developer/extensions-provide_resource_strategy.html
new file mode 100644
index 0000000..3299559
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_resource_strategy.html
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_resource_strategy</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidearesourcestrategy">Sirius &#8211; Provide a resource strategy</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>The 
+			<em>resource strategy registry</em>, 
+			<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategyRegistry</code>, centralizes all behaviors related to resource used in Sirius Session that can be overridden.
+			<br/>The extension point 
+			<code>org.eclipse.sirius.resourceStrategy</code> allows to contribute a new behavior for each 
+			<em>resource strategy type</em>.
+			<br/>When you contribute a new 
+			<code>ResourceStrategy</code>, you need to handle one or more of the 
+			<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType</code> by using 
+			<code>canHandle</code> methods. For each type, there is one or more methods to override from 
+			<code>org.eclipse.sirius.business.api.resource.strategy.AbstractResourceStrategyImpl</code>. The methods to override are documented in javadoc of each 
+			<code>ResourceStrategyType</code>.
+		</p>
+		<p>To know all behaviors that can be overridden, you must refer to 
+			<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType</code>.
+		</p>
+		<h2 id="Example">Example</h2>
+		<p>Here is an example that ignore &#8220;*.genmodel&#8221; files as semantic model of Sirius Session.</p>
+		<p>You have to add your resource strategy contribution in the plugin.xml file.</p>
+		<pre>&lt;extension point="org.eclipse.sirius.resourceStrategy"&gt;
+   &lt;resourceStrategy
+     class="org.eclipse.sirius.tests.unit.api.convert.TestResourceStrategyToIgnoreGenModelFile"&gt;
+   &lt;/resourceStrategy&gt;
+&lt;/extension&gt;
+
+</pre>
+		<p>The class references a class extending the 
+			<code>AbstractResourceStrategyImpl</code>. The corresponding code is:
+		</p>
+		<pre>/**
+ * This class overrides AbstractResourceStrategyImpl and also ignores genmodel
+ * files.
+ */
+public class TestResourceStrategyToIgnoreGenModelFile extends AbstractResourceStrategyImpl {
+
+    @Override
+    public boolean isPotentialSemanticResource(URI uri) {
+        boolean result = super.isPotentialSemanticResource(uri);
+        if (result &amp;&amp; uri != null) {
+            result = !"genmodel".equals(uri.fileExtension());
+        }
+        return result;
+    }
+
+    @Override
+    public boolean canHandle(URI resourceURI, ResourceStrategyType resourceStrategyType) {
+        return ResourceStrategyType.SEMANTIC_RESOURCE.equals(resourceStrategyType);
+    }
+}
+
+</pre>
+		<p></p>
+		<ul>
+			<li>
+				<code>canHandle</code> allows to restrict this new resource strategy to only one type (
+				<code>ResourceStrategyType.SEMANTIC_RESOURCE</code>).
+			</li>
+			<li>
+				<code>isPotentialSemanticResource(URI)</code> is overridden to also ignore genmodel.
+			</li>
+			<li>
+				<code>isLoadableModel(URI, Session)</code> is not overridden as we want to keep the default behavior for this method.
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_save_dialog.html b/doc/6.0.x/developer/extensions-provide_save_dialog.html
new file mode 100644
index 0000000..228f51c
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_save_dialog.html
@@ -0,0 +1,100 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_save_dialog</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidecustomsavedialog">Sirius &#8211; Provide custom save dialog</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>Sirius uses the same 
+			<em>Save Dialog</em> for any operation that implies to the end-user whether changes made on session should be saved or discarded (when closing a session through the 
+			<code>CloseUISessionCommand</code>, when controlling resources...).
+		</p>
+		<p>Developer may need to extend this save dialog to propose other choices to the end-user.</p>
+		<h2 id="CustomizeSiriussavedialogs">Customize Sirius save dialogs</h2>
+		<h3 id="TheISaveDialogExtensioninterface">The 
+			<code>ISaveDialogExtension</code> interface
+		</h3>
+		<p>This interface allows to:</p>
+		<ul>
+			<li>Customize the choices given to the end-user when a save dialog opens (for example default is 
+				<em>Save</em> and 
+				<em>Discard</em>)
+			</li>
+			<li>Add additional behavior according to the choice made by user.</li>
+		</ul>
+		<ul>
+			<li>
+				<code>boolean isSaveDialogFor(Object objectToSave)</code> : allows to indicates whether this extension should be applied (condition on the Session for example)
+			</li>
+			<li>
+				<code>Collection&lt;String&gt; getButtons();</code> : returns a collection of String corresponding to the available choices for a save dialog (do no override CANCEL, this will be added automatically if possible)
+			</li>
+			<li>
+				<code>int reactToValue(Object objectToSave, int userChoice);</code> : defines the behavior to apply when faced to the given user choice.
+			</li>
+		</ul>
+		<h3 id="ProvideyourISaveDialogExtensionusingtheorg.eclipse.sirius.common.ui.savedialogextensionextensionpoint">Provide your 
+			<code>ISaveDialogExtension</code> using the 
+			<code>org.eclipse.sirius.common.ui.savedialogextension</code> extension point
+		</h3>
+		<p>Please refer to this extension point documentation  for more details.</p>
+		<h2 id="Example">Example</h2>
+		<pre><code>package myPackage;
+
+import com.google.common.collect.Lists;
+import java.util.Collection;
+import org.eclipse.sirius.business.api.session.Session;
+import org.eclipse.ui.ISaveablePart2;
+
+public class CustomSaveDialogExtension {
+
+    public boolean isSaveDialogFor(Object objectToSave) {
+        // This save dialog is active if
+        // - the saved element is a session
+        return (objectToSave instanceof Session)
+        // - the session ID is "SaveSession"
+                &amp;&amp; "SaveSession".equals(((Session) objectToSave).getID());
+    }
+
+    public Collection&lt;String&gt; getButtons() {
+        return Lists.newArrayList("Save", "Make something special", "Discard");
+    }
+
+    public int reactToValue(Object objectToSave, int temporaryResult) {
+        Session session = (Session) objectToSave;
+        int returnedValue = ISaveablePart2.YES;
+
+        switch (temporaryResult) {
+        // Case 0 : "Save"
+        case 0:
+            // we will return ISaveablePart2.YES =&gt; the session will be saved
+            // normally
+            break;
+        // Case 1 : "Make something special"
+        case 1:
+            makeSomethingSpecial(session);
+            // we will return CANCEL =&gt; nothing else willl be done
+            returnedValue = ISaveablePart2.CANCEL;
+            break;
+        // Case 2 : "Discard"
+        case 2:
+            // we return NO =&gt; changes will be discarded
+            returnedValue = ISaveablePart2.NO;
+            break;
+        // Default : "CANCEL" or any other
+        default:
+            returnedValue = ISaveablePart2.CANCEL;
+            break;
+
+        }
+        return returnedValue;
+    }
+}
+
+</code></pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/extensions-provide_tabbar_extensions.html b/doc/6.0.x/developer/extensions-provide_tabbar_extensions.html
new file mode 100644
index 0000000..617f1e7
--- /dev/null
+++ b/doc/6.0.x/developer/extensions-provide_tabbar_extensions.html
@@ -0,0 +1,296 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>extensions-provide_tabbar_extensions</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusProvidetabbarextensions">Sirius &#8211; Provide tab-bar extensions</h1>
+		<h2 id="Goals">Goals</h2>
+		<p>The top area of all Sirius diagram editors is filled with the 
+			<em>tab-bar</em>, which provides access to many operations on diagrams and their elements. The content of the tab-bar will depends on whether the current selection is the diagram itself (i.e. no element is selected) or one or several diagram elements.
+		</p>
+		<p>When the diagram itself (and not a specific element) is selected, the tab-bar contains the following buttons: 
+			<br/>	
+			<img border="0" src="images/tabbar01.png"/>
+		</p>
+		<p>The tab-bar contains a different set of actions when at least one element is selected:	
+			<br/>	
+			<img border="0" src="images/tabbar02.png"/>
+		</p>
+		<p>Sirius allows to define new operations and to add them at the end of the tab-bar.</p>
+		<h2 id="Addanewtabbaritem">Add a new tab-bar item</h2>
+		<p>Sirius asks the workbench&#8217;s 
+			<code>IMenuService</code> service to populate the tab-bar with provided contributions. This service leans on the 
+			<code>org.eclipse.ui.menus</code> extension point.
+		</p>
+		<p>Sirius defines the tab-bar as a toolbar with the id 
+			<em>org.eclipse.sirius.diagram.ui.tabbar</em>. 
+			<br/>Menu contributions to tab-bar must be declared with the 
+			<em>toolbar</em> scheme and the Sirius tab-bar id.
+		</p>
+		<p>You can use the insertion point part of the 
+			<em>locationUri</em> to organize your contributions. Sirius defines the 
+			<em>additions</em> group, this group and all contribution will be placed at the end of the tab-bar.
+		</p>
+		<p>You can choose when to make your contribution visible (see the example) with the 
+			<em>visibleWhen</em> element and some property testers: show a menu for diagram selection or only on some diagram with a specific description, ... Sirius defines several property testers like 
+			<em>org.eclipse.sirius.diagram.ui.isDDiagram</em> and 
+			<em>org.eclipse.sirius.diagram.ui.isDDiagramElement</em>, but you can define your own domain specific testers.
+		</p>
+		<h3 id="Provideyourtabbaritemsusingtheorg.eclipse.ui.menusextensionpoint">Provide your tab-bar items using the 
+			<code>org.eclipse.ui.menus</code> extension point
+		</h3>
+		<p>Please refer to this extension point documentation for more details.</p>
+		<h3 id="Provideyouroperationusingtheorg.eclipse.ui.commandsextensionpoint">Provide your operation using the 
+			<code>org.eclipse.ui.commands</code> extension point
+		</h3>
+		<p>Please refer to this extension point documentation for more details.</p>
+		<h3 id="Example">Example</h3>
+		<p>The following example defines a new push button for the tab-bar. The contribution will only be visible when an element is selected on diagram which correspond to a specific description.</p>
+		<p>You have to add your menu contribution in the plugin.xml file.</p>
+		<p>	
+			<img border="0" src="images/tabbar_extension_plugin_xml.png"/>
+		</p>
+		<p>The first step is to create the menu contribution to reference an existing command:</p>
+		<pre> &lt;extension point="org.eclipse.ui.menus"&gt;
+    &lt;menuContribution
+          allPopups="false"
+          locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=additions"&gt;
+        &lt;command
+              commandId="org.example.myproject.command.id"
+              icon="images/action.gif"
+              id="org.eclipse.sirius.diagram.tabbar.test.action.on.diagramelement"
+              label="Action on DDiagramElement"
+              tooltip="Action on DDiagramElement"&gt;
+   &lt;!-- [...] a visible when element will be added later to control the visibility --&gt;
+        &lt;/command&gt;
+    &lt;/menuContribution&gt;
+ &lt;/extension&gt;
+
+</pre>
+		<p>The 
+			<em>locationURI</em> references the Sirius tabbar with 
+			<code>toolbar:org.eclipse.sirius.diagram.ui.tabbar</code> and and insertion point 
+			<code>?after=additions</code>.
+			<br/> The command element references an existing 
+			<em>commandID</em>, and defines its own menu id (can be used as insertion/organization point in other contributions 
+			<em>locationURI</em>), its label and tooltip. If a key binding exists on the referenced command, the workbench will add it to the tooltip.
+		</p>
+		<p>Then you can control the visibility of your contribution with a visible when element. </p>
+		<pre>   &lt;!-- [...] continued from the example above --&gt;
+   &lt;visibleWhen checkEnabled="false"&gt;
+      &lt;and&gt;
+         &lt;with variable="activeEditorId"&gt;
+            &lt;equals value="org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorID"/&gt;
+         &lt;/with&gt;
+         &lt;with variable="activeEditor"&gt;
+             &lt;test property="org.eclipse.sirius.sample.tabbar.isConcernedEditor"/&gt;
+         &lt;/with&gt;
+         &lt;with variable="selection"&gt;
+            &lt;iterate ifEmpty="false" operator="or"&gt;
+               &lt;and&gt;
+                  &lt;test property="org.eclipse.sirius.diagram.ui.isDDiagramElement"/&gt;
+                  &lt;test property="org.eclipse.sirius.sample.tabbar.shouldActivateTabbarExtension"/&gt;
+               &lt;/and&gt;
+            &lt;/iterate&gt;
+         &lt;/with&gt;
+      &lt;/and&gt;
+   &lt;/visibleWhen&gt;
+&lt;/command&gt;
+     
+</pre>
+		<p>The sample contribution declares four conditions to enable its visibility:</p>
+		<ul>
+			<li>it checks that the active editor is a Sirius Diagram Editor using the workbench variable 
+				<em>activeEditorId</em> and the Sirius Diagram Editor id.
+			</li>
+			<li>it asks a property tester if the active editor should trigger the contribution visibility (see next section for the sample property tester explanation)</li>
+			<li>it iterates over the selection with a &#8220;OR&#8221; operator between elements and a false result for empty selection:
+				<ul>
+					<li>it uses the Sirius predefined property tester to check that a selected element is a diagram element.</li>
+					<li>it asks a property tester if the current element should trigger the contribution visibility (see next section for the sample property tester explanation)</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Property testers are defined in the plug-in.xml file. They define namespace, some properties and the type of elements they can test.</p>
+		<pre>&lt;extension point="org.eclipse.core.expressions.propertyTesters"&gt;
+   &lt;propertyTester
+         class="org.eclipse.sirius.sample.tabbar.SampleTestTabbarExtensionActivationPropertyTester"
+         id="org.eclipse.sirius.sample.tabbar.ActiveExtensionTester"
+         namespace="org.eclipse.sirius.sample.tabbar"
+         properties="shouldActivateTabbarExtension"
+         type="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"&gt;
+   &lt;/propertyTester&gt;
+   &lt;propertyTester
+         class="org.eclipse.sirius.sample.tabbar.SampleTestTabbarExtensionActivationPropertyTester"
+         id="org.eclipse.sirius.sample.tabbar.ConcernEditorTester"
+         namespace="org.eclipse.sirius.sample.tabbar"
+         properties="isConcernedEditor"
+         type="org.eclipse.ui.IEditorPart"&gt;
+   &lt;/propertyTester&gt;
+&lt;/extension&gt;
+
+</pre>
+		<p>Here is the implementation of the corresponding property tester. The 
+			<em>isConcerned</em> property will lead to check the 
+			<code>DiagramDescription</code> id of the current editor. The 
+			<em>shouldActivateTabbarExtension</em> will lead to check a property of the selected domain object.
+		</p>
+		<pre><code>package org.eclipse.sirius.sample.tabbar;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.DRepresentation;
+import org.eclipse.sirius.diagram.edit.api.part.IDiagramElementEditPart;
+import org.eclipse.sirius.ui.business.api.dialect.DialectEditor;
+
+/**
+ * Sample property tester.
+ * 
+ * @author mporhel
+ */
+public class SampleTestTabbarExtensionActivationPropertyTester extends PropertyTester {
+    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+        if ("isConcernedEditor".equals(property)) {
+            // called in a with activeEditor element
+            if (receiver instanceof DialectEditor) {
+                DRepresentation activeRepresentation = ((DialectEditor) receiver).getRepresentation();
+                if (activeRepresentation instanceof DDiagram) {
+                    // the id property in the VSM editor : name in the meta
+                    // model.
+                    return "diagram.description.sample.id".equals(((DDiagram) activeRepresentation).getDescription().getName());
+                }
+            }
+        } else if ("shouldActivateTabbarExtension".equals(property)) {
+            if (receiver instanceof IDiagramElementEditPart) {
+                EObject domainElement = ((IDiagramElementEditPart) receiver).resolveTargetSemanticElement();
+                // sample condition
+                return domainElement instanceof EClass &amp;&amp; ((EClass) domainElement).isAbstract();
+            }
+        }
+        return false;
+    }
+}
+
+
+</code></pre>
+		<p>The a new button is added to the tab-bar only when the selection contains an abstract 
+			<code>EClass</code> is selected and the active editor corresponds to the expected description id: 
+		</p>
+		<p>	
+			<img border="0" src="images/tabbar_extension_result.png"/>
+		</p>
+		<h2 id="contributeFullTabbar">Contribute a full customized tab-bar</h2>
+		<p>Sirius lets the possibility to contribute an entire customized tab-bar. To do so, the developer has to contribute an 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.ITabbarContributor</code> to the 
+			<code>org.eclipse.sirius.diagram.ui.tabbarContributor</code> extension-point. An abstract implementation of 
+			<code>ITabbarContributor</code> exists: 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor</code>. This implementation contains protected methods that allows creating one or several contributions of the default Sirius tab-bar. See the 
+			<a href="../user/diagrams/Diagrams.html#ref_tabbar">Tab-bar</a> section in user manual for more details about each items.
+		</p>
+		<p>here is an example of 
+			<code>ITabbarContributor</code> implementation. This sample provides two different tab-bar whether the selection is done on a diagram element (a Node or a Container for instance) or on the diagram (no specific selection). If the selection is done on an Edge, the tab-bar will be empty since the sample doesn&#8217;t return any contributionItem.
+		</p>
+		<pre><code>public class TestTabbarExt extends AbstractTabbarContributor {
+
+    private ArrayList&lt;IContributionItem&gt; diagramContributionItems;
+
+    private ArrayList&lt;IContributionItem&gt; diagramElementContributionItems;
+
+    @Override
+    public List&lt;IContributionItem&gt; getContributionItems(ISelection selection, IDiagramWorkbenchPart part, ToolBarManager manager) {
+        List&lt;IContributionItem&gt; contributionItems = new ArrayList&lt;IContributionItem&gt;();
+        if (selection instanceof IStructuredSelection) {
+            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+            if (firstElement instanceof AbstractDDiagramEditPart) {
+                contributionItems = getDiagramContributionItem(part, manager);
+            } else if (firstElement instanceof IAbstractDiagramNodeEditPart) {
+                contributionItems = getDiagramElementContributionItem(part, manager);
+            }
+        }
+        return contributionItems;
+    }
+
+    @Override
+    public boolean accept(ISelection selection) {
+        boolean accept = false;
+        if (selection == null) {
+            accept = true;
+        } else if (selection instanceof IStructuredSelection) {
+            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+            if (firstElement instanceof AbstractDDiagramEditPart || firstElement instanceof IAbstractDiagramNodeEditPart) {
+                accept = true;
+            }
+        }
+        return accept;
+    }
+
+    @Override
+    public List&lt;IContributionItem&gt; getContributionItems(IDiagramWorkbenchPart part, ToolBarManager manager) {
+        return getDiagramContributionItem(part, manager);
+    }
+
+    private List&lt;IContributionItem&gt; getDiagramContributionItem(IDiagramWorkbenchPart part, ToolBarManager manager) {
+        if (diagramContributionItems == null) {
+            diagramContributionItems = new ArrayList&lt;IContributionItem&gt;();
+            diagramContributionItems.add(createArrangeMenuManager(part));
+            diagramContributionItems.add(createSelectMenuManager());
+            diagramContributionItems.add(createLayerContribution(part, manager));
+            diagramContributionItems.add(createZoomInContribution(part));
+            diagramContributionItems.add(createZoomOutContribution(part));
+            diagramContributionItems.add(createZoomContribution(part));
+            diagramContributionItems.add(createSelectPinnedElementsContribution(part));
+            diagramContributionItems.add(createSelectHiddenElementsContribution(part));
+            diagramContributionItems.add(createFilterContribution(part, manager));
+            diagramContributionItems.add(createPasteLayoutContribution(part));
+            diagramContributionItems.add(createRefreshContribution());
+            diagramContributionItems.add(createSaveAsImageContributionItem());
+            diagramContributionItems.add(createLayoutingModeContributionItem(part));
+            diagramContributionItems.add(createCopyAppearancePropertiesContribution(part));
+            diagramContributionItems.add(createCopyLayoutContribution(part));
+        }
+        return diagramContributionItems;
+    }
+
+    private List&lt;IContributionItem&gt; getDiagramElementContributionItem(IDiagramWorkbenchPart part, ToolBarManager manager) {
+        if (diagramElementContributionItems == null) {
+            diagramElementContributionItems = new ArrayList&lt;IContributionItem&gt;();
+            diagramElementContributionItems.add(createArrangeMenuManager(part));
+            diagramElementContributionItems.add(createAlignMenuManager());
+            diagramElementContributionItems.add(createHideElementLabelContribution(part));
+            diagramElementContributionItems.add(createHideElementContribution(part));
+            diagramElementContributionItems.add(createDeleteFromDiagramContribution(part));
+            diagramElementContributionItems.add(createDeleteFromModelContribution(part));
+            IContributionItem pinElementContributionItem = createPinElementContribution(part);
+            diagramElementContributionItems.add(pinElementContributionItem);
+            diagramElementContributionItems.add(createUnPinElementContribution(part, pinElementContributionItem));
+            diagramElementContributionItems.add(createFontColorContribution(part));
+            diagramElementContributionItems.add(createPasteLayoutContribution(part));
+            diagramElementContributionItems.add(createBoldFontStyleContribution(part));
+            diagramElementContributionItems.add(createItalicFontStyleContribution(part));
+            diagramElementContributionItems.add(createFontDialogContribution(part));
+            diagramElementContributionItems.add(createFillColorContribution(part));
+            diagramElementContributionItems.add(createLineColorPropertyContribution(part));
+            diagramElementContributionItems.add(createResetStylePropertyContribution(part));
+            diagramElementContributionItems.add(createSetStyleToWorkspaceImageContribution(part));
+            diagramElementContributionItems.add(createSaveAsImageContributionItem());
+            diagramElementContributionItems.add(createDistributeContribution());
+            diagramElementContributionItems.add(createLayoutingModeContributionItem(part));
+            diagramElementContributionItems.add(createRouterContribution());
+            diagramElementContributionItems.add(createCopyAppearancePropertiesContribution(part));
+            diagramElementContributionItems.add(createCopyLayoutContribution(part));
+            diagramElementContributionItems.add(createSizeBothContribution(part));
+            diagramElementContributionItems.add(createAutoSizeContribution(part));
+        }
+        return diagramElementContributionItems;
+    }
+
+</code></pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.png b/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.png
new file mode 100644
index 0000000..5865efb
--- /dev/null
+++ b/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.svg b/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.svg
new file mode 100644
index 0000000..491a544
--- /dev/null
+++ b/doc/6.0.x/developer/images/Sirius_High-Level_Architecture_Overview.svg
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   viewBox="0 0 581.34375 295.5"
+   stroke-miterlimit="10"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="Sirius - High-Level Architecture Overview.svg"
+   style="fill:none;stroke:none">
+  <metadata
+     id="metadata61">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs59" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview57"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.32777778"
+     inkscape:cx="434.8125"
+     inkscape:cy="-133.52372"
+     inkscape:window-x="2743"
+     inkscape:window-y="168"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <clipPath
+     id="p.0">
+    <path
+       d="M 0,0 960,0 960,720 0,720 0,0 z"
+       clip-rule="nonzero"
+       id="path5"
+       inkscape:connector-curvature="0" />
+  </clipPath>
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path11"
+     d="m 0.993734,235.51313 0,0 c 0,-6.5174 5.28338,-11.8008 11.80076,-11.8008 l 555.737056,0 c 3.12976,0 6.13135,1.2433 8.34442,3.4564 2.21307,2.213 3.45636,5.2146 3.45636,8.3444 l 0,47.2016 c 0,6.5174 -5.28339,11.8008 -11.80078,11.8008 l -555.737056,0 c -6.51738,0 -11.80076,-5.2834 -11.80076,-11.8008 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path13"
+     d="m 0.993734,235.51313 0,0 c 0,-6.5174 5.28338,-11.8008 11.80076,-11.8008 l 555.737056,0 c 3.12976,0 6.13135,1.2433 8.34442,3.4564 2.21307,2.213 3.45636,5.2146 3.45636,8.3444 l 0,47.2016 c 0,6.5174 -5.28339,11.8008 -11.80078,11.8008 l -555.737056,0 c -6.51738,0 -11.80076,-5.2834 -11.80076,-11.8008 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path15"
+     d="m 14.950064,266.03393 0,-13.5938 9.84375,0 0,1.5938 -8.04688,0 0,4.1718 7.53125,0 0,1.5938 -7.53125,0 0,4.625 8.35938,0 0,1.6094 -10.15625,0 z m 18.63107,-3.6094 1.64063,0.2187 q -0.26563,1.6875 -1.375,2.6563 -1.10938,0.9531 -2.73438,0.9531 -2.01562,0 -3.25,-1.3125 -1.21875,-1.3281 -1.21875,-3.7969 0,-1.5937 0.51563,-2.7812 0.53125,-1.2031 1.60937,-1.7969 1.09375,-0.6094 2.35938,-0.6094 1.60937,0 2.625,0.8125 1.01562,0.8125 1.3125,2.3125 l -1.625,0.25 q -0.23438,-1 -0.82813,-1.5 -0.59375,-0.5 -1.42187,-0.5 -1.26563,0 -2.0625,0.9063 -0.78125,0.9062 -0.78125,2.8594 0,1.9843 0.76562,2.8906 0.76563,0.8906 1.98438,0.8906 0.98437,0 1.64062,-0.5937 0.65625,-0.6094 0.84375,-1.8594 z m 2.85938,3.6094 0,-13.5938 1.67187,0 0,13.5938 -1.67187,0 z m 4.19169,-11.6875 0,-1.9063 1.67188,0 0,1.9063 -1.67188,0 z m 0,11.6875 0,-9.8594 1.67188,0 0,9.8594 -1.67188,0 z m 4.1292,3.7813 0,-13.6407 1.53125,0 0,1.2813 q 0.53125,-0.75 1.20312,-1.125 0.6875,-0.375 1.64063,-0.375 1.26562,0 2.23437,0.6562 0.96875,0.6406 1.45313,1.8281 0.5,1.1875 0.5,2.5938 0,1.5156 -0.54688,2.7344 -0.54687,1.2031 -1.57812,1.8437 -1.03125,0.6406 -2.17188,0.6406 -0.84375,0 -1.51562,-0.3437 -0.65625,-0.3594 -1.07813,-0.8906 l 0,4.7969 -1.67187,0 z m 1.51562,-8.6563 q 0,1.9062 0.76563,2.8125 0.78125,0.9062 1.875,0.9062 1.10937,0 1.89062,-0.9375 0.79688,-0.9375 0.79688,-2.9218 0,-1.875 -0.78125,-2.8125 -0.76563,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89063,1 -0.8125,1 -0.8125,2.8906 z m 8.18822,1.9375 1.656246,-0.2656 q 0.14063,1 0.76563,1.5312 0.64062,0.5156 1.78125,0.5156 1.15625,0 1.70312,-0.4687 0.5625,-0.4688 0.5625,-1.0938 0,-0.5625 -0.48437,-0.8906 -0.34375,-0.2187 -1.70313,-0.5625 -1.84375,-0.4687 -2.5625,-0.7969 -0.70312,-0.3437 -1.07812,-0.9375 -0.359376,-0.6093 -0.359376,-1.3281 0,-0.6562 0.296876,-1.2187 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.2813 1.0625,-0.4844 0.67188,-0.2031 1.4375,-0.2031 1.17188,0 2.04688,0.3437 0.875,0.3281 1.28125,0.9063 0.42187,0.5625 0.57812,1.5156 l -1.625,0.2187 q -0.10937,-0.75 -0.65625,-1.1718 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.3906 -0.48438,0.375 -0.48438,0.875 0,0.3281 0.20313,0.5937 0.20312,0.2657 0.64062,0.4375 0.25,0.094 1.46875,0.4375 1.76563,0.4688 2.46875,0.7657 0.70313,0.2968 1.09375,0.875 0.40625,0.5781 0.40625,1.4375 0,0.8281 -0.48437,1.5781 -0.48438,0.7344 -1.40625,1.1406 -0.92188,0.3906 -2.07813,0.3906 -1.92187,0 -2.9375,-0.7968 -0.999996,-0.7969 -1.281246,-2.3594 z m 16.749996,-0.2344 1.71875,0.2188 q -0.40625,1.5 -1.51562,2.3437 -1.09375,0.8281 -2.8125,0.8281 -2.15625,0 -3.42188,-1.3281 -1.26562,-1.3281 -1.26562,-3.7344 0,-2.4843 1.26562,-3.8593 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.3437 1.25,1.3438 1.25,3.7969 0,0.1406 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.4844 0.82813,0.8593 2.0625,0.8593 0.90625,0 1.54688,-0.4687 0.65625,-0.4844 1.04687,-1.5469 z m -5.48437,-2.7031 5.5,0 q -0.10938,-1.2344 -0.625,-1.8594 -0.79688,-0.9687 -2.07813,-0.9687 -1.14062,0 -1.9375,0.7812 -0.78125,0.7656 -0.85937,2.0469 z m 14.51214,5.875 0,-13.5938 5.125,0 q 1.35938,0 2.07813,0.125 1,0.1719 1.67187,0.6407 0.67188,0.4687 1.07813,1.3125 0.42187,0.8437 0.42187,1.8437 0,1.7344 -1.10937,2.9375 -1.09375,1.2031 -3.98438,1.2031 l -3.48437,0 0,5.5313 -1.79688,0 z m 1.79688,-7.1406 3.51562,0 q 1.75,0 2.46875,-0.6407 0.73438,-0.6562 0.73438,-1.8281 0,-0.8594 -0.4375,-1.4687 -0.42188,-0.6094 -1.125,-0.7969 -0.45313,-0.125 -1.67188,-0.125 l -3.48437,0 0,4.8594 z m 10.3967,7.1406 0,-13.5938 1.67187,0 0,13.5938 -1.67187,0 z m 10.61357,-1.2188 q -0.9375,0.7969 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.7812 -0.875,-0.7969 -0.875,-2.0313 0,-0.7343 0.32812,-1.3281 0.32813,-0.5937 0.85938,-0.9531 0.53125,-0.3594 1.20312,-0.5469 0.5,-0.1406 1.48438,-0.25 2.03125,-0.25 2.98437,-0.5781 0,-0.3438 0,-0.4375 0,-1.0156 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.4062 -0.5625,0.4063 -0.82813,1.4688 l -1.64062,-0.2344 q 0.23437,-1.0469 0.73437,-1.6875 0.51563,-0.6406 1.46875,-0.9844 0.96875,-0.3593 2.25,-0.3593 1.26563,0 2.04688,0.2968 0.78125,0.2969 1.15625,0.75 0.375,0.4532 0.51562,1.1407 0.0937,0.4218 0.0937,1.5312 l 0,2.2344 q 0,2.3281 0.0937,2.9531 0.10938,0.6094 0.4375,1.1719 l -1.75,0 q -0.26562,-0.5156 -0.32812,-1.2188 z m -0.14063,-3.7187 q -0.90625,0.3594 -2.73437,0.625 -1.03125,0.1406 -1.45313,0.3281 -0.42187,0.1875 -0.65625,0.5469 -0.23437,0.3594 -0.23437,0.7969 0,0.6718 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.4219 0.75,-0.4375 1.10938,-1.1563 0.26562,-0.5781 0.26562,-1.6718 l 0,-0.6094 z m 7.73509,3.4375 0.23438,1.4844 q -0.70313,0.1406 -1.26563,0.1406 -0.90625,0 -1.40625,-0.2813 -0.5,-0.2968 -0.70312,-0.75 -0.20313,-0.4687 -0.20313,-1.9843 l 0,-5.6563 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.7188 0.0781,0.9219 0.0937,0.2031 0.29687,0.3281 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.078 z m 1.93331,1.5 0,-8.5469 -1.48438,0 0,-1.3125 1.48438,0 0,-1.0469 q 0,-0.9843 0.17187,-1.4687 0.23438,-0.6563 0.84375,-1.0469 0.60938,-0.4062 1.70313,-0.4062 0.70312,0 1.5625,0.1562 l -0.25,1.4688 q -0.51563,-0.094 -0.98438,-0.094 -0.76562,0 -1.07812,0.3281 -0.3125,0.3125 -0.3125,1.2031 l 0,0.9063 1.92187,0 0,1.3125 -1.92187,0 0,8.5468 -1.65625,0 z m 4.15205,-4.9219 q 0,-2.7344 1.53125,-4.0625 1.26563,-1.0937 3.09375,-1.0937 2.03125,0 3.3125,1.3437 1.29688,1.3281 1.29688,3.6719 0,1.9062 -0.57813,3 -0.5625,1.0781 -1.65625,1.6875 -1.07812,0.5937 -2.375,0.5937 -2.0625,0 -3.34375,-1.3281 -1.28125,-1.3281 -1.28125,-3.8125 z m 1.71875,0 q 0,1.8906 0.82813,2.8281 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.9531 0.82813,-2.8906 0,-1.8281 -0.82813,-2.7656 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.8281 z m 9.26634,4.9219 0,-9.8594 1.5,0 0,1.5 q 0.57813,-1.0469 1.0625,-1.375 0.48438,-0.3437 1.07813,-0.3437 0.84375,0 1.71875,0.5468 l -0.57813,1.5469 q -0.60937,-0.3594 -1.23437,-0.3594 -0.54688,0 -0.98438,0.3282 -0.42187,0.3281 -0.60937,0.9062 -0.28125,0.8906 -0.28125,1.9531 l 0,5.1563 -1.67188,0 z m 6.22831,0 0,-9.8594 1.5,0 0,1.3906 q 0.45312,-0.7187 1.21875,-1.1562 0.78125,-0.4531 1.76564,-0.4531 1.09375,0 1.79687,0.4531 0.70313,0.4531 0.98438,1.2812 1.17187,-1.7343 3.04687,-1.7343 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 l 0,6.7656 -1.67188,0 0,-6.2031 q 0,-1 -0.15625,-1.4375 -0.15625,-0.4532 -0.59375,-0.7188 -0.42187,-0.2656 -1,-0.2656 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.2187 l 0,5.7188 -1.67187,0 0,-6.4063 q 0,-1.1093 -0.40625,-1.6562 -0.40625,-0.5625 -1.34375,-0.5625 -0.70314,0 -1.31252,0.375 -0.59375,0.3594 -0.85937,1.0781 -0.26563,0.7188 -0.26563,2.0625 l 0,5.1094 -1.67187,0 z" />
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path17"
+     d="m 0.993734,21.825629 0,0 c 0,-11.504 9.32583,-20.82982 20.82981,-20.82982 l 228.828546,0 c 5.52441,0 10.82257,2.19457 14.72891,6.10091 3.90634,3.90634 6.10092,9.2045 6.10092,14.72891 l 0,83.316741 c 0,11.504 -9.32583,20.82983 -20.82983,20.82983 l -228.828546,0 c -11.50398,0 -20.82981,-9.32583 -20.82981,-20.82983 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path19"
+     d="m 0.993734,21.825629 0,0 c 0,-11.504 9.32583,-20.82982 20.82981,-20.82982 l 228.828546,0 c 5.52441,0 10.82257,2.19457 14.72891,6.10091 3.90634,3.90634 6.10092,9.2045 6.10092,14.72891 l 0,83.316741 c 0,11.504 -9.32583,20.82983 -20.82983,20.82983 l -228.828546,0 c -11.50398,0 -20.82981,-9.32583 -20.82981,-20.82983 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path21"
+     d="m 76.44618,29.641629 1.6875,-0.14063 q 0.125,1.01563 0.5625,1.67188 0.4375,0.65625 1.35937,1.0625 0.9375,0.40625 2.09375,0.40625 1.03125,0 1.8125,-0.3125 0.79688,-0.3125 1.1875,-0.84375 0.39063,-0.53125 0.39063,-1.15625 0,-0.64063 -0.375,-1.10938 -0.375,-0.48437 -1.23438,-0.8125 -0.54687,-0.21875 -2.42187,-0.65625 -1.875,-0.45312 -2.625,-0.85937 -0.96875,-0.51563 -1.45313,-1.26563 -0.46875,-0.75 -0.46875,-1.6875 0,-1.03125 0.57813,-1.92187 0.59375,-0.90625 1.70312,-1.35938 1.125,-0.46875 2.5,-0.46875 1.51563,0 2.67188,0.48438 1.15625,0.48437 1.76562,1.4375 0.625,0.9375 0.67188,2.14062 l -1.71875,0.125 q -0.14063,-1.28125 -0.95313,-1.9375 -0.79687,-0.67187 -2.35937,-0.67187 -1.625,0 -2.375,0.60937 -0.75,0.59375 -0.75,1.4375 0,0.73438 0.53125,1.20313 0.51562,0.46875 2.70312,0.96875 2.20313,0.5 3.01563,0.875 1.1875,0.54687 1.75,1.39062 0.57812,0.82813 0.57812,1.92188 0,1.09375 -0.625,2.0625 -0.625,0.95312 -1.79687,1.48437 -1.15625,0.53125 -2.60938,0.53125 -1.84375,0 -3.09375,-0.53125 -1.25,-0.54687 -1.96875,-1.625 -0.70312,-1.07812 -0.73437,-2.45312 z m 12.84982,-7.3125 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 4.11357,0 0,-9.85938 1.5,0 0,1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67188,0 z m 6.24393,-11.6875 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 10.58232,0 0,-1.45313 q -1.14062,1.67188 -3.125,1.67188 -0.85937,0 -1.625,-0.32813 -0.75,-0.34375 -1.125,-0.84375 -0.35937,-0.5 -0.51562,-1.23437 -0.0937,-0.5 -0.0937,-1.5625 l 0,-6.10938 1.67187,0 0,5.46875 q 0,1.3125 0.0937,1.76563 0.15625,0.65625 0.67188,1.03125 0.51562,0.375 1.26562,0.375 0.75,0 1.40625,-0.375 0.65625,-0.39063 0.92188,-1.04688 0.28125,-0.67187 0.28125,-1.9375 l 0,-5.28125 1.67187,0 0,9.85938 -1.5,0 z m 3.25072,-2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 15.4333,2.9375 0,-13.59375 6.03125,0 q 1.8125,0 2.74999,0.35937 0.95312,0.35938 1.51562,1.29688 0.5625,0.92187 0.5625,2.04687 0,1.45313 -0.9375,2.45313 -0.92187,0.98437 -2.89061,1.25 0.71875,0.34375 1.09375,0.67187 0.78124,0.73438 1.48436,1.8125 l 2.375,3.70313 -2.26562,0 -1.79686,-2.82813 q -0.79688,-1.21875 -1.3125,-1.875 -0.5,-0.65625 -0.90625,-0.90625 -0.40625,-0.26562 -0.8125,-0.35937 -0.3125,-0.0781 -1.01563,-0.0781 l -2.07812,0 0,6.04688 -1.79688,0 z m 1.79688,-7.59375 3.85937,0 q 1.23438,0 1.92188,-0.25 0.70312,-0.26563 1.0625,-0.82813 0.37498,-0.5625 0.37498,-1.21875 0,-0.96875 -0.70311,-1.57812 -0.70312,-0.625 -2.21875,-0.625 l -4.29687,0 0,4.5 z m 17.87919,7.59375 0,-1.45313 q -1.14062,1.67188 -3.125,1.67188 -0.85937,0 -1.625,-0.32813 -0.75,-0.34375 -1.125,-0.84375 -0.35937,-0.5 -0.51562,-1.23437 -0.0937,-0.5 -0.0937,-1.5625 l 0,-6.10938 1.67187,0 0,5.46875 q 0,1.3125 0.0937,1.76563 0.15625,0.65625 0.67188,1.03125 0.51562,0.375 1.26562,0.375 0.75,0 1.40625,-0.375 0.65625,-0.39063 0.92188,-1.04688 0.28125,-0.67187 0.28125,-1.9375 l 0,-5.28125 1.67187,0 0,9.85938 -1.5,0 z m 3.92258,0 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 l 0,5.375 -1.67188,0 z m 14.03198,-1.5 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 l 0,-5.65625 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 1.54267,-10.1875 0,-1.90625 1.67187,0 0,1.90625 -1.67187,0 z m 0,11.6875 0,-9.85938 1.67187,0 0,9.85938 -1.67187,0 z m 4.12921,0 0,-9.85938 1.5,0 0,1.39063 q 0.45312,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76562,-0.45313 1.09375,0 1.79688,0.45313 0.70312,0.45312 0.98437,1.28125 1.17188,-1.73438 3.04688,-1.73438 1.46875,0 2.25,0.8125 0.79687,0.8125 0.79687,2.5 l 0,6.76563 -1.67187,0 0,-6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42188,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67188,0 0,-6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70312,0 -1.3125,0.375 -0.59375,0.35937 -0.85937,1.07812 -0.26563,0.71875 -0.26563,2.0625 l 0,5.10938 -1.67187,0 z m 22.2908,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z" />
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path23"
+     d="m 309.84676,21.825629 0,0 c 0,-11.504 9.32581,-20.82982 20.8298,-20.82982 l 228.82855,0 c 5.52442,0 10.82257,2.19457 14.72889,6.10091 3.90637,3.90634 6.10095,9.2045 6.10095,14.72891 l 0,83.316741 c 0,11.504 -9.32587,20.82983 -20.82984,20.82983 l -228.82855,0 c -11.504,0 -20.8298,-9.32583 -20.8298,-20.82983 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path25"
+     d="m 309.84676,21.825629 0,0 c 0,-11.504 9.32581,-20.82982 20.8298,-20.82982 l 228.82855,0 c 5.52442,0 10.82257,2.19457 14.72889,6.10091 3.90637,3.90634 6.10095,9.2045 6.10095,14.72891 l 0,83.316741 c 0,11.504 -9.32587,20.82983 -20.82984,20.82983 l -228.82855,0 c -11.504,0 -20.8298,-9.32583 -20.8298,-20.82983 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path27"
+     d="m 389.43946,66.028989 1.6875,-0.14063 q 0.125,1.01563 0.5625,1.67188 0.4375,0.65625 1.35938,1.0625 0.9375,0.40625 2.09375,0.40625 1.03125,0 1.8125,-0.3125 0.79687,-0.3125 1.1875,-0.84375 0.39062,-0.53125 0.39062,-1.15625 0,-0.64063 -0.375,-1.10938 -0.375,-0.48437 -1.23437,-0.8125 -0.54688,-0.21875 -2.42188,-0.65625 -1.875,-0.45312 -2.625,-0.85937 -0.96875,-0.51563 -1.45312,-1.26563 -0.46875,-0.75 -0.46875,-1.6875 0,-1.03125 0.57812,-1.92187 0.59375,-0.90625 1.70313,-1.35938 1.125,-0.46875 2.5,-0.46875 1.51562,0 2.67187,0.48438 1.15625,0.48437 1.76563,1.4375 0.625,0.9375 0.67187,2.14062 l -1.71875,0.125 q -0.14062,-1.28125 -0.95312,-1.9375 -0.79688,-0.67187 -2.35938,-0.67187 -1.625,0 -2.375,0.60937 -0.75,0.59375 -0.75,1.4375 0,0.73438 0.53125,1.20313 0.51563,0.46875 2.70313,0.96875 2.20312,0.5 3.01562,0.875 1.1875,0.54687 1.75,1.39062 0.57813,0.82813 0.57813,1.92188 0,1.09375 -0.625,2.0625 -0.625,0.95312 -1.79688,1.48437 -1.15625,0.53125 -2.60937,0.53125 -1.84375,0 -3.09375,-0.53125 -1.25,-0.54687 -1.96875,-1.625 -0.70313,-1.07812 -0.73438,-2.45312 z m 12.84985,-7.3125 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 4.11353,0 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 6.24396,-11.6875 0,-1.90625 1.67187,0 0,1.90625 -1.67187,0 z m 0,11.6875 0,-9.85938 1.67187,0 0,9.85938 -1.67187,0 z m 10.58233,0 0,-1.45313 q -1.14062,1.67188 -3.125,1.67188 -0.85937,0 -1.625,-0.32813 -0.75,-0.34375 -1.125,-0.84375 -0.35937,-0.5 -0.51562,-1.23437 -0.0937,-0.5 -0.0937,-1.5625 l 0,-6.10938 1.67187,0 0,5.46875 q 0,1.3125 0.0937,1.76563 0.15625,0.65625 0.67188,1.03125 0.51562,0.375 1.26562,0.375 0.75,0 1.40625,-0.375 0.65625,-0.39063 0.92188,-1.04688 0.28125,-0.67187 0.28125,-1.9375 l 0,-5.28125 1.67187,0 0,9.85938 -1.5,0 z m 3.25067,-2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 18.85517,2.9375 0,-12 -4.46869,0 0,-1.59375 10.76556,0 0,1.59375 -4.5,0 0,12 -1.79687,0 z m 7.09912,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26562,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29687,1.32813 1.29687,3.67188 0,1.90625 -0.57812,3 -0.5625,1.07812 -1.65625,1.6875 -1.07813,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82812,2.82813 0.82813,0.9375 2.07813,0.9375 1.25,0 2.0625,-0.9375 0.82812,-0.95313 0.82812,-2.89063 0,-1.82812 -0.82812,-2.76562 -0.82813,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07813,0.9375 -0.82812,0.9375 -0.82812,2.82812 z m 8.65698,0 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.25073,4.92188 0,-13.59375 1.67188,0 0,13.59375 -1.67188,0 z m 4.19165,-11.6875 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 4.12921,0 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 l 0,5.375 -1.67188,0 z m 10.07886,0.8125 1.60938,0.250001 q 0.10937,0.75 0.57812,1.09375 0.60938,0.45312 1.6875,0.45312 1.17188,0 1.79688,-0.46875 0.625,-0.45312 0.85937,-1.281251 0.125,-0.51562 0.10938,-2.15625 -1.09375,1.29688 -2.71875,1.29688 -2.03125,0 -3.15625,-1.46875 -1.10938,-1.46875 -1.10938,-3.51563 0,-1.40625 0.51563,-2.59375 0.51562,-1.20312 1.48437,-1.84375 0.96875,-0.65625 2.26563,-0.65625 1.75,0 2.875,1.40625 l 0,-1.1875 1.54687,0 0,8.51563 q 0,2.3125 -0.46875,3.265621 -0.46875,0.96875 -1.48437,1.51563 -1.01563,0.5625 -2.5,0.5625 -1.76563,0 -2.85938,-0.79688 -1.07812,-0.79687 -1.03125,-2.390621 z m 1.375,-5.92188 q 0,1.95313 0.76563,2.84375 0.78125,0.89063 1.9375,0.89063 1.14062,0 1.92187,-0.89063 0.78125,-0.89062 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79687,-0.92187 -1.92187,-0.92187 -1.10938,0 -1.89063,0.90625 -0.78125,0.89062 -0.78125,2.67187 z" />
+  <path
+     style="fill:#93c47d;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path29"
+     d="m 26.182714,59.880309 112.125976,0 0,43.622071 -112.125976,0 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path31"
+     d="m 26.182714,59.880309 112.125976,0 0,43.622071 -112.125976,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path33"
+     d="m 38.064104,78.49133 0,-9.312501 4.125,0 q 1.25,0 1.89062,0.26562 0.65625,0.25 1.04688,0.89063 0.39062,0.625 0.39062,1.390621 0,0.98438 -0.65625,1.67188 -0.64062,0.67187 -1.96875,0.85937 0.48438,0.23438 0.73438,0.46875 0.54687,0.48438 1.03125,1.23438 l 1.60937,2.53125 -1.54687,0 -1.23438,-1.9375 q -0.53125,-0.84375 -0.89062,-1.28125 -0.34375,-0.4375 -0.625,-0.60938 -0.26563,-0.1875 -0.54688,-0.26562 -0.21875,-0.0312 -0.6875,-0.0312 l -1.4375,0 0,4.125 -1.23437,0 z m 1.23437,-5.20313 2.65625,0 q 0.84375,0 1.3125,-0.17187 0.48438,-0.17188 0.71875,-0.54688 0.25,-0.39062 0.25,-0.84375 0,-0.656251 -0.48437,-1.078121 -0.46875,-0.4375 -1.5,-0.4375 l -2.95313,0 0,3.078121 z m 12.84391,3.03125 1.1875,0.14063 q -0.28125,1.04687 -1.04688,1.625 -0.75,0.5625 -1.92187,0.5625 -1.48438,0 -2.35938,-0.90625 -0.85937,-0.92188 -0.85937,-2.5625 0,-1.70313 0.875,-2.64063 0.89062,-0.9375 2.28125,-0.9375 1.35937,0 2.20312,0.92188 0.85938,0.92187 0.85938,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64062,0 1.07812,-0.32813 0.45313,-0.34375 0.70313,-1.0625 z m -3.75,-1.84375 3.76562,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54687,-0.65625 -1.40625,-0.65625 -0.79687,0 -1.32812,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.553096,6.59375 0,-9.3125 1.03125,0 0,0.875 q 0.375,-0.51562 0.82812,-0.76562 0.46875,-0.26563 1.14063,-0.26563 0.85937,0 1.51562,0.45313 0.65625,0.4375 0.98438,1.25 0.34375,0.79687 0.34375,1.76562 0,1.03125 -0.375,1.85938 -0.35938,0.82812 -1.07813,1.28125 -0.70312,0.4375 -1.48437,0.4375 -0.5625,0 -1.01563,-0.23438 -0.45312,-0.25 -0.75,-0.625 l 0,3.28125 -1.14062,0 z m 1.03125,-5.90625 q 0,1.29688 0.53125,1.92188 0.53125,0.625 1.26562,0.625 0.76563,0 1.3125,-0.64063 0.54688,-0.65625 0.54688,-2 0,-1.29687 -0.53125,-1.9375 -0.53125,-0.64062 -1.26563,-0.64062 -0.73437,0 -1.29687,0.6875 -0.5625,0.67187 -0.5625,1.98437 z m 6.3656,3.32813 0,-6.73438 1.03125,0 0,1.01563 q 0.39062,-0.71875 0.71875,-0.9375 0.34375,-0.23438 0.73437,-0.23438 0.57813,0 1.17188,0.35938 l -0.39063,1.0625 q -0.42187,-0.25 -0.82812,-0.25 -0.375,0 -0.6875,0.23437 -0.29688,0.21875 -0.42188,0.625 -0.1875,0.60938 -0.1875,1.32813 l 0,3.53125 -1.14062,0 z m 9.06337,-2.17188 1.1875,0.14063 q -0.28125,1.04687 -1.04688,1.625 -0.75,0.5625 -1.92187,0.5625 -1.48438,0 -2.35938,-0.90625 -0.85937,-0.92188 -0.85937,-2.5625 0,-1.70313 0.875,-2.64063 0.89062,-0.9375 2.28125,-0.9375 1.35937,0 2.20312,0.92188 0.85938,0.92187 0.85938,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64062,0 1.07812,-0.32813 0.45313,-0.34375 0.70313,-1.0625 z m -3.75,-1.84375 3.76562,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54687,-0.65625 -1.40625,-0.65625 -0.79687,0 -1.32812,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.09997,2 1.125,-0.17187 q 0.0937,0.67187 0.53125,1.04687 0.4375,0.35938 1.21875,0.35938 0.78125,0 1.15625,-0.3125 0.39063,-0.32813 0.39063,-0.76563 0,-0.39062 -0.34375,-0.60937 -0.23438,-0.15625 -1.17188,-0.39063 -1.25,-0.3125 -1.73437,-0.54687 -0.48438,-0.23438 -0.73438,-0.64063 -0.25,-0.40625 -0.25,-0.90625 0,-0.45312 0.20313,-0.82812 0.20312,-0.39063 0.5625,-0.64063 0.26562,-0.20312 0.71875,-0.32812 0.46875,-0.14063 1,-0.14063 0.78125,0 1.375,0.23438 0.60937,0.21875 0.89062,0.60937 0.29688,0.39063 0.40625,1.04688 l -1.125,0.15625 q -0.0781,-0.53125 -0.4375,-0.8125 -0.35937,-0.29688 -1.03125,-0.29688 -0.78125,0 -1.125,0.26563 -0.34375,0.25 -0.34375,0.60937 0,0.21875 0.14063,0.39063 0.14062,0.1875 0.4375,0.3125 0.17187,0.0625 1.01562,0.28125 1.21875,0.32812 1.6875,0.53125 0.48438,0.20312 0.75,0.60937 0.28125,0.39063 0.28125,0.96875 0,0.57813 -0.34375,1.07813 -0.32812,0.5 -0.95312,0.78125 -0.625,0.28125 -1.42188,0.28125 -1.3125,0 -2,-0.54688 -0.6875,-0.54687 -0.875,-1.625 z m 11.72657,-0.15625 1.1875,0.14063 q -0.28125,1.04687 -1.04688,1.625 -0.75,0.5625 -1.92187,0.5625 -1.48438,0 -2.35938,-0.90625 -0.85937,-0.92188 -0.85937,-2.5625 0,-1.70313 0.875,-2.64063 0.89062,-0.9375 2.28125,-0.9375 1.35937,0 2.20312,0.92188 0.85938,0.92187 0.85938,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64062,0 1.07812,-0.32813 0.45313,-0.34375 0.70313,-1.0625 z m -3.75,-1.84375 3.76562,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54687,-0.65625 -1.40625,-0.65625 -0.79687,0 -1.32812,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.5531,4.01563 0,-6.73438 1.03125,0 0,0.95313 q 0.73437,-1.10938 2.14062,-1.10938 0.60938,0 1.10938,0.21875 0.51562,0.21875 0.76562,0.57813 0.26563,0.34375 0.35938,0.84375 0.0625,0.3125 0.0625,1.10937 l 0,4.14063 -1.14063,0 0,-4.09375 q 0,-0.70313 -0.14062,-1.04688 -0.125,-0.34375 -0.46875,-0.54687 -0.32813,-0.21875 -0.78125,-0.21875 -0.73438,0 -1.26563,0.46875 -0.53125,0.45312 -0.53125,1.75 l 0,3.6875 -1.14062,0 z m 9.91247,-1.01563 0.15625,1 q -0.48437,0.10938 -0.85937,0.10938 -0.625,0 -0.96875,-0.20313 -0.34375,-0.20312 -0.48438,-0.51562 -0.14062,-0.32813 -0.14062,-1.34375 l 0,-3.89063 -0.82813,0 0,-0.875 0.82813,0 0,-1.671871 1.14062,-0.6875 0,2.359371 1.15625,0 0,0.875 -1.15625,0 0,3.95313 q 0,0.48437 0.0625,0.625 0.0625,0.14062 0.1875,0.21875 0.14063,0.0781 0.39063,0.0781 0.20312,0 0.51562,-0.0312 z m 5.59362,0.1875 q -0.625,0.53125 -1.21875,0.76563 -0.57813,0.21875 -1.25,0.21875 -1.125,0 -1.71875,-0.54688 -0.59375,-0.54687 -0.59375,-1.39062 0,-0.48438 0.21875,-0.89063 0.23437,-0.42187 0.59375,-0.67187 0.375,-0.25 0.82812,-0.375 0.32813,-0.0781 1.01563,-0.17188 1.375,-0.15625 2.03125,-0.39062 0.0156,-0.23438 0.0156,-0.29688 0,-0.70312 -0.32812,-0.98437 -0.4375,-0.39063 -1.29688,-0.39063 -0.8125,0 -1.20312,0.28125 -0.375,0.28125 -0.5625,1 l -1.10938,-0.14062 q 0.14063,-0.71875 0.48438,-1.15625 0.35937,-0.45313 1.01562,-0.6875 0.67188,-0.23438 1.53125,-0.23438 0.875,0 1.40625,0.20313 0.54688,0.20312 0.79688,0.51562 0.25,0.29688 0.35937,0.76563 0.0469,0.29687 0.0469,1.0625 l 0,1.51562 q 0,1.59375 0.0781,2.01563 0.0781,0.42187 0.28125,0.8125 l -1.1875,0 q -0.17187,-0.35938 -0.23437,-0.82813 z m -0.0937,-2.5625 q -0.625,0.26563 -1.85938,0.4375 -0.70312,0.10938 -1,0.23438 -0.29687,0.125 -0.45312,0.375 -0.15625,0.23437 -0.15625,0.53125 0,0.45312 0.34375,0.76562 0.34375,0.29688 1.01562,0.29688 0.65625,0 1.17188,-0.28125 0.51562,-0.29688 0.76562,-0.79688 0.17188,-0.375 0.17188,-1.14062 l 0,-0.42188 z m 5.6156,2.375 0.15625,1 q -0.48438,0.10938 -0.85938,0.10938 -0.625,0 -0.96875,-0.20313 -0.34375,-0.20312 -0.48437,-0.51562 -0.14063,-0.32813 -0.14063,-1.34375 l 0,-3.89063 -0.82812,0 0,-0.875 0.82812,0 0,-1.671871 1.14063,-0.6875 0,2.359371 1.15625,0 0,0.875 -1.15625,0 0,3.95313 q 0,0.48437 0.0625,0.625 0.0625,0.14062 0.1875,0.21875 0.14062,0.0781 0.39062,0.0781 0.20313,0 0.51563,-0.0312 z m 1.20298,-6.968751 0,-1.32812 1.14063,0 0,1.32812 -1.14063,0 z m 0,7.984381 0,-6.73438 1.14063,0 0,6.73438 -1.14063,0 z m 2.53922,-3.375 q 0,-1.875 1.03125,-2.76563 0.875,-0.75 2.125,-0.75 1.39062,0 2.26562,0.90625 0.89063,0.90625 0.89063,2.51563 0,1.29687 -0.39063,2.04687 -0.39062,0.75 -1.14062,1.17188 -0.75,0.40625 -1.625,0.40625 -1.42188,0 -2.29688,-0.90625 -0.85937,-0.90625 -0.85937,-2.625 z m 1.17187,0 q 0,1.29687 0.5625,1.95312 0.5625,0.64063 1.42188,0.64063 0.84375,0 1.40625,-0.64063 0.57812,-0.65625 0.57812,-1.98437 0,-1.25 -0.57812,-1.89063 -0.5625,-0.65625 -1.40625,-0.65625 -0.85938,0 -1.42188,0.64063 -0.5625,0.64062 -0.5625,1.9375 z m 6.66248,3.375 0,-6.73438 1.03125,0 0,0.95313 q 0.73438,-1.10938 2.14063,-1.10938 0.60937,0 1.10937,0.21875 0.51563,0.21875 0.76563,0.57813 0.26562,0.34375 0.35937,0.84375 0.0625,0.3125 0.0625,1.10937 l 0,4.14063 -1.14062,0 0,-4.09375 q 0,-0.70313 -0.14063,-1.04688 -0.125,-0.34375 -0.46875,-0.54687 -0.32812,-0.21875 -0.78125,-0.21875 -0.73437,0 -1.26562,0.46875 -0.53125,0.45312 -0.53125,1.75 l 0,3.6875 -1.14063,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path35"
+     d="m 50.248794,94.49133 0,-9.3125 1.84375,0 2.20312,6.59375 q 0.3125,0.92187 0.45313,1.375 0.156246,-0.5 0.484366,-1.48438 l 2.23438,-6.48437 1.65625,0 0,9.3125 -1.1875,0 0,-7.78125 -2.70313,7.78125 -1.109366,0 -2.6875,-7.92188 0,7.92188 -1.1875,0 z m 15.602426,-2.17188 1.1875,0.14063 q -0.28125,1.04687 -1.04687,1.625 -0.75,0.5625 -1.92188,0.5625 -1.48437,0 -2.35937,-0.90625 -0.85938,-0.92188 -0.85938,-2.5625 0,-1.70313 0.875,-2.64063 0.89063,-0.9375 2.28125,-0.9375 1.35938,0 2.20313,0.92188 0.85937,0.92187 0.85937,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64063,0 1.07813,-0.32813 0.45312,-0.34375 0.70312,-1.0625 z m -3.75,-1.84375 3.76563,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54688,-0.65625 -1.40625,-0.65625 -0.79688,0 -1.32813,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 9.0531,3 0.15625,1 q -0.48437,0.10938 -0.85937,0.10938 -0.625,0 -0.96875,-0.20313 -0.34375,-0.20312 -0.48438,-0.51562 -0.14062,-0.32813 -0.14062,-1.34375 l 0,-3.89063 -0.82813,0 0,-0.875 0.82813,0 0,-1.67187 1.14062,-0.6875 0,2.35937 1.15625,0 0,0.875 -1.15625,0 0,3.95313 q 0,0.48437 0.0625,0.625 0.0625,0.14062 0.1875,0.21875 0.14063,0.0781 0.39063,0.0781 0.20312,0 0.51562,-0.0312 z m 5.59362,0.1875 q -0.625,0.53125 -1.21875,0.76563 -0.57813,0.21875 -1.25,0.21875 -1.125,0 -1.71875,-0.54688 -0.59375,-0.54687 -0.59375,-1.39062 0,-0.48438 0.21875,-0.89063 0.23437,-0.42187 0.59375,-0.67187 0.375,-0.25 0.82812,-0.375 0.32813,-0.0781 1.01563,-0.17188 1.375,-0.15625 2.03125,-0.39062 0.0156,-0.23438 0.0156,-0.29688 0,-0.70312 -0.32812,-0.98437 -0.4375,-0.39063 -1.29688,-0.39063 -0.8125,0 -1.20312,0.28125 -0.375,0.28125 -0.5625,1 l -1.10938,-0.14062 q 0.14063,-0.71875 0.48438,-1.15625 0.35937,-0.45313 1.01562,-0.6875 0.67188,-0.23438 1.53125,-0.23438 0.875,0 1.40625,0.20313 0.54688,0.20312 0.79688,0.51562 0.25,0.29688 0.35937,0.76563 0.0469,0.29687 0.0469,1.0625 l 0,1.51562 q 0,1.59375 0.0781,2.01563 0.0781,0.42187 0.28125,0.8125 l -1.1875,0 Q 76.81042,94.13195 76.74792,93.6632 z m -0.0937,-2.5625 q -0.625,0.26563 -1.85938,0.4375 -0.70312,0.10938 -1,0.23438 -0.29687,0.125 -0.45312,0.375 -0.15625,0.23437 -0.15625,0.53125 0,0.45312 0.34375,0.76562 0.34375,0.29688 1.01562,0.29688 0.65625,0 1.17188,-0.28125 0.51562,-0.29688 0.76562,-0.79688 0.17188,-0.375 0.17188,-1.14062 l 0,-0.42188 z m 3.1156,3.39063 0,-6.73438 1.01562,0 0,0.9375 q 0.32813,-0.5 0.84375,-0.79687 0.53125,-0.29688 1.20313,-0.29688 0.75,0 1.21875,0.3125 0.48437,0.3125 0.6875,0.85938 0.79687,-1.17188 2.07812,-1.17188 1,0 1.53125,0.5625 0.54688,0.54688 0.54688,1.70313 l 0,4.625 -1.125,0 0,-4.25 q 0,-0.6875 -0.10938,-0.98438 -0.10937,-0.29687 -0.40625,-0.48437 -0.29687,-0.1875 -0.6875,-0.1875 -0.71875,0 -1.1875,0.48437 -0.46875,0.46875 -0.46875,1.5 l 0,3.92188 -1.14062,0 0,-4.375 q 0,-0.76563 -0.28125,-1.14063 -0.28125,-0.39062 -0.90625,-0.39062 -0.48438,0 -0.89063,0.26562 -0.40625,0.25 -0.59375,0.73438 -0.1875,0.48437 -0.1875,1.40625 l 0,3.5 -1.14062,0 z m 10.68055,-3.375 q 0,-1.875 1.03125,-2.76563 0.875,-0.75 2.125,-0.75 1.39063,0 2.26563,0.90625 0.89062,0.90625 0.89062,2.51563 0,1.29687 -0.39062,2.04687 -0.39063,0.75 -1.14063,1.17188 -0.75,0.40625 -1.625,0.40625 -1.42187,0 -2.29687,-0.90625 -0.85938,-0.90625 -0.85938,-2.625 z m 1.17188,0 q 0,1.29687 0.5625,1.95312 0.5625,0.64063 1.42187,0.64063 0.84375,0 1.40625,-0.64063 0.57813,-0.65625 0.57813,-1.98437 0,-1.25 -0.57813,-1.89063 -0.5625,-0.65625 -1.40625,-0.65625 -0.85937,0 -1.42187,0.64063 -0.5625,0.64062 -0.5625,1.9375 z m 11.03747,3.375 0,-0.84375 q -0.64062,1 -1.89062,1 -0.79688,0 -1.48438,-0.4375 -0.67187,-0.45313 -1.04687,-1.25 -0.375,-0.79688 -0.375,-1.82813 0,-1.01562 0.34375,-1.82812 0.34375,-0.82813 1.01562,-1.26563 0.67188,-0.4375 1.5,-0.4375 0.60938,0 1.07813,0.26563 0.48437,0.25 0.78125,0.65625 l 0,-3.34375 1.14062,0 0,9.3125 -1.0625,0 z m -3.60937,-3.35938 q 0,1.29688 0.53125,1.9375 0.54687,0.64063 1.29687,0.64063 0.75,0 1.26563,-0.60938 0.53125,-0.625 0.53125,-1.875 0,-1.39062 -0.53125,-2.03125 -0.53125,-0.65625 -1.3125,-0.65625 -0.76563,0 -1.28125,0.625 -0.5,0.625 -0.5,1.96875 z m 11.25623,1.1875 1.1875,0.14063 q -0.28125,1.04687 -1.04688,1.625 -0.75,0.5625 -1.92187,0.5625 -1.48438,0 -2.35938,-0.90625 -0.85937,-0.92188 -0.85937,-2.5625 0,-1.70313 0.875,-2.64063 0.89062,-0.9375 2.28125,-0.9375 1.35937,0 2.20312,0.92188 0.85938,0.92187 0.85938,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64062,0 1.07812,-0.32813 0.45313,-0.34375 0.70313,-1.0625 z m -3.75,-1.84375 3.76562,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54687,-0.65625 -1.40625,-0.65625 -0.79687,0 -1.32812,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.52185,4.01563 0,-9.3125 1.14062,0 0,9.3125 -1.14062,0 z" />
+  <path
+     style="fill:#f6b26b;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path37"
+     d="m 149.59216,59.880309 107.40158,0 0,43.622071 -107.40158,0 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path39"
+     d="m 149.59216,59.880309 107.40158,0 0,43.622071 -107.40158,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path41"
+     d="m 170.95959,78.49133 0,-9.312501 3.20313,0 q 1.09375,0 1.65625,0.14062 0.8125,0.1875 1.375,0.67188 0.73437,0.60937 1.09375,1.578121 0.375,0.96875 0.375,2.21875 0,1.0625 -0.25,1.89063 -0.25,0.8125 -0.64063,1.34375 -0.39062,0.53125 -0.85937,0.84375 -0.45313,0.3125 -1.10938,0.46875 -0.64062,0.15625 -1.48437,0.15625 l -3.35938,0 z m 1.23438,-1.09375 1.98437,0 q 0.92188,0 1.4375,-0.17188 0.53125,-0.17187 0.84375,-0.48437 0.4375,-0.4375 0.67188,-1.17188 0.25,-0.75 0.25,-1.79687 0,-1.46875 -0.48438,-2.25 -0.46875,-0.781251 -1.15625,-1.046881 -0.5,-0.1875 -1.59375,-0.1875 l -1.95312,0 0,7.109381 z m 12.85952,-1.07813 1.1875,0.14063 q -0.28125,1.04687 -1.04687,1.625 -0.75,0.5625 -1.92188,0.5625 -1.48437,0 -2.35937,-0.90625 -0.85938,-0.92188 -0.85938,-2.5625 0,-1.70313 0.875,-2.64063 0.89063,-0.9375 2.28125,-0.9375 1.35938,0 2.20313,0.92188 0.85937,0.92187 0.85937,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64063,0 1.07813,-0.32813 0.45312,-0.34375 0.70312,-1.0625 z m -3.75,-1.84375 3.76563,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54688,-0.65625 -1.40625,-0.65625 -0.79688,0 -1.32813,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.09998,2 1.125,-0.17187 q 0.0937,0.67187 0.53125,1.04687 0.4375,0.35938 1.21875,0.35938 0.78125,0 1.15625,-0.3125 0.39062,-0.32813 0.39062,-0.76563 0,-0.39062 -0.34375,-0.60937 -0.23437,-0.15625 -1.17187,-0.39063 -1.25,-0.3125 -1.73438,-0.54687 -0.48437,-0.23438 -0.73437,-0.64063 -0.25,-0.40625 -0.25,-0.90625 0,-0.45312 0.20312,-0.82812 0.20313,-0.39063 0.5625,-0.64063 0.26563,-0.20312 0.71875,-0.32812 0.46875,-0.14063 1,-0.14063 0.78125,0 1.375,0.23438 0.60938,0.21875 0.89063,0.60937 0.29687,0.39063 0.40625,1.04688 l -1.125,0.15625 q -0.0781,-0.53125 -0.4375,-0.8125 -0.35938,-0.29688 -1.03125,-0.29688 -0.78125,0 -1.125,0.26563 -0.34375,0.25 -0.34375,0.60937 0,0.21875 0.14062,0.39063 0.14063,0.1875 0.4375,0.3125 0.17188,0.0625 1.01563,0.28125 1.21875,0.32812 1.6875,0.53125 0.48437,0.20312 0.75,0.60937 0.28125,0.39063 0.28125,0.96875 0,0.57813 -0.34375,1.07813 -0.32813,0.5 -0.95313,0.78125 -0.625,0.28125 -1.42187,0.28125 -1.3125,0 -2,-0.54688 -0.6875,-0.54687 -0.875,-1.625 z m 11.50781,-0.45312 1.125,0.14062 q -0.17187,1.17188 -0.9375,1.82813 -0.76562,0.65625 -1.85937,0.65625 -1.39063,0 -2.23438,-0.90625 -0.82812,-0.90625 -0.82812,-2.59375 0,-1.09375 0.35937,-1.90625 0.35938,-0.82813 1.09375,-1.23438 0.73438,-0.40625 1.60938,-0.40625 1.09375,0 1.79687,0.5625 0.70313,0.54688 0.89063,1.5625 l -1.10938,0.17188 q -0.15625,-0.67188 -0.5625,-1.01563 -0.39062,-0.34375 -0.96875,-0.34375 -0.85937,0 -1.40625,0.625 -0.53125,0.60938 -0.53125,1.95313 0,1.35937 0.51563,1.98437 0.51562,0.60938 1.35937,0.60938 0.67188,0 1.125,-0.40625 0.45313,-0.42188 0.5625,-1.28125 z m 2.25781,2.46875 0,-6.73438 1.03125,0 0,1.01563 q 0.39063,-0.71875 0.71875,-0.9375 0.34375,-0.23438 0.73438,-0.23438 0.57812,0 1.17187,0.35938 l -0.39062,1.0625 q -0.42188,-0.25 -0.82813,-0.25 -0.375,0 -0.6875,0.23437 -0.29687,0.21875 -0.42187,0.625 -0.1875,0.60938 -0.1875,1.32813 l 0,3.53125 -1.14063,0 z m 4.45398,-7.984381 0,-1.32812 1.14063,0 0,1.32812 -1.14063,0 z m 0,7.984381 0,-6.73438 1.14063,0 0,6.73438 -1.14063,0 z m 2.96109,2.57812 0,-9.3125 1.03125,0 0,0.875 q 0.375,-0.51562 0.82813,-0.76562 0.46875,-0.26563 1.14062,-0.26563 0.85938,0 1.51563,0.45313 0.65625,0.4375 0.98437,1.25 0.34375,0.79687 0.34375,1.76562 0,1.03125 -0.375,1.85938 -0.35937,0.82812 -1.07812,1.28125 -0.70313,0.4375 -1.48438,0.4375 -0.5625,0 -1.01562,-0.23438 -0.45313,-0.25 -0.75,-0.625 l 0,3.28125 -1.14063,0 z m 1.03125,-5.90625 q 0,1.29688 0.53125,1.92188 0.53125,0.625 1.26563,0.625 0.76562,0 1.3125,-0.64063 0.54687,-0.65625 0.54687,-2 0,-1.29687 -0.53125,-1.9375 -0.53125,-0.64062 -1.26562,-0.64062 -0.73438,0 -1.29688,0.6875 -0.5625,0.67187 -0.5625,1.98437 z m 8.88123,2.3125 0.15625,1 q -0.48438,0.10938 -0.85938,0.10938 -0.625,0 -0.96875,-0.20313 -0.34375,-0.20312 -0.48437,-0.51562 -0.14063,-0.32813 -0.14063,-1.34375 l 0,-3.89063 -0.82812,0 0,-0.875 0.82812,0 0,-1.671871 1.14063,-0.6875 0,2.359371 1.15625,0 0,0.875 -1.15625,0 0,3.95313 q 0,0.48437 0.0625,0.625 0.0625,0.14062 0.1875,0.21875 0.14062,0.0781 0.39062,0.0781 0.20313,0 0.51563,-0.0312 z m 1.203,-6.968751 0,-1.32812 1.14063,0 0,1.32812 -1.14063,0 z m 0,7.984381 0,-6.73438 1.14063,0 0,6.73438 -1.14063,0 z m 2.53922,-3.375 q 0,-1.875 1.03125,-2.76563 0.875,-0.75 2.125,-0.75 1.39062,0 2.26562,0.90625 0.89063,0.90625 0.89063,2.51563 0,1.29687 -0.39063,2.04687 -0.39062,0.75 -1.14062,1.17188 -0.75,0.40625 -1.625,0.40625 -1.42188,0 -2.29688,-0.90625 -0.85937,-0.90625 -0.85937,-2.625 z m 1.17187,0 q 0,1.29687 0.5625,1.95312 0.5625,0.64063 1.42188,0.64063 0.84375,0 1.40625,-0.64063 0.57812,-0.65625 0.57812,-1.98437 0,-1.25 -0.57812,-1.89063 -0.5625,-0.65625 -1.40625,-0.65625 -0.85938,0 -1.42188,0.64063 -0.5625,0.64062 -0.5625,1.9375 z m 6.66248,3.375 0,-6.73438 1.03125,0 0,0.95313 q 0.73437,-1.10938 2.14062,-1.10938 0.60938,0 1.10938,0.21875 0.51562,0.21875 0.76562,0.57813 0.26563,0.34375 0.35938,0.84375 0.0625,0.3125 0.0625,1.10937 l 0,4.14063 -1.14063,0 0,-4.09375 q 0,-0.70313 -0.14062,-1.04688 -0.125,-0.34375 -0.46875,-0.54687 -0.32813,-0.21875 -0.78125,-0.21875 -0.73438,0 -1.26563,0.46875 -0.53125,0.45312 -0.53125,1.75 l 0,3.6875 -1.14062,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path43"
+     d="m 171.29606,94.49133 0,-9.3125 1.84375,0 2.20312,6.59375 q 0.3125,0.92187 0.45313,1.375 0.15625,-0.5 0.48437,-1.48438 l 2.23438,-6.48437 1.65625,0 0,9.3125 -1.1875,0 0,-7.78125 -2.70313,7.78125 -1.10937,0 -2.6875,-7.92188 0,7.92188 -1.1875,0 z m 15.60242,-2.17188 1.1875,0.14063 q -0.28125,1.04687 -1.04688,1.625 -0.75,0.5625 -1.92187,0.5625 -1.48438,0 -2.35938,-0.90625 -0.85937,-0.92188 -0.85937,-2.5625 0,-1.70313 0.875,-2.64063 0.89062,-0.9375 2.28125,-0.9375 1.35937,0 2.20312,0.92188 0.85938,0.92187 0.85938,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64062,0 1.07812,-0.32813 0.45313,-0.34375 0.70313,-1.0625 z m -3.75,-1.84375 3.76562,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54687,-0.65625 -1.40625,-0.65625 -0.79687,0 -1.32812,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 9.0531,3 0.15625,1 q -0.48438,0.10938 -0.85938,0.10938 -0.625,0 -0.96875,-0.20313 -0.34375,-0.20312 -0.48437,-0.51562 -0.14063,-0.32813 -0.14063,-1.34375 l 0,-3.89063 -0.82812,0 0,-0.875 0.82812,0 0,-1.67187 1.14063,-0.6875 0,2.35937 1.15625,0 0,0.875 -1.15625,0 0,3.95313 q 0,0.48437 0.0625,0.625 0.0625,0.14062 0.1875,0.21875 0.14062,0.0781 0.39062,0.0781 0.20313,0 0.51563,-0.0312 z m 5.59363,0.1875 q -0.625,0.53125 -1.21875,0.76563 -0.57813,0.21875 -1.25,0.21875 -1.125,0 -1.71875,-0.54688 -0.59375,-0.54687 -0.59375,-1.39062 0,-0.48438 0.21875,-0.89063 0.23437,-0.42187 0.59375,-0.67187 0.375,-0.25 0.82812,-0.375 0.32813,-0.0781 1.01563,-0.17188 1.375,-0.15625 2.03125,-0.39062 0.0156,-0.23438 0.0156,-0.29688 0,-0.70312 -0.32812,-0.98437 -0.4375,-0.39063 -1.29688,-0.39063 -0.8125,0 -1.20312,0.28125 -0.375,0.28125 -0.5625,1 l -1.10938,-0.14062 q 0.14063,-0.71875 0.48438,-1.15625 0.35937,-0.45313 1.01562,-0.6875 0.67188,-0.23438 1.53125,-0.23438 0.875,0 1.40625,0.20313 0.54688,0.20312 0.79688,0.51562 0.25,0.29688 0.35937,0.76563 0.0469,0.29687 0.0469,1.0625 l 0,1.51562 q 0,1.59375 0.0781,2.01563 0.0781,0.42187 0.28125,0.8125 l -1.1875,0 q -0.17187,-0.35938 -0.23437,-0.82813 z m -0.0937,-2.5625 q -0.625,0.26563 -1.85938,0.4375 -0.70312,0.10938 -1,0.23438 -0.29687,0.125 -0.45312,0.375 -0.15625,0.23437 -0.15625,0.53125 0,0.45312 0.34375,0.76562 0.34375,0.29688 1.01562,0.29688 0.65625,0 1.17188,-0.28125 0.51562,-0.29688 0.76562,-0.79688 0.17188,-0.375 0.17188,-1.14062 l 0,-0.42188 z m 3.1156,3.39063 0,-6.73438 1.01562,0 0,0.9375 q 0.32813,-0.5 0.84375,-0.79687 0.53125,-0.29688 1.20313,-0.29688 0.75,0 1.21875,0.3125 0.48437,0.3125 0.6875,0.85938 0.79687,-1.17188 2.07812,-1.17188 1,0 1.53125,0.5625 0.54688,0.54688 0.54688,1.70313 l 0,4.625 -1.125,0 0,-4.25 q 0,-0.6875 -0.10938,-0.98438 -0.10937,-0.29687 -0.40625,-0.48437 -0.29687,-0.1875 -0.6875,-0.1875 -0.71875,0 -1.1875,0.48437 -0.46875,0.46875 -0.46875,1.5 l 0,3.92188 -1.14062,0 0,-4.375 q 0,-0.76563 -0.28125,-1.14063 -0.28125,-0.39062 -0.90625,-0.39062 -0.48438,0 -0.89063,0.26562 -0.40625,0.25 -0.59375,0.73438 -0.1875,0.48437 -0.1875,1.40625 l 0,3.5 -1.14062,0 z m 10.68054,-3.375 q 0,-1.875 1.03125,-2.76563 0.875,-0.75 2.125,-0.75 1.39062,0 2.26562,0.90625 0.89063,0.90625 0.89063,2.51563 0,1.29687 -0.39063,2.04687 -0.39062,0.75 -1.14062,1.17188 -0.75,0.40625 -1.625,0.40625 -1.42188,0 -2.29688,-0.90625 -0.85937,-0.90625 -0.85937,-2.625 z m 1.17187,0 q 0,1.29687 0.5625,1.95312 0.5625,0.64063 1.42188,0.64063 0.84375,0 1.40625,-0.64063 0.57812,-0.65625 0.57812,-1.98437 0,-1.25 -0.57812,-1.89063 -0.5625,-0.65625 -1.40625,-0.65625 -0.85938,0 -1.42188,0.64063 -0.5625,0.64062 -0.5625,1.9375 z m 11.03748,3.375 0,-0.84375 q -0.64063,1 -1.89063,1 -0.79687,0 -1.48437,-0.4375 -0.67188,-0.45313 -1.04688,-1.25 -0.375,-0.79688 -0.375,-1.82813 0,-1.01562 0.34375,-1.82812 0.34375,-0.82813 1.01563,-1.26563 0.67187,-0.4375 1.5,-0.4375 0.60937,0 1.07812,0.26563 0.48438,0.25 0.78125,0.65625 l 0,-3.34375 1.14063,0 0,9.3125 -1.0625,0 z m -3.60938,-3.35938 q 0,1.29688 0.53125,1.9375 0.54688,0.64063 1.29688,0.64063 0.75,0 1.26562,-0.60938 0.53125,-0.625 0.53125,-1.875 0,-1.39062 -0.53125,-2.03125 -0.53125,-0.65625 -1.3125,-0.65625 -0.76562,0 -1.28125,0.625 -0.5,0.625 -0.5,1.96875 z m 11.25623,1.1875 1.1875,0.14063 q -0.28125,1.04687 -1.04687,1.625 -0.75,0.5625 -1.92188,0.5625 -1.48437,0 -2.35937,-0.90625 -0.85938,-0.92188 -0.85938,-2.5625 0,-1.70313 0.875,-2.64063 0.89063,-0.9375 2.28125,-0.9375 1.35938,0 2.20313,0.92188 0.85937,0.92187 0.85937,2.57812 0,0.10938 0,0.3125 l -5.03125,0 q 0.0625,1.10938 0.625,1.70313 0.5625,0.59375 1.40625,0.59375 0.64063,0 1.07813,-0.32813 0.45312,-0.34375 0.70312,-1.0625 z m -3.75,-1.84375 3.76563,0 q -0.0781,-0.85937 -0.4375,-1.28125 -0.54688,-0.65625 -1.40625,-0.65625 -0.79688,0 -1.32813,0.53125 -0.53125,0.51563 -0.59375,1.40625 z m 6.52185,4.01563 0,-9.3125 1.14063,0 0,9.3125 -1.14063,0 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path45"
+     d="m 309.43469,81.69133 -52.44095,0" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path47"
+     d="m 309.43469,81.69133 -40.44095,0" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"
+     inkscape:connector-curvature="0"
+     id="path49"
+     d="m 268.99374,78.38788 -9.0762,3.30347 9.0762,3.30346 z" />
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path51"
+     d="m 0.993734,157.08523 0,0 c 0,-6.51733 5.28338,-11.80072 11.80076,-11.80072 l 555.737056,0 c 3.12976,0 6.13135,1.24329 8.34442,3.45636 2.21307,2.21307 3.45636,5.21466 3.45636,8.34436 l 0,47.2017 c 0,6.5174 -5.28339,11.8007 -11.80078,11.8007 l -555.737056,0 c -6.51738,0 -11.80076,-5.2833 -11.80076,-11.8007 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path53"
+     d="m 0.993734,157.08523 0,0 c 0,-6.51733 5.28338,-11.80072 11.80076,-11.80072 l 555.737056,0 c 3.12976,0 6.13135,1.24329 8.34442,3.45636 2.21307,2.21307 3.45636,5.21466 3.45636,8.34436 l 0,47.2017 c 0,6.5174 -5.28339,11.8007 -11.80078,11.8007 l -555.737056,0 c -6.51738,0 -11.80076,-5.2833 -11.80076,-11.8007 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path55"
+     d="m 14.950064,187.60613 0,-13.5938 9.84375,0 0,1.5938 -8.04688,0 0,4.1718 7.53125,0 0,1.5938 -7.53125,0 0,4.625 8.35938,0 0,1.6094 -10.15625,0 z m 12.34982,0 0,-13.5938 2.71875,0 3.21875,9.625 q 0.4375,1.3438 0.64063,2.0156 0.23437,-0.75 0.73437,-2.1875 l 3.25,-9.4531 2.42188,0 0,13.5938 -1.73438,0 0,-11.3907 -3.95312,11.3907 -1.625,0 -3.9375,-11.5782 0,11.5782 -1.73438,0 z m 15.69705,0 0,-13.5938 9.17188,0 0,1.5938 -7.375,0 0,4.2187 6.375,0 0,1.6094 -6.375,0 0,6.1719 -1.79688,0 z" />
+</svg>
diff --git a/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.png b/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.png
new file mode 100644
index 0000000..bff8c62
--- /dev/null
+++ b/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.svg b/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.svg
new file mode 100644
index 0000000..a9ff934
--- /dev/null
+++ b/doc/6.0.x/developer/images/Sirius_Representation_Refresh-Sync.svg
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   viewBox="0 0 847.93753 157.2207"
+   stroke-miterlimit="10"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="Sirius - Representation Refresh-Sync.svg"
+   style="fill:none;stroke:none">
+  <metadata
+     id="metadata85">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs83" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1244"
+     inkscape:window-height="892"
+     id="namedview81"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.92709556"
+     inkscape:cx="469.66048"
+     inkscape:cy="204.26254"
+     inkscape:window-x="2624"
+     inkscape:window-y="176"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <clipPath
+     id="p.0">
+    <path
+       d="M 0,0 960,0 960,720 0,720 0,0 z"
+       clip-rule="nonzero"
+       id="path5"
+       inkscape:connector-curvature="0" />
+  </clipPath>
+  <path
+     style="fill:#c27ba0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path11"
+     d="m 0.99020904,110.76524 175.27560096,0 0,45.44882 -175.27560096,0 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path13"
+     d="m 0.99020904,110.76524 175.27560096,0 0,45.44882 -175.27560096,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path15"
+     d="m 24.170633,140.40963 0,-13.59375 5.109375,0 q 1.546875,0 2.484375,0.40625 0.953125,0.40625 1.484375,1.26562 0.53125,0.85938 0.53125,1.79688 0,0.875 -0.46875,1.65625 -0.46875,0.76562 -1.4375,1.23437 1.234375,0.35938 1.890625,1.23438 0.671875,0.875 0.671875,2.0625 0,0.95312 -0.40625,1.78125 -0.390625,0.8125 -0.984375,1.26562 -0.59375,0.4375 -1.5,0.67188 -0.890625,0.21875 -2.1875,0.21875 l -5.1875,0 z m 1.796875,-7.89063 2.9375,0 q 1.203125,0 1.71875,-0.15625 0.6875,-0.20312 1.03125,-0.67187 0.359375,-0.46875 0.359375,-1.1875 0,-0.67188 -0.328125,-1.1875 -0.328125,-0.51563 -0.9375,-0.70313 -0.59375,-0.20312 -2.0625,-0.20312 l -2.71875,0 0,4.10937 z m 0,6.28125 3.390625,0 q 0.875,0 1.21875,-0.0625 0.625,-0.10937 1.046875,-0.35937 0.421875,-0.26563 0.6875,-0.76563 0.265625,-0.5 0.265625,-1.14062 0,-0.76563 -0.390625,-1.32813 -0.390625,-0.5625 -1.078125,-0.78125 -0.6875,-0.23437 -1.984375,-0.23437 l -3.15625,0 0,4.67187 z m 16.959198,1.60938 0,-1.45313 q -1.140625,1.67188 -3.125,1.67188 -0.859375,0 -1.625,-0.32813 -0.75,-0.34375 -1.125,-0.84375 -0.359375,-0.5 -0.515625,-1.23437 -0.09375,-0.5 -0.09375,-1.5625 l 0,-6.10938 1.671875,0 0,5.46875 q 0,1.3125 0.09375,1.76563 0.15625,0.65625 0.671875,1.03125 0.515625,0.375 1.265625,0.375 0.75,0 1.40625,-0.375 0.65625,-0.39063 0.921875,-1.04688 0.28125,-0.67187 0.28125,-1.9375 l 0,-5.28125 1.671875,0 0,9.85938 -1.5,0 z m 3.250717,-2.9375 1.65625,-0.26563 q 0.140625,1 0.765625,1.53125 0.640625,0.51563 1.78125,0.51563 1.15625,0 1.703125,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.484375,-0.89063 -0.34375,-0.21875 -1.703125,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.703125,-0.34375 -1.078125,-0.9375 -0.359375,-0.60938 -0.359375,-1.32813 0,-0.65625 0.296875,-1.21875 0.3125,-0.5625 0.828125,-0.9375 0.390625,-0.28125 1.0625,-0.48437 0.671875,-0.20313 1.4375,-0.20313 1.171875,0 2.046875,0.34375 0.875,0.32813 1.28125,0.90625 0.421875,0.5625 0.578125,1.51563 l -1.625,0.21875 q -0.109375,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.640625,0.39063 -0.484375,0.375 -0.484375,0.875 0,0.32812 0.203125,0.59375 0.203125,0.26562 0.640625,0.4375 0.25,0.0937 1.46875,0.4375 1.765625,0.46875 2.46875,0.76562 0.703125,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.484375,1.57813 -0.484375,0.73437 -1.40625,1.14062 -0.921875,0.39063 -2.078125,0.39063 -1.921875,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 10.015625,-8.75 0,-1.90625 1.671875,0 0,1.90625 -1.671875,0 z m 0,11.6875 0,-9.85938 1.671875,0 0,9.85938 -1.671875,0 z m 4.129195,0 0,-9.85938 1.5,0 0,1.40625 q 1.093747,-1.625 3.140627,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.765617,0.67188 -0.765617,2.57813 l 0,5.375 -1.67188,0 z m 17.125717,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 8.43822,2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 9.32813,0 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 15.33955,2.9375 0,-13.59375 2.71875,0 3.21875,9.625 q 0.4375,1.34375 0.64062,2.01562 0.23438,-0.75 0.73438,-2.1875 l 3.25,-9.45312 2.42187,0 0,13.59375 -1.73437,0 0,-11.39063 -3.95313,11.39063 -1.625,0 -3.9375,-11.57813 0,11.57813 -1.73437,0 z m 14.75955,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 15.67259,4.92188 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17187,0 -2.17187,-0.64063 -0.98438,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48437,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98438,-0.64063 2.20313,-0.64063 0.89062,0 1.57812,0.375 0.70313,0.375 1.14063,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54688,0 z m -5.28125,-4.92188 q 0,1.89063 0.79688,2.82813 0.8125,0.9375 1.89062,0.9375 1.09375,0 1.85938,-0.89063 0.76562,-0.89062 0.76562,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92187,-0.95312 -1.10938,0 -1.85938,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01635,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.07884,5.875 0,-13.59375 1.67188,0 0,13.59375 -1.67188,0 z" />
+  <path
+     style="fill:#93c47d;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path17"
+     d="m 0.99020904,1.0014508 175.27560096,0 0,45.4488102 -175.27560096,0 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path19"
+     d="m 0.99020904,1.0014508 175.27560096,0 0,45.4488102 -175.27560096,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path21"
+     d="m 56.333673,19.645861 0,-13.5937502 2.71875,0 3.218747,9.6250002 q 0.4375,1.34375 0.64063,2.01562 0.23437,-0.75 0.73437,-2.1875 l 3.25,-9.4531202 2.42188,0 0,13.5937502 -1.73438,0 0,-11.3906302 -3.95312,11.3906302 -1.624997,0 -3.9375,-11.5781302 0,11.5781302 -1.73438,0 z m 14.759547,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.0937502 3.09375,-1.0937502 2.03125,0 3.3125,1.3437502 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 15.67259,4.92188 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17187,0 -2.17187,-0.64063 -0.98438,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48437,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98438,-0.6406302 2.20313,-0.6406302 0.89062,0 1.57812,0.375 0.70313,0.3750002 1.14063,0.9843802 l 0,-4.8750002 1.65625,0 0,13.5937502 -1.54688,0 z m -5.28125,-4.92188 q 0,1.89063 0.79688,2.82813 0.8125,0.9375 1.89062,0.9375 1.09375,0 1.85938,-0.89063 0.76562,-0.89062 0.76562,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92187,-0.95312 -1.10938,0 -1.85938,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01635,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.3750002 3.32812,-1.3750002 1.98438,0 3.23438,1.3437502 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.07884,5.875 0,-13.5937502 1.67188,0 0,13.5937502 -1.67188,0 z m 10.92607,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.3750002 3.32813,-1.3750002 1.98437,0 3.23437,1.3437502 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.09447,5.875 0,-9.8593802 1.5,0 0,1.5000002 q 0.57812,-1.04687 1.0625,-1.3750002 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.5468802 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path23"
+     d="m 15.439871,41.645851 0,-13.59375 4.6875,0 q 1.578125,0 2.421875,0.1875 1.15625,0.26562 1.984375,0.96875 1.078125,0.92187 1.609375,2.34375 0.53125,1.40625 0.53125,3.21875 0,1.54687 -0.359375,2.75 -0.359375,1.1875 -0.921875,1.98437 -0.5625,0.78125 -1.234375,1.23438 -0.671875,0.4375 -1.625,0.67187 -0.953125,0.23438 -2.1875,0.23438 l -4.90625,0 z m 1.796875,-1.60938 2.90625,0 q 1.34375,0 2.109375,-0.25 0.765625,-0.25 1.21875,-0.70312 0.640625,-0.64063 1,-1.71875 0.359375,-1.07813 0.359375,-2.625 0,-2.125 -0.703125,-3.26563 -0.703125,-1.15625 -1.703125,-1.54687 -0.71875,-0.28125 -2.328125,-0.28125 l -2.859375,0 0,10.39062 z m 18.207321,-1.5625 1.71875,0.21875 q -0.40625,1.5 -1.515625,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.421875,-1.32813 -1.265625,-1.32812 -1.265625,-3.73437 0,-2.48438 1.265625,-3.85938 1.28125,-1.375 3.328125,-1.375 1.984375,0 3.234375,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.01563,0.4375 l -7.34375,0 q 0.09375,1.625 0.921875,2.48437 0.828125,0.85938 2.0625,0.85938 0.90625,0 1.546875,-0.46875 0.65625,-0.48438 1.046875,-1.54688 z m -5.484375,-2.70312 5.5,0 q -0.109375,-1.23438 -0.625,-1.85938 -0.796875,-0.96875 -2.078125,-0.96875 -1.140625,0 -1.9375,0.78125 -0.78125,0.76563 -0.859375,2.04688 z m 8.438217,2.9375 1.65625,-0.26563 q 0.140625,1 0.765625,1.53125 0.640625,0.51563 1.78125,0.51563 1.15625,0 1.703125,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.484375,-0.89063 -0.34375,-0.21875 -1.703125,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.703125,-0.34375 -1.078125,-0.9375 -0.359375,-0.60938 -0.359375,-1.32813 0,-0.65625 0.296875,-1.21875 0.3125,-0.5625 0.828125,-0.9375 0.390625,-0.28125 1.0625,-0.48437 0.671875,-0.20313 1.4375,-0.20313 1.171875,0 2.046875,0.34375 0.875,0.32813 1.28125,0.90625 0.421875,0.5625 0.578125,1.51563 l -1.625,0.21875 q -0.109375,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.640625,0.39063 -0.484375,0.375 -0.484375,0.875 0,0.32812 0.203125,0.59375 0.203125,0.26562 0.640625,0.4375 0.25,0.0937 1.46875,0.4375 1.765625,0.46875 2.46875,0.76562 0.703125,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.484375,1.57813 -0.484375,0.73437 -1.40625,1.14062 -0.921875,0.39063 -2.078125,0.39063 -1.921875,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.4375,-0.67188 1.640625,0.21875 q -0.265625,1.6875 -1.375,2.65625 -1.109375,0.95313 -2.734375,0.95313 -2.015625,0 -3.25,-1.3125 -1.21875,-1.32813 -1.21875,-3.79688 0,-1.59375 0.515625,-2.78125 0.53125,-1.20312 1.609375,-1.79687 1.09375,-0.60938 2.359375,-0.60938 1.609375,0 2.625,0.8125 1.015625,0.8125 1.3125,2.3125 l -1.625,0.25 q -0.234375,-1 -0.828125,-1.5 -0.59375,-0.5 -1.421875,-0.5 -1.265625,0 -2.0625,0.90625 -0.78125,0.90625 -0.78125,2.85938 0,1.98437 0.765625,2.89062 0.765625,0.89063 1.984375,0.89063 0.984375,0 1.640625,-0.59375 0.65625,-0.60938 0.84375,-1.85938 z m 2.875004,3.60938 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.843747,0 1.718747,0.54688 l -0.57812,1.54687 q -0.609377,-0.35937 -1.234377,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 6.243917,-11.6875 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 4.1292,3.78125 0,-13.64063 1.53125,0 0,1.28125 q 0.53125,-0.75 1.20312,-1.125 0.6875,-0.375 1.64063,-0.375 1.26562,0 2.23437,0.65625 0.96875,0.64063 1.45313,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54688,2.73437 -0.54687,1.20313 -1.57812,1.84375 -1.03125,0.64063 -2.17188,0.64063 -0.84375,0 -1.51562,-0.34375 -0.65625,-0.35938 -1.07813,-0.89063 l 0,4.79688 -1.67187,0 z m 1.51562,-8.65625 q 0,1.90625 0.76563,2.8125 0.78125,0.90625 1.875,0.90625 1.10937,0 1.89062,-0.9375 0.79688,-0.9375 0.79688,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76563,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89063,1 -0.8125,1 -0.8125,2.89063 z m 12.51635,3.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 1.54267,-10.1875 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 3.5042,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.28197,4.92188 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14062,-1.625 0.89063,0 1.64063,0.32813 0.75,0.3125 1.10937,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67187,0 0,-6 q 0,-1.01563 -0.20313,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17187,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76563,0.67188 -0.76563,2.57813 l 0,5.375 -1.67187,0 z m 15.71527,0 0,-13.59375 2.71875,0 3.21875,9.625 q 0.4375,1.34375 0.64062,2.01562 0.23438,-0.75 0.73438,-2.1875 l 3.25,-9.45312 2.42187,0 0,13.59375 -1.73437,0 0,-11.39063 -3.95313,11.39063 -1.625,0 -3.9375,-11.57813 0,11.57813 -1.73437,0 z m 14.75955,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 15.67259,4.92188 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17187,0 -2.17187,-0.64063 -0.98438,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48437,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98438,-0.64063 2.20313,-0.64063 0.89062,0 1.57812,0.375 0.70313,0.375 1.14063,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54688,0 z m -5.28125,-4.92188 q 0,1.89063 0.79688,2.82813 0.8125,0.9375 1.89062,0.9375 1.09375,0 1.85938,-0.89063 0.76562,-0.89062 0.76562,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92187,-0.95312 -1.10938,0 -1.85938,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01634,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.07884,5.875 0,-13.59375 1.67188,0 0,13.59375 -1.67188,0 z" />
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path25"
+     d="m 242.8301,57.169641 0,0 c 0,-5.92015 4.79922,-10.71938 10.71939,-10.71938 l 138.90771,0 c 2.84296,0 5.56946,1.12937 7.57974,3.13964 2.01026,2.01027 3.13962,4.73678 3.13962,7.57974 l 0,42.876219 c 0,5.92014 -4.79922,10.71938 -10.71936,10.71938 l -138.90771,0 0,0 c -5.92016,0 -10.71939,-4.79924 -10.71939,-10.71938 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path27"
+     d="m 242.8301,57.169641 0,0 c 0,-5.92015 4.79922,-10.71938 10.71939,-10.71938 l 138.90771,0 c 2.84296,0 5.56946,1.12937 7.57974,3.13964 2.01026,2.01027 3.13962,4.73678 3.13962,7.57974 l 0,42.876219 c 0,5.92014 -4.79922,10.71938 -10.71936,10.71938 l -138.90771,0 0,0 c -5.92016,0 -10.71939,-4.79924 -10.71939,-10.71938 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path29"
+     d="m 291.84124,74.527755 0,-13.593754 6.03125,0 q 1.8125,0 2.75,0.359374 0.95312,0.35938 1.51562,1.29688 0.5625,0.92187 0.5625,2.04687 0,1.45313 -0.9375,2.45313 -0.92187,0.98437 -2.89062,1.25 0.71875,0.34375 1.09375,0.67187 0.78125,0.73438 1.48437,1.8125 l 2.375,3.70313 -2.26562,0 -1.79688,-2.82813 q -0.79687,-1.21875 -1.3125,-1.875 -0.5,-0.65625 -0.90625,-0.90625 -0.40625,-0.26562 -0.8125,-0.35937 -0.3125,-0.0781 -1.01562,-0.0781 l -2.07813,0 0,6.04688 -1.79687,0 z m 1.79687,-7.59375 3.85938,0 q 1.23437,0 1.92187,-0.25 0.70313,-0.26563 1.0625,-0.82813 0.375,-0.5625 0.375,-1.21875 0,-0.96875 -0.70312,-1.57812 -0.70313,-0.625 -2.21875,-0.625 l -4.29688,0 0,4.5 z m 18.17606,4.42187 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.51635,5.875 0,-8.54688 -1.48437,0 0,-1.3125 1.48437,0 0,-1.04687 q 0,-0.98438 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.046884 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.468754 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32813 -0.3125,0.3125 -0.3125,1.20312 l 0,0.90625 1.92188,0 0,1.3125 -1.92188,0 0,8.54688 -1.65625,0 z m 4.76142,0 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 12.9783,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 8.43824,2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 10,2.9375 0,-13.593754 1.67187,0 0,4.875004 q 1.17188,-1.35938 2.95313,-1.35938 1.09375,0 1.89062,0.4375 0.8125,0.42188 1.15625,1.1875 0.35938,0.76563 0.35938,2.20313 l 0,6.25 -1.67188,0 0,-6.25 q 0,-1.25 -0.54687,-1.8125 -0.54688,-0.57813 -1.53125,-0.57813 -0.75,0 -1.40625,0.39063 -0.64063,0.375 -0.92188,1.04687 -0.28125,0.65625 -0.28125,1.8125 l 0,5.39063 -1.67187,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path31"
+     d="m 273.01158,100.52775 q -1.375,-1.749995 -2.32813,-4.078125 -0.95312,-2.34375 -0.95312,-4.84375 0,-2.21875 0.70312,-4.23437 0.84375,-2.34375 2.57813,-4.67188 l 1.20312,0 q -1.125,1.92188 -1.48437,2.75 -0.5625,1.28125 -0.89063,2.67188 -0.40625,1.73437 -0.40625,3.48437 0,4.46875 2.78125,8.921875 l -1.20312,0 z m 3.0408,-15.687495 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 4.12921,0 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 l 0,5.375 -1.67188,0 z m 16.81321,-3.60938 1.64062,0.21875 q -0.26562,1.6875 -1.375,2.65625 -1.10937,0.95313 -2.73437,0.95313 -2.01563,0 -3.25,-1.3125 -1.21875,-1.32813 -1.21875,-3.79688 0,-1.59375 0.51562,-2.78125 0.53125,-1.20312 1.60938,-1.79687 1.09375,-0.60938 2.35937,-0.60938 1.60938,0 2.625,0.8125 1.01563,0.8125 1.3125,2.3125 l -1.625,0.25 q -0.23437,-1 -0.82812,-1.5 -0.59375,-0.5 -1.42188,-0.5 -1.26562,0 -2.0625,0.90625 -0.78125,0.90625 -0.78125,2.85938 0,1.98437 0.76563,2.89062 0.76562,0.89063 1.98437,0.89063 0.98438,0 1.64063,-0.59375 0.65625,-0.60938 0.84375,-1.85938 z m 2.875,3.60938 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 12.9783,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.11011,5.875 0,-9.85938 1.5,0 0,1.39063 q 0.45312,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76562,-0.45313 1.09375,0 1.79688,0.45313 0.70312,0.45312 0.98437,1.28125 1.17188,-1.73438 3.04688,-1.73438 1.46875,0 2.25,0.8125 0.79687,0.8125 0.79687,2.5 l 0,6.76563 -1.67187,0 0,-6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42188,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67188,0 0,-6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70312,0 -1.3125,0.375 -0.59375,0.35937 -0.85937,1.07812 -0.26563,0.71875 -0.26563,2.0625 l 0,5.10938 -1.67187,0 z m 22.2908,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.11007,5.875 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 l 0,5.375 -1.67188,0 z m 14.03199,-1.5 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 7.96453,0.28125 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 4.04761,4.9375 0,-13.59375 1.67187,0 0,13.59375 -1.67187,0 z m 5.2698,3.999995 -1.1875,0 q 2.76563,-4.453125 2.76563,-8.921875 0,-1.73437 -0.39063,-3.45312 -0.32812,-1.39063 -0.89062,-2.67188 -0.35938,-0.84375 -1.48438,-2.78125 l 1.1875,0 q 1.75,2.32813 2.57813,4.67188 0.71875,2.01562 0.71875,4.23437 0,2.5 -0.96875,4.84375 -0.95313,2.32813 -2.32813,4.078125 z" />
+  <path
+     style="fill:#f6b26b;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path33"
+     d="m 457.25267,55.883341 175.2756,0 0,45.448819 -175.2756,0 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path35"
+     d="m 457.25267,55.883341 175.2756,0 0,45.448819 -175.2756,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path37"
+     d="m 483.12504,74.527755 0,-13.593754 6.03125,0 q 1.8125,0 2.75,0.359374 0.95312,0.35938 1.51562,1.29688 0.5625,0.92187 0.5625,2.04687 0,1.45313 -0.9375,2.45313 -0.92187,0.98437 -2.89062,1.25 0.71875,0.34375 1.09375,0.67187 0.78125,0.73438 1.48437,1.8125 l 2.375,3.70313 -2.26562,0 -1.79688,-2.82813 q -0.79687,-1.21875 -1.3125,-1.875 -0.5,-0.65625 -0.90625,-0.90625 -0.40625,-0.26562 -0.8125,-0.35937 -0.3125,-0.0781 -1.01562,-0.0781 l -2.07813,0 0,6.04688 -1.79687,0 z m 1.79687,-7.59375 3.85938,0 q 1.23437,0 1.92187,-0.25 0.70313,-0.26563 1.0625,-0.82813 0.375,-0.5625 0.375,-1.21875 0,-0.96875 -0.70312,-1.57812 -0.70313,-0.625 -2.21875,-0.625 l -4.29688,0 0,4.5 z m 18.17609,4.42187 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.11004,9.65625 0,-13.64063 1.53125,0 0,1.28125 q 0.53125,-0.75 1.20313,-1.125 0.6875,-0.375 1.64062,-0.375 1.26563,0 2.23438,0.65625 0.96875,0.64063 1.45312,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54687,2.73437 -0.54688,1.20313 -1.57813,1.84375 -1.03125,0.64063 -2.17187,0.64063 -0.84375,0 -1.51563,-0.34375 -0.65625,-0.35938 -1.07812,-0.89063 l 0,4.79688 -1.67188,0 z m 1.51563,-8.65625 q 0,1.90625 0.76562,2.8125 0.78125,0.90625 1.875,0.90625 1.10938,0 1.89063,-0.9375 0.79687,-0.9375 0.79687,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76562,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89062,1 -0.8125,1 -0.8125,2.89063 z m 8.84448,4.875 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 12.97833,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 8.43817,2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.11011,5.875 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14062,-1.625 0.89063,0 1.64063,0.32813 0.75,0.3125 1.10937,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67187,0 0,-6 q 0,-1.01563 -0.20313,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17187,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76563,0.67188 -0.76563,2.57813 l 0,5.375 -1.67187,0 z m 14.03198,-1.5 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 l 0,-5.65625 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 7.96454,0.28125 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 7.7351,3.4375 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 l 0,-5.65625 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 1.54267,-10.1875 0,-1.906254 1.67187,0 0,1.906254 -1.67187,0 z m 0,11.6875 0,-9.85938 1.67187,0 0,9.85938 -1.67187,0 z m 3.50421,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26562,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29687,1.32813 1.29687,3.67188 0,1.90625 -0.57812,3 -0.5625,1.07812 -1.65625,1.6875 -1.07813,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82812,2.82813 0.82813,0.9375 2.07813,0.9375 1.25,0 2.0625,-0.9375 0.82812,-0.95313 0.82812,-2.89063 0,-1.82812 -0.82812,-2.76562 -0.82813,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07813,0.9375 -0.82812,0.9375 -0.82812,2.82812 z m 9.28198,4.92188 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14062,-1.625 0.89063,0 1.64063,0.32813 0.75,0.3125 1.10937,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67187,0 0,-6 q 0,-1.01563 -0.20313,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17187,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76563,0.67188 -0.76563,2.57813 l 0,5.375 -1.67187,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path39"
+     d="m 520.89034,96.527755 0,-13.59375 2.71875,0 3.21875,9.625 q 0.4375,1.34375 0.64062,2.01562 0.23438,-0.75 0.73438,-2.1875 l 3.25,-9.45312 2.42187,0 0,13.59375 -1.73437,0 0,-11.39063 -3.95313,11.39063 -1.625,0 -3.9375,-11.57813 0,11.57813 -1.73437,0 z m 14.75952,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 15.67261,4.92188 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01636,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.07886,5.875 0,-13.59375 1.67187,0 0,13.59375 -1.67187,0 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path41"
+     d="m 176.26581,23.725861 66.56428,54.881894" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path43"
+     d="m 176.2658,23.725861 57.30554,47.248074" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"
+     inkscape:connector-curvature="0"
+     id="path45"
+     d="m 231.46984,73.522775 9.10437,3.22499 -4.90137,-8.32266 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path47"
+     d="M 176.26581,133.48964 242.83009,78.607765" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path49"
+     d="M 176.2658,133.48964 233.57134,86.241585" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"
+     inkscape:connector-curvature="0"
+     id="path51"
+     d="m 235.67284,88.790405 4.90137,-8.32266 -9.10437,3.22499 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path53"
+     d="m 403.17656,78.607755 54.07611,0" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path55"
+     d="m 403.17656,78.607755 42.07611,0" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"
+     inkscape:connector-curvature="0"
+     id="path57"
+     d="m 445.25267,81.911225 9.0762,-3.30347 -9.0762,-3.30346 z" />
+  <path
+     style="fill:#cfe2f3;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path59"
+     d="m 686.60439,57.169641 0,0 c 0,-5.92015 4.79919,-10.71938 10.71936,-10.71938 l 138.90771,0 c 2.84296,0 5.56946,1.12937 7.57977,3.13964 2.01026,2.01027 3.13959,4.73678 3.13959,7.57974 l 0,42.876219 c 0,5.92014 -4.79919,10.71938 -10.71936,10.71938 l -138.90771,0 0,0 c -5.92017,0 -10.71936,-4.79924 -10.71936,-10.71938 z" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path61"
+     d="m 686.60439,57.169641 0,0 c 0,-5.92015 4.79919,-10.71938 10.71936,-10.71938 l 138.90771,0 c 2.84296,0 5.56946,1.12937 7.57977,3.13964 2.01026,2.01027 3.13959,4.73678 3.13959,7.57974 l 0,42.876219 c 0,5.92014 -4.79919,10.71938 -10.71936,10.71938 l -138.90771,0 0,0 c -5.92017,0 -10.71936,-4.79924 -10.71936,-10.71938 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path63"
+     d="m 743.90969,85.527755 0,-13.59375 9.84375,0 0,1.59375 -8.04687,0 0,4.17187 7.53125,0 0,1.59375 -7.53125,0 0,4.625 8.35937,0 0,1.60938 -10.15625,0 z m 18.58423,0 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 9.28198,-6.76562 0,-1.90625 1.67188,0 0,1.90625 -1.67188,0 z m 0,11.6875 0,-9.85938 1.67188,0 0,9.85938 -1.67188,0 z m 7.7854,-1.5 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 l 0,-5.65625 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 0.9021,-3.42188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.2663,4.92188 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path65"
+     d="m 632.52828,78.607755 54.07611,0" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
+     inkscape:connector-curvature="0"
+     id="path67"
+     d="m 632.52828,78.607755 42.07611,0" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"
+     inkscape:connector-curvature="0"
+     id="path69"
+     d="m 674.60439,81.911225 9.07617,-3.30347 -9.07617,-3.30346 z" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path71"
+     d="m 764.6595,110.92796 c -46.62292,7.0818 -181.67194,35.80228 -279.73755,42.49081 -98.06561,6.68854 -257.21347,-1.9663 -308.65616,-2.35957" />
+  <path
+     style="stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:8, 6"
+     inkscape:connector-curvature="0"
+     id="path73"
+     d="m 764.6595,110.92796 c -46.62292,7.0818 -181.67194,35.80228 -279.73755,42.49081 -49.03281,3.3443 -113.33615,2.8527 -171.81168,1.4759 -29.23776,-0.68842 -57.01852,-1.59812 -80.70505,-2.3603 -11.84326,-0.3811 -22.66295,-0.72532 -32.12941,-0.98654 -2.36661,-0.0653 -4.64865,-0.12542 -6.84096,-0.17964 -1.09614,-0.0271 -2.16989,-0.0527 -3.22053,-0.0768 l -1.95003,-0.0426" />
+  <path
+     style="fill:#000000;fill-opacity:0;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path77"
+     d="m 414.38914,121.4109 93.82675,0 0,34.80316 -93.82675,0 z" />
+  <path
+     style="fill:#000000;fill-rule:nonzero"
+     inkscape:connector-curvature="0"
+     id="path79"
+     d="m 426.56102,134.31777 1.53125,0 -1.46875,7.03125 q -0.17188,0.875 -0.17188,1.29687 0,0.92188 0.71875,1.48438 0.73438,0.5625 1.82813,0.5625 0.875,0 1.625,-0.39063 0.76562,-0.40625 1.20312,-1.1875 0.4375,-0.78125 0.78125,-2.5 l 1.32813,-6.29687 1.53125,0 -1.40625,6.71875 q -0.35938,1.71875 -0.95313,2.71875 -0.57812,1 -1.625,1.60937 -1.03125,0.60938 -2.40625,0.60938 -1.29687,0 -2.25,-0.42188 -0.9375,-0.4375 -1.42187,-1.1875 -0.46875,-0.76562 -0.46875,-1.73437 0,-0.59375 0.32812,-2.0625 l 1.29688,-6.25 z m 8.21094,14.64062 2.40625,-11.48437 1.3125,0 -0.25,1.15625 q 0.73437,-0.76563 1.29687,-1.04688 0.57813,-0.29687 1.21875,-0.29687 1.1875,0 1.96875,0.85937 0.78125,0.85938 0.78125,2.46875 0,1.29688 -0.4375,2.375 -0.42187,1.0625 -1.04687,1.71875 -0.625,0.64063 -1.26563,0.95313 -0.64062,0.29687 -1.3125,0.29687 -1.48437,0 -2.3125,-1.51562 l -0.9375,4.51562 -1.42187,0 z m 2.8125,-6.57812 q 0,0.92187 0.125,1.28125 0.20312,0.51562 0.64062,0.82812 0.45313,0.3125 1.03125,0.3125 1.21875,0 1.96875,-1.375 0.75,-1.375 0.75,-2.79687 0,-1.0625 -0.5,-1.625 -0.5,-0.57813 -1.25,-0.57813 -0.54687,0 -1.01562,0.28125 -0.45313,0.28125 -0.84375,0.85938 -0.39063,0.5625 -0.65625,1.39062 -0.25,0.8125 -0.25,1.42188 z m 12.38281,2.1875 q -1.20313,1.39062 -2.53125,1.39062 -1.17188,0 -1.96875,-0.875 -0.78125,-0.875 -0.78125,-2.53125 0,-1.51562 0.625,-2.76562 0.625,-1.25 1.54687,-1.875 0.9375,-0.625 1.875,-0.625 1.54688,0 2.34375,1.48437 l 0.9375,-4.45312 1.40625,0 -2.39062,11.45312 -1.3125,0 0.25,-1.20312 z m -3.875,-2.28125 q 0,0.875 0.17187,1.375 0.17188,0.5 0.57813,0.82812 0.42187,0.32813 1,0.32813 0.96875,0 1.75,-1 1.04687,-1.32813 1.04687,-3.28125 0,-0.98438 -0.51562,-1.53125 -0.51563,-0.5625 -1.29688,-0.5625 -0.51562,0 -0.9375,0.23437 -0.40625,0.21875 -0.82812,0.76563 -0.40625,0.54687 -0.6875,1.39062 -0.28125,0.82813 -0.28125,1.45313 z m 12.77344,2.45312 q -0.73438,0.625 -1.42188,0.92188 -0.67187,0.29687 -1.4375,0.29687 -1.15625,0 -1.85937,-0.67187 -0.70313,-0.6875 -0.70313,-1.73438 0,-0.70312 0.3125,-1.23437 0.32813,-0.53125 0.84375,-0.85938 0.53125,-0.32812 1.28125,-0.46875 0.48438,-0.0937 1.8125,-0.14062 1.32813,-0.0625 1.90625,-0.28125 0.17188,-0.57813 0.17188,-0.96875 0,-0.48438 -0.35938,-0.76563 -0.5,-0.39062 -1.4375,-0.39062 -0.89062,0 -1.46875,0.39062 -0.5625,0.39063 -0.8125,1.125 l -1.4375,-0.125 q 0.4375,-1.23437 1.39063,-1.89062 0.95312,-0.65625 2.39062,-0.65625 1.54688,0 2.4375,0.73437 0.6875,0.54688 0.6875,1.42188 0,0.65625 -0.1875,1.53125 l -0.46875,2.0625 q -0.21875,0.98437 -0.21875,1.60937 0,0.39063 0.17188,1.125 l -1.42188,0 q -0.125,-0.40625 -0.17187,-1.03125 z m 0.53125,-3.17187 q -0.29688,0.10937 -0.64063,0.17187 -0.34375,0.0625 -1.14062,0.14063 -1.23438,0.10937 -1.75,0.28125 -0.5,0.15625 -0.76563,0.53125 -0.25,0.35937 -0.25,0.8125 0,0.59375 0.40625,0.98437 0.42188,0.375 1.17188,0.375 0.70312,0 1.34375,-0.375 0.65625,-0.375 1.03125,-1.03125 0.375,-0.67187 0.59375,-1.89062 z m 6.08593,3.04687 -0.23437,1.17188 q -0.51563,0.125 -0.98438,0.125 -0.84375,0 -1.34375,-0.42188 -0.375,-0.3125 -0.375,-0.84375 0,-0.28125 0.20313,-1.26562 l 1,-4.8125 -1.10938,0 0.21875,-1.09375 1.125,0 0.42188,-2.04688 1.625,-0.96875 -0.64063,3.01563 1.39063,0 -0.23438,1.09375 -1.375,0 -0.96875,4.57812 q -0.17187,0.875 -0.17187,1.04688 0,0.25 0.14062,0.39062 0.14063,0.125 0.46875,0.125 0.46875,0 0.84375,-0.0937 z m 7.2266,-1.67187 1.375,0.14062 q -0.29688,1.03125 -1.35938,1.95313 -1.0625,0.92187 -2.54687,0.92187 -0.92188,0 -1.68753,-0.42187 -0.76563,-0.4375 -1.17188,-1.25 -0.40625,-0.8125 -0.40625,-1.84375 0,-1.35938 0.625,-2.64063 0.64063,-1.28125 1.64066,-1.89062 1,-0.625 2.15625,-0.625 1.48437,0 2.375,0.92187 0.89062,0.92188 0.89062,2.51563 0,0.60937 -0.10937,1.25 l -6.10941,0 q -0.0312,0.23437 -0.0312,0.4375 0,1.15625 0.53128,1.78125 0.53125,0.60937 1.3125,0.60937 0.71875,0 1.42188,-0.46875 0.70312,-0.48437 1.09375,-1.39062 z m -4.10941,-2.04688 4.65628,0 q 0.0156,-0.21875 0.0156,-0.3125 0,-1.0625 -0.53125,-1.625 -0.53125,-0.57812 -1.375,-0.57812 -0.90625,0 -1.65625,0.625 -0.73438,0.625 -1.10941,1.89062 z m 7.05472,2.03125 1.40625,-0.0781 q 0,0.60937 0.1875,1.04687 0.1875,0.42188 0.6875,0.70313 0.51563,0.26562 1.1875,0.26562 0.9375,0 1.40625,-0.375 0.46875,-0.375 0.46875,-0.89062 0,-0.35938 -0.28125,-0.6875 -0.29687,-0.32813 -1.42187,-0.8125 -1.10938,-0.48438 -1.42188,-0.67188 -0.53125,-0.32812 -0.79687,-0.75 -0.26563,-0.4375 -0.26563,-1 0,-0.98437 0.78125,-1.6875 0.78125,-0.70312 2.1875,-0.70312 1.5625,0 2.375,0.71875 0.82813,0.71875 0.85938,1.90625 l -1.39063,0.0937 q -0.0312,-0.75 -0.53125,-1.1875 -0.5,-0.4375 -1.40625,-0.4375 -0.73437,0 -1.14062,0.34375 -0.40625,0.32812 -0.40625,0.71875 0,0.39062 0.34375,0.6875 0.23437,0.20312 1.21875,0.625 1.625,0.70312 2.04687,1.10937 0.67188,0.64063 0.67188,1.57813 0,0.60937 -0.39063,1.20312 -0.375,0.59375 -1.15625,0.95313 -0.76562,0.35937 -1.82812,0.35937 -1.4375,0 -2.4375,-0.71875 -1.01563,-0.70312 -0.95313,-2.3125 z" />
+</svg>
diff --git a/doc/6.0.x/developer/images/architecture.jpg b/doc/6.0.x/developer/images/architecture.jpg
new file mode 100644
index 0000000..5bc9f4e
--- /dev/null
+++ b/doc/6.0.x/developer/images/architecture.jpg
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-CompoundLayoutProvider.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-CompoundLayoutProvider.png
new file mode 100644
index 0000000..1186d4d
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-CompoundLayoutProvider.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-abstractLayoutEditPart.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-abstractLayoutEditPart.png
new file mode 100644
index 0000000..f046f71
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-abstractLayoutEditPart.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-border1.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-border1.png
new file mode 100644
index 0000000..572ffcc
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-border1.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-border2.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-border2.png
new file mode 100644
index 0000000..ce54f9e
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-border2.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithm.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithm.png
new file mode 100644
index 0000000..d33165a
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithm.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithmProvider.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithmProvider.png
new file mode 100644
index 0000000..b0a8cb0
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-customLayoutAlgorithmProvider.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-ilayoutNodeproviderApi.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-ilayoutNodeproviderApi.png
new file mode 100644
index 0000000..97485c8
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-ilayoutNodeproviderApi.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-iproviderApi.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-iproviderApi.png
new file mode 100644
index 0000000..66d9771
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-iproviderApi.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutProvider.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutProvider.png
new file mode 100644
index 0000000..d0b2e7c
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutProvider.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutingAPI.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutingAPI.png
new file mode 100644
index 0000000..c62e9ac
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutingAPI.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutprovider-extension.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutprovider-extension.png
new file mode 100644
index 0000000..3c501d7
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-layoutprovider-extension.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-siriusVSMIntegration.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-siriusVSMIntegration.png
new file mode 100644
index 0000000..d8252f7
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-siriusVSMIntegration.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-ui.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-ui.png
new file mode 100644
index 0000000..ef38c70
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-ui.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering.png
new file mode 100644
index 0000000..2608531
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering2.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering2.png
new file mode 100644
index 0000000..3b869bf
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrdering2.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingArchitecture.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingArchitecture.png
new file mode 100644
index 0000000..fa8a978
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingArchitecture.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingExtensionPoint.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingExtensionPoint.png
new file mode 100644
index 0000000..2dfa5bf
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingExtensionPoint.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingProvider.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingProvider.png
new file mode 100644
index 0000000..5318995
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-viewOrderingProvider.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/arrange-all/arrange-all-vsm.png b/doc/6.0.x/developer/images/arrange-all/arrange-all-vsm.png
new file mode 100644
index 0000000..2008f93
--- /dev/null
+++ b/doc/6.0.x/developer/images/arrange-all/arrange-all-vsm.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/customPageApi_debugPage_after.png b/doc/6.0.x/developer/images/customPageApi_debugPage_after.png
new file mode 100644
index 0000000..237a416
--- /dev/null
+++ b/doc/6.0.x/developer/images/customPageApi_debugPage_after.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/customPageApi_debugPage_before.png b/doc/6.0.x/developer/images/customPageApi_debugPage_before.png
new file mode 100644
index 0000000..fc2049f
--- /dev/null
+++ b/doc/6.0.x/developer/images/customPageApi_debugPage_before.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/customPageApi_debugPage_example.png b/doc/6.0.x/developer/images/customPageApi_debugPage_example.png
new file mode 100644
index 0000000..0686080
--- /dev/null
+++ b/doc/6.0.x/developer/images/customPageApi_debugPage_example.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/customPageApi_debugPage_extensionPoint.png b/doc/6.0.x/developer/images/customPageApi_debugPage_extensionPoint.png
new file mode 100644
index 0000000..0fbff20
--- /dev/null
+++ b/doc/6.0.x/developer/images/customPageApi_debugPage_extensionPoint.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/customPageApi_debugPage_replace.png b/doc/6.0.x/developer/images/customPageApi_debugPage_replace.png
new file mode 100644
index 0000000..cb7f81e
--- /dev/null
+++ b/doc/6.0.x/developer/images/customPageApi_debugPage_replace.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/propertiesView.png b/doc/6.0.x/developer/images/propertiesView.png
new file mode 100644
index 0000000..7a59d51
--- /dev/null
+++ b/doc/6.0.x/developer/images/propertiesView.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/sessionCreation.png b/doc/6.0.x/developer/images/sessionCreation.png
new file mode 100644
index 0000000..f91b638
--- /dev/null
+++ b/doc/6.0.x/developer/images/sessionCreation.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/customStyle.png b/doc/6.0.x/developer/images/style/customStyle.png
new file mode 100644
index 0000000..094eb01
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/customStyle.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/editPartProvider_plugin1.png b/doc/6.0.x/developer/images/style/editPartProvider_plugin1.png
new file mode 100644
index 0000000..269f25c
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/editPartProvider_plugin1.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/editParts.jpg b/doc/6.0.x/developer/images/style/editParts.jpg
new file mode 100644
index 0000000..40dce69
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/editParts.jpg
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/instanceRole.png b/doc/6.0.x/developer/images/style/instanceRole.png
new file mode 100644
index 0000000..7b2ba13
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/instanceRole.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/styleConfigurationProviderExt.png b/doc/6.0.x/developer/images/style/styleConfigurationProviderExt.png
new file mode 100644
index 0000000..52740dd
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/styleConfigurationProviderExt.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/style/viewpoint.jpg b/doc/6.0.x/developer/images/style/viewpoint.jpg
new file mode 100644
index 0000000..f146149
--- /dev/null
+++ b/doc/6.0.x/developer/images/style/viewpoint.jpg
Binary files differ
diff --git a/doc/6.0.x/developer/images/tabbar01.png b/doc/6.0.x/developer/images/tabbar01.png
new file mode 100644
index 0000000..6a71098
--- /dev/null
+++ b/doc/6.0.x/developer/images/tabbar01.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/tabbar02.png b/doc/6.0.x/developer/images/tabbar02.png
new file mode 100644
index 0000000..f4811ac
--- /dev/null
+++ b/doc/6.0.x/developer/images/tabbar02.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/tabbar_extension_plugin_xml.png b/doc/6.0.x/developer/images/tabbar_extension_plugin_xml.png
new file mode 100644
index 0000000..707eb63
--- /dev/null
+++ b/doc/6.0.x/developer/images/tabbar_extension_plugin_xml.png
Binary files differ
diff --git a/doc/6.0.x/developer/images/tabbar_extension_result.png b/doc/6.0.x/developer/images/tabbar_extension_result.png
new file mode 100644
index 0000000..f3d4fd2
--- /dev/null
+++ b/doc/6.0.x/developer/images/tabbar_extension_result.png
Binary files differ
diff --git a/doc/6.0.x/developer/integration-modeler_description_file_deployment.html b/doc/6.0.x/developer/integration-modeler_description_file_deployment.html
new file mode 100644
index 0000000..73755a0
--- /dev/null
+++ b/doc/6.0.x/developer/integration-modeler_description_file_deployment.html
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>integration-modeler_description_file_deployment</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusDeployaModelerdescriptionfile">Sirius &#8211; Deploy a Modeler description file</h1>
+		<p>This document describes how to deploy a modeler description file as an Eclipse plug-in through the available APIs.</p>
+		<h2 id="CreateanewEclipseplugin">Create a new Eclipse plug-in</h2>
+		<ul>
+			<li>Select 
+				<strong>File -&gt; New -&gt; Plug-in project</strong>
+			</li>
+			<li>Choose a name; for instance 
+				<code>com.yourcompany.yourproject.mymodeler</code>
+			</li>
+			<li>Select 
+				<em>Generate an activator</em> and uncheck the checkbox labelled 
+				<em>This plug-in will make contributions to the UI</em>
+			</li>
+			<li>Create a new folder named &quot;description&quot; in the created project&#8217;s root</li>
+			<li>Activate to true the option &quot;Activate this plug-in when one of its classes is loaded&quot; of your plugin.xml</li>
+		</ul>
+		<h2 id="Importyourmodeler">Import your modeler</h2>
+		<ul>
+			<li>Select 
+				<strong>File -&gt; Import... -&gt; File System</strong>
+			</li>
+			<li>Select the directory where your modeler description file is located.</li>
+			<li>Check that the modeler description file is checked as file to import.</li>
+			<li>import it in the previously created project</li>
+		</ul>
+		<h2 id="Contributetoorg.eclipse.sirius.componentization">Contribute to 
+			<code>org.eclipse.sirius.componentization</code>
+		</h2>
+		<ul>
+			<li>Open the 
+				<em>META-INF/MANIFEST.MF</em> file.
+			</li>
+			<li>In the 
+				<em>Extensions</em> tab, add a new extensions based on the 
+				<code>org.eclipse.sirius.componentization</code> extension point
+			</li>
+			<li>Fill the properties with the following values :
+				<ul>
+					<li>id: an identifier string</li>
+					<li>name: a name string</li>
+					<li>class: the activator of the previously created plug-in</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Here is an example :</p>
+		<pre> id="com.mycompany.yourproject.mymodeler.modeler"
+ name="com.mycompany.yourproject.mymodeler.modeler"
+ class="com.mycompany.yourproject.mymodeler.modeler.MyActivator"
+</pre>
+		<h2 id="Registeryourviewpointsatthestartofyourplugin">Register your viewpoints at the start of your plug-in</h2>
+		<ul>
+			<li>Add your viewpoints in the function start of the activator of your plug-in:</li>
+		</ul>
+		<pre>viewpoints = new HashSet&amp;lt;Viewpoint&amp;gt;();
+viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN&amp;#95;ID+&amp;quot;/&amp;lt;path&amp;#95;from&amp;#95;the&amp;#95;plugin&amp;#95;project&amp;gt;/&amp;lt;myModeler&amp;gt;.odesign&amp;quot;));
+</pre>
+		<ul>
+			<li>Suppress your viewpoints in the function stop of the activator of your plug-in</li>
+		</ul>
+		<pre>if (viewpoints != null) {
+  for (Viewpoint viewpoint : viewpoints) {
+    ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+  }
+  viewpoints.clear();
+}
+</pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/integration-plm.html b/doc/6.0.x/developer/integration-plm.html
new file mode 100644
index 0000000..b19e35e
--- /dev/null
+++ b/doc/6.0.x/developer/integration-plm.html
@@ -0,0 +1,104 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>integration-plm</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="IntegrationwithProductLifeCycleManagement">Integration with Product Life Cycle Management</h1>
+		<h2 id="API">API</h2>
+		<h3 id="Description">Description</h3>
+		<p>Sirius can be used in a concurrent environment and should therefore provide a mean to lock/unlock elements and adapt its behavior according to this information. The PermissionAuthority is responsible for telling whether an element feature is locked or not.</p>
+		<h3 id="GettingthecurrentPermissionAuthority">Getting the current Permission Authority</h3>
+		<p>The 
+			<code>org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionProvider</code> service will return an instance of 
+			<code>org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority</code> given a resource set. Convenience methods have been added in 
+			<code>ModelAccessor</code> to retrieve the current authority.
+		</p>
+		<h3 id="WritingyourownPermissionauthority">Writing your own Permission authority</h3>
+		<p>Custom Permission Authorities can be implemented in order to activate the lock/unlock support for your own concurrent handling
+			<br/>mechanism within Sirius.
+		</p>
+		<p>Providing your own Permission Authority to determine whether an element (either semantic or diagrammatic) is locked or not can
+			<br/>be done through the 
+			<code>org.eclipse.sirius.ecore.extender.PermissionProvider</code> extension point.
+		</p>
+		<p>Permission Authorities must implement the interface 
+			<code>IPermissionAuthority</code> and be described in the plug-in&#8217;s plugin.xml:
+		</p>
+		<pre>&lt;extension point="org.eclipse.sirius.ecore.extender.PermissionProvider"&gt;
+    &lt;permissionprovider priority="high" providerClass="com.example.MyAuthorityProvider" /&gt;
+&lt;/extension&gt;
+</pre>
+		<p>Your provider will the be prompted whether this permission authority should be provided considering a ResourceSet.</p>
+		<h2 id="Implementationnotes">Implementation notes</h2>
+		<p>Dynamic PLM allows for the locking and unlocking of any element as well as determining at any moment if an element has been
+			<br/>modified, created, ...
+		</p>
+		<p>These features require a tight integration of the tooling (Modelers and editors) with the permission manager. </p>
+		<p>We can logically divide these aspects in a number of components of Sirius:</p>
+		<ul>
+			<li>Core components
+				<ul>
+					<li>File Modification Validation</li>
+					<li>Semantic Model Access</li>
+					<li>ViewPoint Model Access</li>
+				</ul>
+			</li>
+			<li>Editor components
+				<ul>
+					<li>GMF model access</li>
+					<li>Graphical Viewer access</li>
+					<li>Tool Access</li>
+					<li>Properties Access (Semantic, Extension, Style and Graphical Properties)</li>
+				</ul>
+			</li>
+		</ul>
+		<h3 id="FileModificationValidation">File Modification Validation</h3>
+		<p>You can provide specific file modification validator to integrate with your legacy SCM System.
+			<br/>A file modification validator should implement  
+			<code>IFileModificationValidator</code> interface and could be contributed through  an extension point :
+		</p>
+		<p>
+			<code>org.elipse.sirius.common.fileModificationValidator</code>
+		</p>
+		<p>An default implementation (which override default eclipse to handle a Clearcase SCM specific issue) is provided in the 
+			<code>org.elipse.sirius.common.ui</code> plug-in, by the class 
+			<code>FileModificationValidator</code>.
+		</p>
+		<h3 id="SemanticAccess">Semantic Access</h3>
+		<p>Every semantic access to model elements is done through the &#8220;ModelAccessor&#8221;. This accessor is the common facade of the Ecore intrinsic data access and of any kind of extended data access. It also handles the inter-weaving of the elements provided by both the Ecore semantic model and the annotations.</p>
+		<p>Having the permission to set/unset a value or to create an instance of the semantic model are therefore done through instances of this class and a permission authority coupled with this class may be used to prompt for permission or notify changes and element creations.</p>
+		<h3 id="SiriusModelAccess">Sirius Model Access</h3>
+		<p>Every access made to the viewpoint model checks whether it has the rights to create/delete/update an element, which means every possible creation or setting of a value automatically request the permission beforehand.</p>
+		<h3 id="GMFModelAccess">GMF Model Access</h3>
+		<p>GMF models should be understood as the Annotation model used by GMF to keep track of the diagram data. It is composed of 
+			<code>Node</code>\ s, 
+			<code>Edge</code>\ s and positions for instance. The GMF model is automatically updated trough the 
+			<code>CannonicalEditPolicy</code> of every edit part in the diagram editor. We have virtually no control on that though we can tell if an edit part&#8217;s &#8220;edit mode&#8221; is enabled or not. If the edit mode is disabled then nothing 
+			<strong>should</strong> lead to a change in the GMF model.
+		</p>
+		<p>We ensure that when a 
+			<code>DDiagram</code> cannot be edited, GMF won&#8217;t bypass any EditPart to refresh the annotation model at the diagram opening.
+		</p>
+		<h3 id="GraphicalVieweraccess">Graphical Viewer access</h3>
+		<p>Mouse or keyboard editing will be prevented thanks to the disable/enable edit mode in the GMF edit parts and specific code in the properties view.</p>
+		<h3 id="ToolAccess">Tool Access</h3>
+		<p>Every tool in the modeler&#8217;s palette can cause changes in the model. As every command launched re-uses the 
+			<code>ModelAccessor</code>, it wouldn&#8217;t really change anything in a locked model. Yet since we don&#8217;t want the tool to be enabled on a locked element either, the EMFCommandFactory asks for permission before allowing the usage of a tool. When no permission is given, it will return an UnexecutableCommand.
+		</p>
+		<h3 id="PropertiesAccess">Properties Access</h3>
+		<p>Properties will ask for permission on a &#8220;per instance&#8221; basis right now, when not given, no CellEditor will be returned which means the feature won&#8217;t be editable.</p>
+		<h3 id="Notifyingthechanges">Notifying the changes</h3>
+		<p>The Permission authority should be notified on instances creation and modification. To this end the PermissionAuthority initialization will install a listener on the ResourceSet and will automatically be notified when a change occurs. This will also help in checking for unauthorized changes. In 
+			<strong>strict</strong> mode the permission authority will throw Exceptions when a change is made to a locked element. If the process was in a transactional environment, a rollback will then happen.
+		</p>
+		<h3 id="Accesserrors">Access errors</h3>
+		<p>The current implementation provides 2 modes for the ModelAccessor. The &#8220;silent&#8221; mode won&#8217;t complain about an invalid access on a locked element, it will simply ignore it. When not in &#8220;silent&#8221; mode, an Exception will be thrown in these cases. </p>
+		<h3 id="Status">Status</h3>
+		<p>Semantic Model accesses are handled through the command or properties. Extended information too. Notification are handled through the usual EMF notifiers + the notification of instance creation in the Model Accessor.</p>
+		<p>EditParts are disabled when the corresponding semantic element is locked. Permission listeners are set up to handle dynamic locking/unlocking.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/later/extensions-provide_custom_extender.txt b/doc/6.0.x/developer/later/extensions-provide_custom_extender.txt
new file mode 100644
index 0000000..bc48cfa
--- /dev/null
+++ b/doc/6.0.x/developer/later/extensions-provide_custom_extender.txt
@@ -0,0 +1,76 @@
+===================================================
+Sirius - Model Extension
+===================================================
+
+Writing your own Extender
+-------------------------
+You may want to write your own Extender if you want to define a new Metamodel extension mechanism or if you want to change the way 
+the model accesses are done on EMF objects.
+ 
+To provide your own Extender you should use the ::
+ 
+  org.eclipse.sirius.ecore.extender.ExtenderProvider 
+
+extension point and provides your own::
+
+  org.eclipse.sirius.ecore.extender.business.api.accessor.IExtenderProvider
+
+implementation.
+ 
+And then describe it through plugin.xml::
+
+  <extension
+         point="org.eclipse.sirius.ecore.extender.ExtenderProvider">
+      <extenderprovider
+            priority="highest"
+            providerClass="com.example.MyExtenderProvider">
+      </extenderprovider>
+   </extension>
+   
+And your provider will be asked to tell if yes or no the extender should be provided considering the resourceset.
+
+The priority field will be used to organize the order of the extender calls. 
+If you set the priority to highest, then you are sure every model access request will first go through
+your extender. If it set to lowest, then you know your extender will only be called if no other extenders 
+fullfilled the request.
+
+Dynamic update of the Extender
+------------------------------
+
+Your extender might need to update it's state depending on the selected viewpoints. A new API is available for that need. You can provide a MetamodelDescriptorProviders (org.eclipse.sirius.api.extender.MetamodelDescriptorProvider)  which will be asked
+for each change in the viewpoint selection, whether it provides MetamodelDescriptors or not. Then these descriptors will be passed by the ModelAccessor API to every instance of IMetamodelExtender so 
+that it can change it's internal state. For instance the EcoreIntrinsicExtender provides MetamodelDescriptors ::
+
+    DiagramDescription diag = (DiagramDescription) desc;
+                for (EPackage pak : diag.getMetamodel()) {
+                    String nsURI = pak.getNsURI();
+                    EPackage registeredPackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
+                    if (registeredPackage != null) {
+                        result.add(new EcoreMetamodelDescriptor(registeredPackage));
+                    } else {
+
+                        result.add(new EcoreMetamodelDescriptor(pak));
+                    }
+                }
+
+And then the extender reuse them in the updateMetamodels(..) Method ::
+
+	public void updateMetamodels(final Collection metamodelDescriptors) {
+	        final Iterator it = metamodelDescriptors.iterator();
+	        while (it.hasNext()) {
+	            final Object obj = it.next();
+	            if (obj instanceof EcoreMetamodelDescriptor) {
+	                final EPackage pak = ((EcoreMetamodelDescriptor) obj).resolve();
+	                if (pak != null)
+	                    addEClassFromEPackage(pak);
+	            }
+	
+	        }
+	
+	    }                
+
+
+
+
+
+
diff --git a/doc/6.0.x/developer/later/extensions-provide_custom_representation.txt b/doc/6.0.x/developer/later/extensions-provide_custom_representation.txt
new file mode 100644
index 0000000..8fa540e
--- /dev/null
+++ b/doc/6.0.x/developer/later/extensions-provide_custom_representation.txt
@@ -0,0 +1,85 @@
+============================================
+ Sirius - Provide custom representation
+============================================
+
+Description
+============
+
+Overview
+---------------------
+
+Sirius allows one to define new kind of representations.
+A representation kind is called "dialect".
+
+API
+=======
+
+Interface
+-------------------------------
+
+To provide a new dialect you must implement four interfaces.
+
+First step is to implement`org.eclipse.sirius.business.api.dialect.Dialect``. Your implementation should like this ::
+
+   public class ExampleDialect implements Dialect {
+
+     private DialectServices services;
+
+      public String getName() {
+          return "example";
+      }
+
+      public DialectServices getServices() {
+        if (services == null) {
+          services = new ExampleDialectServices();
+        }
+        return services;
+      }
+  }
+
+Second step is to implement ``org.eclipse.sirius.business.api.dialect.DialectServices``.
+
+Third step is to implement ``org.eclipse.sirius.ui.business.api.dialect.DialectUI``. Your implementation should look like this ::
+
+  public class ExampleDialectUI implements DialectUI {
+
+      private DialectUIServices services;
+
+      public String getName() {
+          return "example";
+      }
+
+      public DialectUIServices getServices() {
+          if (services == null) {
+              services = new ExampleDialectUIServices();
+          }
+          return services;
+      }
+  }
+
+Last step is to implement ``org.eclipse.sirius.ui.business.api.dialect.DialectUIServices``.
+When you have finished, you can contribute to dialect extension points.
+
+Extension points
+-------------------------------
+
+To contribute our dialect implementation, we have to provide two extensions.
+First to contribute to ``org.eclipse.sirius.dialect`` extension point.
+Here is a example ::
+
+	<extension point="org.eclipse.sirius.dialect">
+	    <dialect
+	    class="com.example.project.extension.dialect.ExampleDialect">
+	    </dialect>
+	</extension>
+
+Then we need to contribute to ``org.eclipse.sirius.ui.dialectui``
+Here is a example ::
+
+   <extension
+         point="org.eclipse.sirius.ui.dialectui">
+      <dialectUI
+            class="com.example.project.ui.extension.dialect.ExampleDialectUI">
+      </dialectUI>
+   </extension>
+	
\ No newline at end of file
diff --git a/doc/6.0.x/developer/later/extensions-provide_custom_representations_export.txt b/doc/6.0.x/developer/later/extensions-provide_custom_representations_export.txt
new file mode 100644
index 0000000..ae94baf
--- /dev/null
+++ b/doc/6.0.x/developer/later/extensions-provide_custom_representations_export.txt
@@ -0,0 +1,39 @@
+=================================================
+Sirius - Provide custom representation export
+=================================================
+
+Description
+============
+
+Overview
+---------------------
+
+Viewpoint has the functionality to export representations as images. Currently it works only with diagrams.
+
+The default export behavior is customizable in an aspect like way.
+
+API
+=======
+
+Interfaces to extends export
+------------------------------------------------
+``org.eclipse.sirius.ui.tools.api.actions.export.IBeforeExport``
+
+It contains methods that will be executed *before* representation export operations.
+
+``org.eclipse.sirius.ui.tools.api.actions.export.IAfterExport``
+
+It contains methods that will be executed *after* representation export operations.
+
+Interface to override export
+------------------------------------------------
+
+``org.eclipse.sirius.ui.tools.api.actions.export.IAroundExport``
+
+It contains one method that will be executed *instead* of the standard export
+
+Extension point
+----------------------------
+
+``org.eclipse.sirius.ui.exportRepresentationsAsImagesExtension``.
+
diff --git a/doc/6.0.x/developer/later/extensions-provide_custom_specific_editor.txt b/doc/6.0.x/developer/later/extensions-provide_custom_specific_editor.txt
new file mode 100644
index 0000000..8944e6a
--- /dev/null
+++ b/doc/6.0.x/developer/later/extensions-provide_custom_specific_editor.txt
@@ -0,0 +1,60 @@
+=================================
+Sirius - Provide specific editor
+=================================
+
+Description
+============
+
+Overview
+---------------------
+
+Sirius allows one to define eclipse editor dedicated to a viewpoint and a representation description.
+A specific editor hides session creation, opening, viewpoint activation, and session closing to end user.
+
+API
+=======
+
+Interface
+-------------------------------
+
+To provide a new specific editor you simply need to create an editor.
+
+For the first step the easiest is to extend one existing editor for your kind of representation. For instance for diagram you simply need to extend
+`org.eclipse.sirius.diagram.tools.api.editor.AbstractSpecificDDiagramEditor``. Your implementation should like this ::
+
+public class MySpecificEditor extends AbstractSpecificDDiagramEditor {
+
+    public String getDiagramDescriptionName() {
+        return "YourDiagramDescriptionName";
+    }
+
+    public URI getViewpointURI() {
+        return URI.createURI("viewpoint:/com.yourcompany.yourproject.odesign/YourViewpointName");
+    }
+
+    public boolean isSessionStoredInWorkspace() {
+        return false;
+    }
+}
+
+Second and last step is to contribute to eclipse editor extension point.
+
+Extension points
+-------------------------------
+
+To contribute our specific editor, we have to provide one extension to ``org.eclipse.ui.editors`` extension point.
+Here is a example ::
+
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            class="com.yourcompany.yourproject.design.editor.MySpecificEditor"
+            contributorClass="org.eclipse.sirius.diagram.part.ViewpointDiagramActionBarContributor"
+            default="false"
+            extensions="YourModelFileExtension"
+            icon="icons/full/obj16/YourModelFile.gif"
+            id="com.yourcompany.yourproject.design.editor."
+            name="YourModel Editor">
+      </editor>
+   </extension>
+	
\ No newline at end of file
diff --git a/doc/6.0.x/developer/later/integration-model_access.txt b/doc/6.0.x/developer/later/integration-model_access.txt
new file mode 100644
index 0000000..bbb7e07
--- /dev/null
+++ b/doc/6.0.x/developer/later/integration-model_access.txt
@@ -0,0 +1,91 @@
+===================================================
+Sirius - Model Access
+===================================================
+
+Description
+============
+
+Overview
+-----------
+
+Every access (set or get) to the semantic model is going through a unified layer called the *ModelAccessor*. This model accessor is 
+responsible for setting and getting values in an unified way, not knowing whether we are setting an intrinsic data attribute or an extended one
+from a annotation.   
+
+The ModelAccessor uses a set of Extenders which are responsible for a part of the model data. For instance we have an EcoreIntrinsicExtender which handle
+the classical (defined in the metamodel) attributes accesses. And an AnnotationExtender which use an annotation model to add data to an existing model 
+without changing the metamodel implementation.
+
+All these extenders are working together and provides, through the ModelAccessor instance, an unified model access layer.
+
+
+   Dynamic PLM is about being able to lock/unlock a given element and  being able to tell at any moment if this element has been modified or not, if it's a new element and so on.
+   
+   
+All these features requires a tight integration of the tooling (Modelers and editors) and the permission manager. 
+
+We can logically cut these aspects in a number of components in Viewpoint :
+
+# Core components considering
+  -  Semantic Model Access
+  -  ViewPoint Model Access
+# Editor components
+  -  GMF model access
+  -  Graphical Viewer access
+  -  Tool Access
+  -  Properties Access (Semantic, Extension, Style and Graphical Properties)
+ 
+Semantic Access
+---------------
+ 
+ Every semantic access of model elements is done through the "ModelAccessor". This accessor is the common facade of the Ecore intrinsic data access and 
+ of any kind of extended data access. It also handle the inter-weaving of the elements provided by both the Ecore semantic model and the annotations.
+ 
+ Having the permission to set/unset a value or to create an instance of the semantic model is then done in this class and a permission authority coupled with this class may then be used 
+ to ask for permission or notify a change or instance creation.
+ 
+ 
+ViewPoint Model Access
+----------------------
+ 
+ Every access made to the viewpoint model is manually checking whether it has rights or not to create/delete/update an element. That means every possible creation or setting of a value manually request the permission at first.
+ 
+GMF Model Access
+----------------
+GMF model should be understood as the Annotation model used by GMF to keep track of the diagram data. It is composed of "Node" and "Edge" and positions for instance.
+The GMF model is automatically updated trough the CannonicalEditPolicy of every edit part in the diagram editor. 
+We pretty much have no control on that but we can tell an edit part its "edit mode" is enabled or not. If the edit mode is disabled then nothing *should* lead to a change in the GMF model.    
+
+We make sure that if a "ViewPoint" can't be edited, then at the diagram opening GMF won't bypass any EditPart to refresh the annotation model.
+
+Graphical Viewer access
+-----------------------
+Mouse or keyboard editing is prevented thanks to the disable/enable edit mode in the GMF edit parts and specific code in the properties.
+
+Tool Access
+-----------
+Every tool in the modeler palette is able to cause the a change in the model. As every command launched re-use the ModelAccessor it won't really change something in the model, 
+but as  we don't want the tool to be enabled on a locked element, then the EMFCommandFactory ask for permission too, and if no permission is given, will return an UnexecutableCommand.
+
+Properties Access
+-----------------
+Properties will ask for permission on a "per instance" basis right now, if it is not given, no CellEditor will be returned meaning the feature won't be editable.
+
+Notifying the changes
+----------------------
+The Permission authority should be notified on new instance creation and on changes of the instances. To do so the PermissionAuthority initialization will install a listener on the given ResourceSet and will automatically notify it-self when a change appears.
+This system will also help in checking that some unauthorized changes are not done.   
+In *strict* mode the permission authority will throw Exceptions when a change is made to a locked element. Then if the process was in a transactional environment, then a rollback will happen.
+
+Access errors
+-------------
+Current implementation provides 2 modes of usage of the ModelAccessor. The "silent" mode won't complain about an invalid access on a locked element, it will just ignore it.
+If the current model accessor is not in silent mode then an Exception will be thrown in these cases. 
+
+Status
+------
+
+Semantic Model accesses are handled through the command or properties. Extended information too.
+Notification are handled through the usual EMF notifiers  + the notification of instance creation in the Model Accessor.
+
+EditParts are disabled when the corresponding semantic element is locked. Permission listeners are setup to handle dynamic locking/unlocking.
diff --git a/doc/6.0.x/developer/representations_lazy_loading.html b/doc/6.0.x/developer/representations_lazy_loading.html
new file mode 100644
index 0000000..62d6d6a
--- /dev/null
+++ b/doc/6.0.x/developer/representations_lazy_loading.html
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>representations_lazy_loading</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusRepresentationslazyloadingexperimental">Sirius &#8211; Representations lazy loading (experimental)</h1>
+		<h2 id="Overview">Overview</h2>
+		<p>An experimental mode allows to have the representation lazy loading. This mode is available with the system property 
+			<code>createLocalRepresentationInSeparateResource=true</code>.
+		</p>
+		<p>There is two main changes to keep in mind with this mode:</p>
+		<ul>
+			<li>The representations are (by default) serialized in separate *.srm files in a .representation folder. This folder is created at the same location than the *.aird file.</li>
+			<li>The representations are loaded on demand. That means the session opening does not load the representations. They will be loaded as soon as Sirius needs it to perform the functionality. For example: open an editor, copy, rename or delete a representation, export a diagram as image etc. From a developer point of view, the representation is loaded when 
+				<code>DRepresentationDescriptor.getRepresentation()</code> is called.
+			</li>
+		</ul>
+		<h2 id="Impacts">Impacts</h2>
+		<p>The Sirius API used to retrieve 
+			<code>DRepresentation</code>, such as the 
+			<code>DialectManager</code>, keep the same behavior: the representation will be loaded where necessary. New API (see the release note for more details) has been added to retrieve only loaded representations.
+		</p>
+		<p>
+			<strong>Warning</strong>, if some of your features depend on the Sirius crossReferencer, it may not return the same result than before. It works on the scope of only what is loaded in the session. Before, all the models was loaded whereas now some representations will not be. 
+			<code>ECrossReferenceAdapter.getInverseReferences(EObject )</code> or 
+			<code>ECrossReferenceAdapter.getInverseReferences(EObject , boolean)</code> will not provide potential inverse references that would be in not loaded representation. The typical case is getting DRepresentationElement referencing a semantic element as DSemanticDecorator.target.
+		</p>
+		<h2 id="Overridetherepresentationlocationrule.">Override the representation location rule.</h2>
+		<p>By default Sirius creates an *.srm file per representation. Developer may need to override this rule by choosing to add one or several representations in a specific resource.</p>
+		<h3 id="TheDRepresentationLocationRuleinterface">The 
+			<code>DRepresentationLocationRule</code> interface
+		</h3>
+		<ul>
+			<li>
+				<code>boolean providesURI(DRepresentation representation, Resource dViewResource)</code>: Indicates if this 
+				<code>DRepresentationLocationRule</code> provides a custom URI for this kind of representation and the resource that holds the 
+				<code>DView</code>. If not and if there is no other 
+				<code>DRepresentationLocationRule</code> that provides, Sirius fall back to the default implementation.
+			</li>
+		</ul>
+		<ul>
+			<li>
+				<code>URI getResourceURI(DRepresentation representation, Resource dViewResource)</code>: Provides the new URI for the given representation.
+			</li>
+		</ul>
+		<ul>
+			<li>
+				<code>Boolean isARepresentationResource(String fileExtension)</code>: Indicates if the given file extension is considered as a representation file. This extension point allows to define its own extension to hold representations. The developer still needs to register the Resource Factory to 
+				<code>org.eclipse.emf.ecore.extension_parser</code> extension point.
+			</li>
+		</ul>
+		<h3 id="ProvideyourDRepresentationLocationRuleusingtheorg.eclipse.sirius.dRepresentationLocationRuleextensionpoint">Provide your 
+			<code>DRepresentationLocationRule</code> using the 
+			<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point
+		</h3>
+		<p>Please refer to this extension point documentation for more details.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/developer/siriusCrossReferenceAdapter.html b/doc/6.0.x/developer/siriusCrossReferenceAdapter.html
new file mode 100644
index 0000000..2878977
--- /dev/null
+++ b/doc/6.0.x/developer/siriusCrossReferenceAdapter.html
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>siriusCrossReferenceAdapter</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusCrossReferenceAdapter">SiriusCrossReferenceAdapter</h1>
+		<p>The 
+			<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapter</code> interface is designed to disable the proxy resolution of the InverseCrossReferencer.
+		</p>
+		<p>This capability is typically used to prevent loading a resource during its unloading.</p>
+		<p>Furthermore, it is not recommended to add other ECrossReferenceAdapter additionally to those created by Sirius. Note that you can get the semantic CrossReferencer with 
+			<code>org.eclipse.sirius.business.api.session.Session.getSemanticCrossReferencer()</code>.
+		</p>
+		<p>However, in the case where an additional custom ECrossReferenceAdapter is needed, it should extend 
+			<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl</code> or at least implement 
+			<code>SiriusCrossReferenceAdapter</code> with the same implementation as 
+			<code>SiriusCrossReferenceAdapterImpl</code>.
+			<br/>Otherwise, there is no guarantee that load during unload won&#8217;t come up.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/i18n_changes.html b/doc/6.0.x/i18n_changes.html
new file mode 100644
index 0000000..1edd5d5
--- /dev/null
+++ b/doc/6.0.x/i18n_changes.html
@@ -0,0 +1,828 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>i18n_changes</title>
+		<link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="TranslationKeysChanges">Translation Keys Changes</h1>
+		<p>This document lists the changes in 
+			<code>TranslatableMessage</code> used for Sirius internationalization in each Sirius version.
+		</p>
+		<h2 id="sirius60">Translation Keys Changes in Sirius 6.0 (from Sirius 5.1)</h2>
+		<h3 id="MessageKeysAdded">Message Keys Added</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_sizeGroupLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.GenericConnectionCreationTool_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.InsertBlankSpace_cmdName</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LayoutAlgorithmProviderRegistry_badClassType</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LayoutAlgorithmProviderRegistry_classInitialization</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SetShowingModeCommandAndUpdateActionImage_activateLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SetShowingModeCommandAndUpdateActionImage_deactivateLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_activate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_deactivate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_statusOn</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_expressionMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_expressionTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_expressionTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_sameETypeMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_sameETypeTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StandardDiagramServices_sameETypeTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.NoteAttachmentWithoutSourceOrTargetMigrationParticipant_edgesRemoved</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.NoteAttachmentWithoutSourceOrTargetMigrationParticipant_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.UndoRedoCapableEMFCommandFactory_insertHorizontalBlankSpaceNotImplemented</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.UndoRedoCapableEMFCommandFactory_insertVerticalBlankSpaceNotImplemented</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.workflow.internal.Messages.WorkflowMenuBuilder_NewWorkflow_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.workflow.internal.Messages.WorkflowMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.AddOptionOverridePropertySection_dialogTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.AddOptionOverridePropertySection_overrideButtonLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.CustomSiriusEditor_failedNavigationExceptionMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.CustomSiriusEditor_failedNavigationMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.CustomSiriusEditor_failedNavigationTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.LayoutOptionValue_defaultLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_filteringLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_optionDefaultValueColumnLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_optionDescriptionLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_optionNameColumnLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_optionTypeColumnLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.OptionOverrideEditorDialog_tableLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.ServiceNavigator_serviceNavigationDialog_description</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.ServiceNavigator_serviceNavigationDialog_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.ServiceNavigator_targetInitialization_error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ext.ide.internal.Messages.DescriptorRegistryEventListener_cannotInstantiateExtension</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ext.ide.internal.Messages.DescriptorRegistryEventListener_extensionAlreadyContributed</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ext.ide.internal.Messages.DescriptorRegistryEventListener_missingAttribute</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.server.internal.Messages.SiriusServerManager_cannotStartServer</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.server.internal.Messages.SiriusServerManager_cannotStopServer</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractExportRepresentationsAsImagesDialog_scalingLevelDiagramLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ExportAction_invalidLevel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ExportAsImage_dialogSizeGroupName</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ExportAsImage_maxLevelLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ExportAsImage_nominalLevelLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ExportAsImage_sizeTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.No_Browser_Error_Message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.OpenViewpointSelectionBrowser_Error_Message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SingleRepresentationTreeSelectionDialog_Title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.workflow.ui.page.Messages.WorkflowPage_header_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.workflow.ui.page.Messages.WorkflowPage_tab_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.InvalidModelingProjectMarkerUpdaterJob_updateMarkers</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_addAnotherRepresentationFile</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_addAnotherRepresentationFileSeveralProjects</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_mainRepresentationFileDeleted</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_mainRepresentationFilesOfSomeProjectsDeleted</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_satusUnsaveDataWillBeLostWithProjectNames</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_satusUnsavedDataWillBeLost</code>
+			</li>
+		</ul>
+		<h3 id="MessageKeysRemoved">Message Keys Removed</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_scaleDiagramOnExport</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractExportRepresentationsAsImagesDialog_autoScaleDiagram</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.InvalidModelingProjectMarkerUpdaterJob_updateMarkers</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_addAnotherRepresentationFile</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_addAnotherRepresentationFileSeveralProjects</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_mainRepresentationFileDeleted</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_mainRepresentationFilesOfSomeProjectsDeleted</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_satusUnsaveDataWillBeLostWithProjectNames</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ModelingModelProvider_satusUnsavedDataWillBeLost</code>
+			</li>
+		</ul>
+		<h2 id="sirius51">Translation Keys Changes in Sirius 5.1 (from Sirius 5.0)</h2>
+		<h3 id="MessageKeysAdded2">Message Keys Added</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.diagram.sequence.Messages.Range_wrongArgument</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.BundledImageShape_attributeAbsent</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_scaleDiagramOnExport</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_showSynchronizeStatusDecoratorLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.RepairGMFbendpointsMigrationParticipant_edgesModified</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.RepairGMFbendpointsMigrationParticipant_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SiriusStatusLineContributionItemProvider_diagramSynchronized</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SiriusStatusLineContributionItemProvider_diagramUnsynchronized</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SnapBackDistantLabelsMigrationParticipant_nodesMoved</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SnapBackDistantLabelsMigrationParticipant_oneLabelSnapBacked</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SnapBackDistantLabelsMigrationParticipant_severalLabelsSnapBacked</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SnapBackDistantLabelsMigrationParticipant_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_BottomSidePinnedLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_BottomSidePinnedTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_LeftSidePinnedLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_LeftSidePinnedTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_RightSidePinnedLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_RightSidePinnedTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_TopSidePinnedLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.StraightenToAction_TopSidePinnedTooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SynchronizeStatusFigure_diagSynchronized</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SynchronizeStatusFigure_diagUnsynchronized</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.DefaultSessionEditorPage_closeSession_action_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.DefaultSessionEditorPage_closeSession_action_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalSemanticModelsHandler_addModelButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalSemanticModelsHandler_newModelButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalSemanticModelsHandler_removeModelButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.PluginPageProviderRegistry_badClassType</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.PluginPageProviderRegistry_classInitialization</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.SessionEditor_PageActivation_Failure</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.SessionEditor_PageCommand_Integrity_Error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractExportRepresentationsAsImagesDialog_autoScaleDiagram</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractSWTCallback_DeleteRepresentationAction_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractSWTCallback_DeleteRepresentationAction_message_plural</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractSWTCallback_DeleteRepresentationAction_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractSWTCallback_DeleteRepresentationAction_title_plural</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_disableViewpointButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_enableViewpointButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_newRepresentationButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_removeRepresentationButton_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.RemoveSemanticResourceAction_Active_Representation_Message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.RemoveSemanticResourceAction_Controlled_Resources_Message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.RemoveSemanticResourceAction_Error_Removal_Title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.RemoveSemanticResourceAction_Not_External_Dependency_Message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.UpdateRepresentationsLocationHandler_errorMsg</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.UpdateRepresentationsLocationHandler_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.DRepresentationDescriptorToDRepresentationLinkManager_repLoading</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.ModelOperationToTask_cannotCreateTaskWarningMsg</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.SessionFactoryImpl_ResourceTypeErrorMsg</code>
+			</li>
+		</ul>
+		<h3 id="MessageKeysRemoved2">Message Keys Removed</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.DeleteRepresentationAction_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.DeleteRepresentationAction_message_plural</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.DeleteRepresentationAction_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.DeleteRepresentationAction_title_plural</code>
+			</li>
+		</ul>
+		<h2 id="sirius50">Translation Keys Changes in Sirius 5.0 (from Sirius 4.1)</h2>
+		<h3 id="MessageKeysAdded3">Message Keys Added</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.common.acceleo.aql.business.Messages.AQLInterpreter_errorWithExpression</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramAppearancePreferencePage_authorizeOverlapGroupText</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramAppearancePreferencePage_decorationGroupText</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramPrintingPreferencePage_optionsGroupText</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramPrintingPreferencePage_printDecorations</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SiriusDiagramGraphicalViewer_tooltipDisplayDelay</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ecore.extender.business.internal.Messages.PermissionService_permissionProviderInstantiationError</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.ext.widgets.reference.internal.Messages.DefaultReferenceDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.ext.widgets.reference.internal.Messages.DefaultReferenceDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.CategoryMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.ConditionalStyleMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.ContainerMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.CreateWidgetForAllFeaturesCommand_text</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.CreateWidgetFromDomainClassMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.CustomExpressionMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.CustomOperationMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultBooleanDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultBooleanDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultEnumerationDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultEnumerationDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMonolineTextDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMonolineTextDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMultilineTextDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMultilineTextDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMultivaluedEAttributeDescriptionFactory_name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DefaultMultivaluedEAttributeDescriptionFactory_widgetLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DialogButtonMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.DynamicMappingMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.GroupMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.LayoutMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.OverridesMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.PageMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.PropertiesMenuBuilder_ExtendPropertiesView_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.PropertiesMenuBuilder_ImportPropertiesView_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.PropertiesMenuBuilder_NewPropertiesView_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.PropertiesMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.StyleMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.ToolbarActionMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.ValidationMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.WidgetActionMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.internal.Messages.WidgetMenuBuilder_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.core.internal.Messages.AbstractDescriptionConverter_noConverterFound</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.core.internal.Messages.IDescriptionConverter_InvalidDescriptionType</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.core.internal.Messages.SiriusToolServices_MainTabLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.defaultrules.internal.Messages.DefaultRulesProvider_DefaultPropertiesNotFound</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.provider.Messages.Category__name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.provider.Messages.GridLayoutDescription__label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.provider.Messages.GroupDescription__name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.provider.Messages.PageDescription__name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.properties.provider.Messages.ViewExtensionDescription__name</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Refresh_cancelled</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Refresh_error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Refresh_errorDuringRefresh</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Table_LineElement</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Table_TableElement</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.tools.internal.Messages.TableToolVariables_LineElement</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.tools.internal.Messages.TableToolVariables_TableElement</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefresh_error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefresh_refreshCancelled</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefresh_treeRefreshError</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.SiriusTreePreferencePage_alwaysUseStandardFont</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.SiriusTreePreferencePage_alwaysUseStandardFont_help</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.SiriusTreePreferencePage_globalGroupName</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.DefaultSessionEditorPage_collapseAllAction_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.DefaultSessionEditorPage_selectFilterAction_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalRepresentationHandler_disabledViewpoint_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalRepresentationHandler_missingDependencies_requirements</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.GraphicalRepresentationHandler_representationNumber_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_default_page_tab_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_header_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_inputNotHandled_error_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_models_button_newSemanticModel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_models_button_removeSemanticModel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_models_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_new_semantic_model_action_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_page_loading_error_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_representation_button_newRepresentation</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_representation_button_removeRepresentation</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_representation_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_session_loading_error_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_session_loading_task_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.editor.Messages.UI_SessionEditor_viewpoints_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.DialogTask_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.WizardTask_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.preferences.Messages.SiriusPropertiesPreferencePage_maxLengthTabName_invalidInteger</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.preferences.Messages.SiriusPropertiesPreferencePage_maxLengthTabName_invalidValue</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.AbstractExportRepresentationsAsImagesDialog_decorationExport</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.CreateEMFModelWizard_errorInstantiateRootElement</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.CreateEMFModelWizard_modelNamePrefix</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.CreateEMFModelWizard_windowTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.DynamicViewpointsSelectionComponent_missingDependencies_requirements</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_CreateRepresentationWizard_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_activateDeactivateViewpoint_incorrectSelection_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_activateDeactivateViewpoint_incorrectSelection_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_activateViewpoint</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_deactivateViewpoint</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_newRepresentation</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_button_removeRepresentation</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_checkBoxGroupByRepresentationDescription_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_checkBoxGroupByViewpoint_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_disabledViewpoint_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_missingDependencies_requirements</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.GraphicalRepresentationHandler_representationNumber_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.NameAndLocationWizardPage_description</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.NameAndLocationWizardPage_errorMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.NameAndLocationWizardPage_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.OtherRepresentationAction_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.OtherRepresentationAction_noRepresentation_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.OtherRepresentationAction_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectEMFMetamodelWizardPage_description</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectEMFMetamodelWizardPage_documentationLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectEMFMetamodelWizardPage_metamodelLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectEMFMetamodelWizardPage_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectRootElementWizardPage_checkboxLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectRootElementWizardPage_description</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectRootElementWizardPage_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SelectRootElementWizardPage_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusPreferencePage_autoSessionEditorOpening</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusPreferencePage_sessionEditorGroup</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusRepresentationWithInactiveStatusLabelProvider_representationDescriptionItem_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusRepresentationWithInactiveStatusLabelProvider_viewpointItem_tooltip</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_confirmDependencyActivation_activateLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_confirmDependencyActivation_deactivateLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_confirmDependencyActivation_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_confirmDependencyActivation_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_missingDependency_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.ViewpointSelectionCallbackWithConfimationAndDependenciesHandling_missingDependency_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.AbstractResourceStrategyImpl_methodReleaseNotHandleMsg</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.LetTask_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.SessionInterpreter_evaluationError</code>
+			</li>
+		</ul>
+		<h3 id="MessageKeysRemoved3">Message Keys Removed</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.editor.properties.Messages.ImportingDefaultPropertiesViewDescriptionCommand_text</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Action_cancelled</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.Action_error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.table.metamodel.table.provider.Messages.RefreshAction_errorDuringRefresh</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefreshAction_error</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefreshAction_refreshCancelled</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.tree.ui.provider.Messages.EditorRefreshAction_treeRefreshError</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.AbstractDescriptionConverter_noConverterFound</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.IDescriptionConverter_InvalidDescriptionType</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.SiriusTabDescriptorProvider_DefaultPropertiesNotFound</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.internal.Messages.SiriusToolServices_MainTabLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusCommonLabelProvider_eClassDisabled</code>
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/images/1 - Initializing EEF models.png b/doc/6.0.x/images/1 - Initializing EEF models.png
new file mode 100644
index 0000000..3a0bec4
--- /dev/null
+++ b/doc/6.0.x/images/1 - Initializing EEF models.png
Binary files differ
diff --git a/doc/6.0.x/images/2 - VP Contributor ID.png b/doc/6.0.x/images/2 - VP Contributor ID.png
new file mode 100644
index 0000000..3eb87f5
--- /dev/null
+++ b/doc/6.0.x/images/2 - VP Contributor ID.png
Binary files differ
diff --git a/doc/6.0.x/images/2-1 - Leaf Components.png b/doc/6.0.x/images/2-1 - Leaf Components.png
new file mode 100644
index 0000000..ff1689e
--- /dev/null
+++ b/doc/6.0.x/images/2-1 - Leaf Components.png
Binary files differ
diff --git a/doc/6.0.x/images/3 - EEF runtime dependency.png b/doc/6.0.x/images/3 - EEF runtime dependency.png
new file mode 100644
index 0000000..7c947f0
--- /dev/null
+++ b/doc/6.0.x/images/3 - EEF runtime dependency.png
Binary files differ
diff --git a/doc/6.0.x/images/4 - Copying EEF extensions.png b/doc/6.0.x/images/4 - Copying EEF extensions.png
new file mode 100644
index 0000000..3a5e1b8
--- /dev/null
+++ b/doc/6.0.x/images/4 - Copying EEF extensions.png
Binary files differ
diff --git a/doc/6.0.x/images/5 - Properties view testing.png b/doc/6.0.x/images/5 - Properties view testing.png
new file mode 100644
index 0000000..e209cbe
--- /dev/null
+++ b/doc/6.0.x/images/5 - Properties view testing.png
Binary files differ
diff --git a/doc/6.0.x/images/6 - Property sheet on top.png b/doc/6.0.x/images/6 - Property sheet on top.png
new file mode 100644
index 0000000..c85b06a
--- /dev/null
+++ b/doc/6.0.x/images/6 - Property sheet on top.png
Binary files differ
diff --git a/doc/6.0.x/images/7 - Multiple tabs.png b/doc/6.0.x/images/7 - Multiple tabs.png
new file mode 100644
index 0000000..eff7990
--- /dev/null
+++ b/doc/6.0.x/images/7 - Multiple tabs.png
Binary files differ
diff --git a/doc/6.0.x/images/8 - Double click descriptor.png b/doc/6.0.x/images/8 - Double click descriptor.png
new file mode 100644
index 0000000..98e6d2d
--- /dev/null
+++ b/doc/6.0.x/images/8 - Double click descriptor.png
Binary files differ
diff --git a/doc/6.0.x/images/9 - EEF Wizard on VP.png b/doc/6.0.x/images/9 - EEF Wizard on VP.png
new file mode 100644
index 0000000..d774c4d
--- /dev/null
+++ b/doc/6.0.x/images/9 - EEF Wizard on VP.png
Binary files differ
diff --git a/doc/6.0.x/images/ApplyAppearanceProperties.png b/doc/6.0.x/images/ApplyAppearanceProperties.png
new file mode 100644
index 0000000..5f935dd
--- /dev/null
+++ b/doc/6.0.x/images/ApplyAppearanceProperties.png
Binary files differ
diff --git a/doc/6.0.x/images/PreferencePageMaxTabName.png b/doc/6.0.x/images/PreferencePageMaxTabName.png
new file mode 100644
index 0000000..c7efb06
--- /dev/null
+++ b/doc/6.0.x/images/PreferencePageMaxTabName.png
Binary files differ
diff --git a/doc/6.0.x/images/borderNodesWithSnapToGrid.png b/doc/6.0.x/images/borderNodesWithSnapToGrid.png
new file mode 100644
index 0000000..b7a82f2
--- /dev/null
+++ b/doc/6.0.x/images/borderNodesWithSnapToGrid.png
Binary files differ
diff --git a/doc/6.0.x/images/color_palette.png b/doc/6.0.x/images/color_palette.png
new file mode 100644
index 0000000..f6691c3
--- /dev/null
+++ b/doc/6.0.x/images/color_palette.png
Binary files differ
diff --git a/doc/6.0.x/images/compartments_collapse.png b/doc/6.0.x/images/compartments_collapse.png
new file mode 100644
index 0000000..9422f0a
--- /dev/null
+++ b/doc/6.0.x/images/compartments_collapse.png
Binary files differ
diff --git a/doc/6.0.x/images/compartments_collapse2.png b/doc/6.0.x/images/compartments_collapse2.png
new file mode 100644
index 0000000..e3dce1b
--- /dev/null
+++ b/doc/6.0.x/images/compartments_collapse2.png
Binary files differ
diff --git a/doc/6.0.x/images/containerResize-changedBehavior.gif b/doc/6.0.x/images/containerResize-changedBehavior.gif
new file mode 100644
index 0000000..c422d9f
--- /dev/null
+++ b/doc/6.0.x/images/containerResize-changedBehavior.gif
Binary files differ
diff --git a/doc/6.0.x/images/edgeLabelMoveAfterSirius3.1.gif b/doc/6.0.x/images/edgeLabelMoveAfterSirius3.1.gif
new file mode 100644
index 0000000..cf14fa7
--- /dev/null
+++ b/doc/6.0.x/images/edgeLabelMoveAfterSirius3.1.gif
Binary files differ
diff --git a/doc/6.0.x/images/edgeLabelMoveBeforeSirius3.1.gif b/doc/6.0.x/images/edgeLabelMoveBeforeSirius3.1.gif
new file mode 100644
index 0000000..1484a84
--- /dev/null
+++ b/doc/6.0.x/images/edgeLabelMoveBeforeSirius3.1.gif
Binary files differ
diff --git a/doc/6.0.x/images/genericEdgeCreationTool.png b/doc/6.0.x/images/genericEdgeCreationTool.png
new file mode 100644
index 0000000..f750891
--- /dev/null
+++ b/doc/6.0.x/images/genericEdgeCreationTool.png
Binary files differ
diff --git a/doc/6.0.x/images/improvedsiriusinterpreter.png b/doc/6.0.x/images/improvedsiriusinterpreter.png
new file mode 100644
index 0000000..601e629
--- /dev/null
+++ b/doc/6.0.x/images/improvedsiriusinterpreter.png
Binary files differ
diff --git a/doc/6.0.x/images/improvedsiriusinterpreter_thumbnail.png b/doc/6.0.x/images/improvedsiriusinterpreter_thumbnail.png
new file mode 100644
index 0000000..fc844ad
--- /dev/null
+++ b/doc/6.0.x/images/improvedsiriusinterpreter_thumbnail.png
Binary files differ
diff --git a/doc/6.0.x/images/moveNode-edgeImpact-changedBehavior.gif b/doc/6.0.x/images/moveNode-edgeImpact-changedBehavior.gif
new file mode 100644
index 0000000..9b7892e
--- /dev/null
+++ b/doc/6.0.x/images/moveNode-edgeImpact-changedBehavior.gif
Binary files differ
diff --git a/doc/6.0.x/images/representationNameWizardChange.png b/doc/6.0.x/images/representationNameWizardChange.png
new file mode 100644
index 0000000..41e85f6
--- /dev/null
+++ b/doc/6.0.x/images/representationNameWizardChange.png
Binary files differ
diff --git a/doc/6.0.x/images/shapeResize1.png b/doc/6.0.x/images/shapeResize1.png
new file mode 100644
index 0000000..e5e6481
--- /dev/null
+++ b/doc/6.0.x/images/shapeResize1.png
Binary files differ
diff --git a/doc/6.0.x/images/shapeResize2.png b/doc/6.0.x/images/shapeResize2.png
new file mode 100644
index 0000000..4368dd4
--- /dev/null
+++ b/doc/6.0.x/images/shapeResize2.png
Binary files differ
diff --git a/doc/6.0.x/images/shapeResize3.png b/doc/6.0.x/images/shapeResize3.png
new file mode 100644
index 0000000..3e3c0bc
--- /dev/null
+++ b/doc/6.0.x/images/shapeResize3.png
Binary files differ
diff --git a/doc/6.0.x/index.html b/doc/6.0.x/index.html
new file mode 100644
index 0000000..5dd5843
--- /dev/null
+++ b/doc/6.0.x/index.html
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <title>Eclipse Sirius Documentation</title>
+    <link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+    <link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+  </head>
+  <body>
+
+    <div id="header">
+      <a href="http://www.eclipse.org/sirius/" target="_blank"><div id="logo" class="left"></div></a>
+
+      <div class="visit right">
+	<a class="right" href="http://www.eclipse.org/sirius/" target="_blank">eclipse.org/sirius</a>
+      </div>
+    </div>
+
+    <div class="clear"></div>
+
+    <div class="description">
+      <p>Sirius is an Eclipse project which allows you to easily create your own graphical modeling workbench by leveraging the Eclipse Modeling technologies, including EMF and GMF.</p>
+      <p>It provides a generic workbench for model-based architecture engineering that could be easily tailored to fit specific needs.</p>
+      <p>Based on a viewpoint approach, Sirius makes it possible to equip teams who have to deal with complex architectures on specific domains.</p>
+    </div>
+
+    <div class="col1 left">
+      <h3 id="SiriusDocumentation">Contents</h3>
+      <ul>
+	<li class="borderlist">
+	  <a href="Release_Notes.html">Release Notes</a>: see what's new in each release of Sirius.
+	</li>
+	<li>
+	  <a href="user/Sirius%20User%20Manual.html">Sirius User Manual</a>: learn how to use Sirius-based modelers.
+	  <ul>
+	    <li>
+	      <a href="user/general/Modeling%20Project.html">Modeling Project</a>
+	    </li>
+        <li>
+          <a href="user/general/Aird_Editor.html">Aird Editor</a>
+        </li>
+	    <li>
+	      <a href="user/diagrams/Diagrams.html">Diagrams</a>
+	    </li>
+	    <li>
+	      <a href="user/sequences/Sequence%20Diagrams.html">Sequence Diagrams</a>
+	    </li>
+	    <li>
+	      <a href="user/tables/Tables.html">Tables</a>
+	    </li>
+	    <li>
+	      <a href="user/trees/Trees.html">Trees</a>
+	    </li>
+        <li>
+          <a href="user/properties/Properties%20View.html">Properties Views</a>
+        </li>
+	  </ul>
+	</li>
+	<li>
+	  <a href="specifier/Sirius%20Specifier%20Manual.html">Sirius Specifier Manual</a>: learn how to create your own modelers using Sirius. 
+	  <ul>
+	    <li>
+	      <a href="specifier/general/Specifying_Viewpoints.html">Specifying Viewpoints</a>
+	    </li>
+	    <li>
+	      <a href="specifier/diagrams/Diagrams.html">Diagrams</a>
+	    </li>
+	    <li>
+	      <a href="specifier/sequences/Sequence%20Diagrams.html">Sequence Diagrams</a>
+	    </li>
+	    <li>
+	      <a href="specifier/tables/Tables.html">Tables</a>
+	    </li>
+	    <li>
+	      <a href="specifier/trees/Trees.html">Trees</a>
+	    </li>
+        <li>
+          <a href="specifier/properties/Properties_View_Description.html">Properties View</a>
+        </li>
+	    <li>
+	      <a href="specifier/general/Model_Operations.html">Model Operations</a>
+	    </li>
+	    <li>
+	      <a href="specifier/general/ToolsSpecification.html">Tools Specification</a>
+	    </li>
+	    <li>
+	      <a href="specifier/general/Colors.html">Defining Color Palettes</a>
+	    </li>
+	    <li>
+	      <a href="specifier/general/Writing_Queries.html">Writing Queries</a>
+	    </li>
+	  </ul>
+	</li>
+	<li>
+	  <a href="developer/Sirius%20Developer%20Manual.html">Sirius Developer Manual</a>: learn how to extend Sirius and leverage its APIs 
+	</li>
+	<li>
+	  <a href="http://www.obeodesigner.com/best-practices" target="_blank">Best Practices</a>
+	</li>
+	<li>
+	  <a href="Glossary.html">Glossary</a> of terms. 
+	</li>
+      </ul>
+    </div>
+
+    <div class="col2 right">
+      <img src="resources/images/screenshot.png" alt="The easiest way to get your own modeling tool" />  
+    </div>
+
+    <div class="clear"></div>
+    <p><em>Note:</em> This documentation refers to the latest major release of Sirius, version 6.0. For documentation corresponding to previous releases, see <a href="5.1.x/index.html">5.1.x</a>, <a href="5.0.x/index.html">5.0.x</a>, <a href="4.1.x/index.html">4.1.x</a>, <a href="4.0.x/index.html">4.0.x</a>, <a href="3.1.x/index.html">3.1.x</a>, see <a href="3.0.x/index.html">3.0.x</a>, <a href="2.0.x/index.html">2.0.x</a>, <a href="1.0.x/index.html">1.0.x</a>, or <a href="0.9/index.html">0.9</a>.</p>
+    <div class="clear"></div>
+    <p>For further information, please visit our website at <a href="http://www.eclipse.org/sirius/" target="_blank">www.eclipse.org/sirius</a>.</p>
+  </body>
+</html>
diff --git a/doc/6.0.x/release_notes_vp.html b/doc/6.0.x/release_notes_vp.html
new file mode 100644
index 0000000..7938a61
--- /dev/null
+++ b/doc/6.0.x/release_notes_vp.html
@@ -0,0 +1,150 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>release_notes_vp</title>
+		<link type="text/css" rel="stylesheet" href="resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ReleaseNotesforViewpoint">Release Notes for Viewpoint</h1>
+		<h2 id="vp6.10">Viewpoint 6.10</h2>
+		<p>Viewpoint 6.10 contains no API or feature changes compared to Viewpoint 6.9.</p>
+		<h2 id="vp6.9">Viewpoint 6.9</h2>
+		<h3 id="ChangesVisibletoEndUsers">Changes Visible to End-Users</h3>
+		<ul>
+			<li>New notion for layers: Additional layers (formerly Optional layer) cannot be disabled by end-user if the specifier unchecked the &#8220;optional&#8221; option. In this case, the layers become mandatory. The end-user do not see the mandatory layers in the layer activation menu.</li>
+			<li>A new graphical wrapper have been provided to group huge hierarchy children in tree items. Several preferences allow to customize this feature in the viewpoint preference page.
+				<ul>
+					<li>We find this wrapper on the model explorer tree viewer and on viewpoint selection wizards that use a tree viewer.</li>
+					<li>On viewpoint selection wizards
+						<ul>
+							<li>if the wrapper is disabled, we expand all children like in previous releases of viewpoint.</li>
+							<li>if the wrapper is enabled and root items are not grouping items, we expand only the first level of children.</li>
+							<li>if the wrapper is enabled and root items are grouping items, we not expand children.</li>
+						</ul>
+					</li>
+					<li>For more graphical details about this feature, please refer to the 
+						<a href="user/general/Modeling%20Project.html#ModelExplorer">Modeling Project section</a> in the user documentation.
+					</li>
+				</ul>
+			</li>
+			<li>Until Viewpoint 6.2, the endÂ­-user had access to the Connections preference page (Viewpoint/Viewpoint Diagram/Connections). This page is provided by default by GMF but was unsuitable for Viewpoint use. Indeed, in Viewpoint the default routing style is defined in VSM. This preference page is available again. It has been adapted to Viewpoint (see 
+				<a href="user/diagrams/Diagrams.html#routingStylePref">
+					<em>Viewpoint User Manual/Diagrams/Features Overview/Style customizations/Customize edge routing style from preferences</em>
+				</a> for further details).
+			</li>
+		</ul>
+		<h3 id="ChangesVisibletoSpecifiers">Changes Visible to Specifiers</h3>
+		<ul>
+			<li>Optional Layer has been renamed to Additional Layer.</li>
+			<li>A new attribute &#8220;Optional&#8221; is available to specified whether the additional layer can be disabled or not by end-user.</li>
+			<li>A new checkbox about 
+				<code>fr.obeo.dsl.viewpoint.description.EStructuralFeatureCustomization.applyOnAll</code> under the 
+				<code>fr.obeo.dsl.viewpoint.description.EStructuralFeatureCustomization.appliedOn</code> property section has been added. When this checkbox will be checked the 
+				<code>fr.obeo.dsl.viewpoint.description.EStructuralFeatureCustomization.appliedOn</code> section will turn gray and disabled.
+			</li>
+			<li>The fields ViewpointURI and representationName on Diagram Extension Description can be a regular expression as well.</li>
+		</ul>
+		<h3 id="ChangesVisibletoDevelopers">Changes Visible to Developers</h3>
+		<ul>
+			<li>Changed APIs:
+				<ul>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.description.OptionalLayer</code> type has been renamed to 
+						<code>fr.obeo.dsl.viewpoint.description.AdditionalLayer</code>
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.description.DiagramDescription.optionalLayers</code> meta-model reference has been renamed to 
+						<code>fr.obeo.dsl.viewpoint.description.DiagramDescription.additionalLayers</code>
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.ui.tools.api.views.common.item.CommonItem.getSession()</code> is now refactored in 
+						<code>fr.obeo.dsl.viewpoint.ui.tools.api.views.common.item.CommonSessionItem</code>.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.ui.tools.api.views.common.item.CommonItem</code> is now moved in 
+						<code>fr.obeo.dsl.common.ui.tools.api.view.common.item.CommonItem</code>.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<ul>
+			<li>New APIs:
+				<ul>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.description.AdditionalLayer.optional:Boolean</code> meta-model attribute has been added.
+					</li>
+					<li>Four new preferences to customize the new tree item group wrapper.
+						<ol>
+							<li>
+								<code>PREF_GROUP_ENABLE</code>:Boolean (default=true)
+								<ul>
+									<li>has been added in 
+										<code>fr.obeo.dsl.common.tools.api.constant.CommonPreferencesConstants</code> to say the tree item group wrapper is enable.
+									</li>
+								</ul>
+							</li>
+							<li>
+								<code>PREF_GROUP_BY_CONTAINING_FEATURE</code>:Boolean (default=false) 
+								<ul>
+									<li>has been added in 
+										<code>fr.obeo.dsl.common.tools.api.constant.CommonPreferencesConstants</code> to say if the grouping strategy uses the containing feature instead of the basic hierarchy.
+									</li>
+									<li>This preference cannot be directly edited by the final user. A developer can override this default value, for example in its own AbstractUIPlugin implementation, in the start() method : ViewPointTransPlugin.getPlugin().getPreferenceStore().setValue(CommonPreferencesConstants.PREF_GROUP_BY_CONTAINING_FEATURE, true)</li>
+								</ul>
+							</li>
+							<li>
+								<code>PREF_GROUP_TRIGGER</code>:Integer (default=10000)
+								<ul>
+									<li>has been added in 
+										<code>fr.obeo.dsl.common.tools.api.constant.CommonPreferencesConstants</code> to define the size of children that triggers the group in sub block.
+									</li>
+								</ul>
+							</li>
+							<li>
+								<code>PREF_GROUP_SIZE</code>:Integer (default=100)
+								<ul>
+									<li>has been added in 
+										<code>fr.obeo.dsl.common.tools.api.constant.CommonPreferencesConstants</code> to define the size of elements contained in a group.
+									</li>
+								</ul>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<code>fr.obeo.dsl.common.ui.tools.api.navigator.GroupingContentProvider</code> a new content provider wrapper that delegates everything to the replaced content provider excepted if groups are expected.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.common.ui.tools.api.navigator.GroupingItem</code> a dedicated group tree item to provide an new ui render.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.ui.tools.api.views.common.item.CommonSessionItem</code> extends 
+						<code>fr.obeo.dsl.common.ui.tools.api.view.common.item.CommonItem</code> and provide getSession().
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.diagram.business.api.view.ViewpointGMFHelper.getGmfEdge(DDiagramElement, ECrossReferenceAdapter)</code> has been added in complementary of 
+						<code>getGmfEdge(DDiagramElement, Session)</code>. This method uses directly the parameter 
+						<code>ECrossReferenceAdapter</code> (instead of 
+						<code>Session.getSemanticCrossReferencer()</code>) to retrieve the GMF edge corresponding to the DDiagramElement.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.tools.api.preferences.ViewpointDiagramCorePreferences</code> has been added. This interface declares constants corresponding to default routing styles. These constants are set via the UI preference page of 
+						<code>fr.obeo.dsl.viewpoint.diagram</code> but declared here to allow access outside UI plug-in.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.description.EStructuralFeatureCustomization.applyOnAll:Boolean</code> meta-model attribute has been added.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.ui.tools.api.dialogs.AbstractExportRepresentationsAsImagesDialog.FILE_SEPARATOR_ALTERNATIVE</code> constant has been added. It defines the alternative character in 
+						<em>export diagram as image dialog</em> when file separators are found in the representation name.
+					</li>
+					<li>
+						<code>fr.obeo.dsl.viewpoint.business.api.migration.IMigrationParticipant.getNewFragment(String)</code> returns the new fragment if the corresponding reference has changed. This method is added in the migration framework to handle the rename of a reference. The abstract implementation, 
+						<code>fr.obeo.dsl.viewpoint.business.api.migration.AbstractMigrationParticipant</code>,  has also been changed.
+					</li>
+				</ul>
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/resources/bootstrap.css b/doc/6.0.x/resources/bootstrap.css
new file mode 100644
index 0000000..7d519a6
--- /dev/null
+++ b/doc/6.0.x/resources/bootstrap.css
@@ -0,0 +1,3363 @@
+/*!
+ * Bootstrap v2.0.0
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+audio, canvas, video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+}
+audio:not([controls]) {
+  display: none;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover, a:active {
+  outline: 0;
+}
+sub, sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  max-width: 100%;
+  height: auto;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button, input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner, input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  cursor: pointer;
+  -webkit-appearance: button;
+}
+input[type="search"] {
+  -webkit-appearance: textfield;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before, .row:after {
+  display: table;
+  content: "";
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  margin-left: 20px;
+}
+.span1 {
+  width: 60px;
+}
+.span2 {
+  width: 140px;
+}
+.span3 {
+  width: 220px;
+}
+.span4 {
+  width: 300px;
+}
+.span5 {
+  width: 380px;
+}
+.span6 {
+  width: 460px;
+}
+.span7 {
+  width: 540px;
+}
+.span8 {
+  width: 620px;
+}
+.span9 {
+  width: 700px;
+}
+.span10 {
+  width: 780px;
+}
+.span11 {
+  width: 860px;
+}
+.span12, .container {
+  width: 940px;
+}
+.offset1 {
+  margin-left: 100px;
+}
+.offset2 {
+  margin-left: 180px;
+}
+.offset3 {
+  margin-left: 260px;
+}
+.offset4 {
+  margin-left: 340px;
+}
+.offset5 {
+  margin-left: 420px;
+}
+.offset6 {
+  margin-left: 500px;
+}
+.offset7 {
+  margin-left: 580px;
+}
+.offset8 {
+  margin-left: 660px;
+}
+.offset9 {
+  margin-left: 740px;
+}
+.offset10 {
+  margin-left: 820px;
+}
+.offset11 {
+  margin-left: 900px;
+}
+.row-fluid {
+  width: 100%;
+  *zoom: 1;
+}
+.row-fluid:before, .row-fluid:after {
+  display: table;
+  content: "";
+}
+.row-fluid:after {
+  clear: both;
+}
+.row-fluid > [class*="span"] {
+  float: left;
+  margin-left: 2.127659574%;
+}
+.row-fluid > [class*="span"]:first-child {
+  margin-left: 0;
+}
+.row-fluid .span1 {
+  width: 6.382978723%;
+}
+.row-fluid .span2 {
+  width: 14.89361702%;
+}
+.row-fluid .span3 {
+  width: 23.404255317%;
+}
+.row-fluid .span4 {
+  width: 31.914893614%;
+}
+.row-fluid .span5 {
+  width: 40.425531911%;
+}
+.row-fluid .span6 {
+  width: 48.93617020799999%;
+}
+.row-fluid .span7 {
+  width: 57.446808505%;
+}
+.row-fluid .span8 {
+  width: 65.95744680199999%;
+}
+.row-fluid .span9 {
+  width: 74.468085099%;
+}
+.row-fluid .span10 {
+  width: 82.97872339599999%;
+}
+.row-fluid .span11 {
+  width: 91.489361693%;
+}
+.row-fluid .span12 {
+  width: 99.99999998999999%;
+}
+.container {
+  width: 940px;
+  margin-left: auto;
+  margin-right: auto;
+  *zoom: 1;
+}
+.container:before, .container:after {
+  display: table;
+  content: "";
+}
+.container:after {
+  clear: both;
+}
+.container-fluid {
+  padding-left: 20px;
+  padding-right: 20px;
+  *zoom: 1;
+}
+.container-fluid:before, .container-fluid:after {
+  display: table;
+  content: "";
+}
+.container-fluid:after {
+  clear: both;
+}
+p {
+  margin: 0 0 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+}
+p small {
+  font-size: 11px;
+  color: #999999;
+}
+.lead {
+  margin-bottom: 18px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 27px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 0;
+  font-weight: bold;
+  color: #333333;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  color: #999999;
+}
+h1 {
+  font-size: 30px;
+  line-height: 36px;
+}
+h1 small {
+  font-size: 18px;
+}
+h2 {
+  font-size: 24px;
+  line-height: 36px;
+}
+h2 small {
+  font-size: 18px;
+}
+h3 {
+  line-height: 27px;
+  font-size: 18px;
+}
+h3 small {
+  font-size: 14px;
+}
+h4, h5, h6 {
+  line-height: 18px;
+}
+h4 {
+  font-size: 14px;
+}
+h4 small {
+  font-size: 12px;
+}
+h5 {
+  font-size: 12px;
+}
+h6 {
+  font-size: 11px;
+  color: #999999;
+  text-transform: uppercase;
+}
+.page-header {
+  padding-bottom: 17px;
+  margin: 18px 0;
+  border-bottom: 1px solid #eeeeee;
+}
+.page-header h1 {
+  line-height: 1;
+}
+ul, ol {
+  padding: 0;
+  margin: 0 0 9px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+ul {
+  list-style: disc;
+}
+ol {
+  list-style: decimal;
+}
+li {
+  line-height: 18px;
+}
+ul.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+dl {
+  margin-bottom: 18px;
+}
+dt, dd {
+  line-height: 18px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 9px;
+}
+hr {
+  margin: 18px 0;
+  border: 0;
+  border-top: 1px solid #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+.muted {
+  color: #999999;
+}
+abbr {
+  font-size: 90%;
+  text-transform: uppercase;
+  border-bottom: 1px dotted #ddd;
+  cursor: help;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 18px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 22.5px;
+}
+blockquote small {
+  display: block;
+  line-height: 18px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-left: 0;
+  padding-right: 15px;
+  border-left: 0;
+  border-right: 5px solid #eeeeee;
+}
+blockquote.pull-right p, blockquote.pull-right small {
+  text-align: right;
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 18px;
+  line-height: 18px;
+  font-style: normal;
+}
+small {
+  font-size: 100%;
+}
+cite {
+  font-style: normal;
+}
+code, pre {
+  padding: 0 3px 2px;
+  font-family: Menlo, Monaco, "Courier New", monospace;
+  font-size: 12px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 3px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+}
+pre {
+  display: block;
+  padding: 8.5px;
+  margin: 0 0 9px;
+  font-size: 12px;
+  line-height: 18px;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  white-space: pre;
+  white-space: pre-wrap;
+  word-break: break-all;
+}
+pre.prettyprint {
+  margin-bottom: 18px;
+}
+pre code {
+  padding: 0;
+  background-color: transparent;
+}
+form {
+  margin: 0 0 18px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 27px;
+  font-size: 19.5px;
+  line-height: 36px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #eee;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 18px;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+  color: #333333;
+}
+input,
+textarea,
+select,
+.uneditable-input {
+  display: inline-block;
+  width: 210px;
+  height: 18px;
+  padding: 4px;
+  margin-bottom: 9px;
+  font-size: 13px;
+  line-height: 18px;
+  color: #555555;
+  border: 1px solid #ccc;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+label input, label textarea, label select {
+  display: block;
+}
+input[type="image"], input[type="checkbox"], input[type="radio"] {
+  width: auto;
+  height: auto;
+  padding: 0;
+  margin: 3px 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  line-height: normal;
+  border: 0;
+  cursor: pointer;
+  border-radius: 0 \0/;
+}
+input[type="file"] {
+  padding: initial;
+  line-height: initial;
+  border: initial;
+  background-color: #ffffff;
+  background-color: initial;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+input[type="button"], input[type="reset"], input[type="submit"] {
+  width: auto;
+  height: auto;
+}
+select, input[type="file"] {
+  height: 28px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 28px;
+}
+select {
+  width: 220px;
+  background-color: #ffffff;
+}
+select[multiple], select[size] {
+  height: auto;
+}
+input[type="image"] {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+textarea {
+  height: auto;
+}
+input[type="hidden"] {
+  display: none;
+}
+.radio, .checkbox {
+  padding-left: 18px;
+}
+.radio input[type="radio"], .checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -18px;
+}
+.controls > .radio:first-child, .controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline, .checkbox.inline {
+  display: inline-block;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+.controls > .radio.inline:first-child, .controls > .checkbox.inline:first-child {
+  padding-top: 0;
+}
+input, textarea {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+  transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+input:focus, textarea:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-8 */
+
+}
+input[type="file"]:focus, input[type="checkbox"]:focus, select:focus {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input {
+  float: none;
+  margin-left: 0;
+}
+input.span1, textarea.span1, .uneditable-input.span1 {
+  width: 50px;
+}
+input.span2, textarea.span2, .uneditable-input.span2 {
+  width: 130px;
+}
+input.span3, textarea.span3, .uneditable-input.span3 {
+  width: 210px;
+}
+input.span4, textarea.span4, .uneditable-input.span4 {
+  width: 290px;
+}
+input.span5, textarea.span5, .uneditable-input.span5 {
+  width: 370px;
+}
+input.span6, textarea.span6, .uneditable-input.span6 {
+  width: 450px;
+}
+input.span7, textarea.span7, .uneditable-input.span7 {
+  width: 530px;
+}
+input.span8, textarea.span8, .uneditable-input.span8 {
+  width: 610px;
+}
+input.span9, textarea.span9, .uneditable-input.span9 {
+  width: 690px;
+}
+input.span10, textarea.span10, .uneditable-input.span10 {
+  width: 770px;
+}
+input.span11, textarea.span11, .uneditable-input.span11 {
+  width: 850px;
+}
+input.span12, textarea.span12, .uneditable-input.span12 {
+  width: 930px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  background-color: #f5f5f5;
+  border-color: #ddd;
+  cursor: not-allowed;
+}
+.control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning input, .control-group.warning select, .control-group.warning textarea {
+  color: #c09853;
+  border-color: #c09853;
+}
+.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: 0 0 6px #dbc59e;
+  -moz-box-shadow: 0 0 6px #dbc59e;
+  box-shadow: 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error > label, .control-group.error .help-block, .control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error input, .control-group.error select, .control-group.error textarea {
+  color: #b94a48;
+  border-color: #b94a48;
+}
+.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: 0 0 6px #d59392;
+  -moz-box-shadow: 0 0 6px #d59392;
+  box-shadow: 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success > label, .control-group.success .help-block, .control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success input, .control-group.success select, .control-group.success textarea {
+  color: #468847;
+  border-color: #468847;
+}
+.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: 0 0 6px #7aba7b;
+  -moz-box-shadow: 0 0 6px #7aba7b;
+  box-shadow: 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 17px 20px 18px;
+  margin-top: 18px;
+  margin-bottom: 18px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+}
+.uneditable-input {
+  display: block;
+  background-color: #ffffff;
+  border-color: #eee;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+:-moz-placeholder {
+  color: #999999;
+}
+::-webkit-input-placeholder {
+  color: #999999;
+}
+.help-block {
+  margin-top: 5px;
+  margin-bottom: 0;
+  color: #999999;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 9px;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-prepend, .input-append {
+  margin-bottom: 5px;
+  *zoom: 1;
+}
+.input-prepend:before,
+.input-append:before,
+.input-prepend:after,
+.input-append:after {
+  display: table;
+  content: "";
+}
+.input-prepend:after, .input-append:after {
+  clear: both;
+}
+.input-prepend input,
+.input-append input,
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-prepend input:focus,
+.input-append input:focus,
+.input-prepend .uneditable-input:focus,
+.input-append .uneditable-input:focus {
+  position: relative;
+  z-index: 2;
+}
+.input-prepend .uneditable-input, .input-append .uneditable-input {
+  border-left-color: #ccc;
+}
+.input-prepend .add-on, .input-append .add-on {
+  float: left;
+  display: block;
+  width: auto;
+  min-width: 16px;
+  height: 18px;
+  margin-right: -1px;
+  padding: 4px 5px;
+  font-weight: normal;
+  line-height: 18px;
+  color: #999999;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-prepend .active, .input-append .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on {
+  *margin-top: 1px;
+  /* IE6-7 */
+
+}
+.input-append input, .input-append .uneditable-input {
+  float: left;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-append .uneditable-input {
+  border-right-color: #ccc;
+}
+.input-append .add-on {
+  margin-right: 0;
+  margin-left: -1px;
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-append input:first-child {
+  *margin-left: -160px;
+}
+.input-append input:first-child + .add-on {
+  *margin-left: -21px;
+}
+.search-query {
+  padding-left: 14px;
+  padding-right: 14px;
+  margin-bottom: 0;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.form-search label,
+.form-inline label,
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  display: inline-block;
+}
+.form-search .input-append .add-on,
+.form-inline .input-prepend .add-on,
+.form-search .input-append .add-on,
+.form-inline .input-prepend .add-on {
+  vertical-align: middle;
+}
+.control-group {
+  margin-bottom: 9px;
+}
+.form-horizontal legend + .control-group {
+  margin-top: 18px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 18px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before, .form-horizontal .control-group:after {
+  display: table;
+  content: "";
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-group > label {
+  float: left;
+  width: 140px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  margin-left: 160px;
+}
+.form-horizontal .form-actions {
+  padding-left: 160px;
+}
+table {
+  max-width: 100%;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.table {
+  width: 100%;
+  margin-bottom: 18px;
+}
+.table th, .table td {
+  padding: 8px;
+  line-height: 18px;
+  text-align: left;
+  border-top: 1px solid #ddd;
+}
+.table th {
+  font-weight: bold;
+  vertical-align: bottom;
+}
+.table td {
+  vertical-align: top;
+}
+.table thead:first-child tr th, .table thead:first-child tr td {
+  border-top: 0;
+}
+.table tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table-condensed th, .table-condensed td {
+  padding: 4px 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+  border-collapse: separate;
+  *border-collapse: collapsed;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.table-bordered th + th,
+.table-bordered td + td,
+.table-bordered th + td,
+.table-bordered td + th {
+  border-left: 1px solid #ddd;
+}
+.table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td {
+  border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child {
+  -webkit-border-radius: 4px 0 0 0;
+  -moz-border-radius: 4px 0 0 0;
+  border-radius: 4px 0 0 0;
+}
+.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child {
+  -webkit-border-radius: 0 4px 0 0;
+  -moz-border-radius: 0 4px 0 0;
+  border-radius: 0 4px 0 0;
+}
+.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child {
+  -webkit-border-radius: 0 0 0 4px;
+  -moz-border-radius: 0 0 0 4px;
+  border-radius: 0 0 0 4px;
+}
+.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child {
+  -webkit-border-radius: 0 0 4px 0;
+  -moz-border-radius: 0 0 4px 0;
+  border-radius: 0 0 4px 0;
+}
+.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th {
+  background-color: #f9f9f9;
+}
+table .span1 {
+  float: none;
+  width: 44px;
+  margin-left: 0;
+}
+table .span2 {
+  float: none;
+  width: 124px;
+  margin-left: 0;
+}
+table .span3 {
+  float: none;
+  width: 204px;
+  margin-left: 0;
+}
+table .span4 {
+  float: none;
+  width: 284px;
+  margin-left: 0;
+}
+table .span5 {
+  float: none;
+  width: 364px;
+  margin-left: 0;
+}
+table .span6 {
+  float: none;
+  width: 444px;
+  margin-left: 0;
+}
+table .span7 {
+  float: none;
+  width: 524px;
+  margin-left: 0;
+}
+table .span8 {
+  float: none;
+  width: 604px;
+  margin-left: 0;
+}
+table .span9 {
+  float: none;
+  width: 684px;
+  margin-left: 0;
+}
+table .span10 {
+  float: none;
+  width: 764px;
+  margin-left: 0;
+}
+table .span11 {
+  float: none;
+  width: 844px;
+  margin-left: 0;
+}
+table .span12 {
+  float: none;
+  width: 924px;
+  margin-left: 0;
+}
+[class*="icon-"] {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  vertical-align: text-top;
+  background-image: url(../img/glyphicons-halflings.png);
+  background-position: 14px 14px;
+  background-repeat: no-repeat;
+  *margin-right: .3em;
+}
+[class*="icon-"]:last-child {
+  *margin-left: 0;
+}
+.icon-white {
+  background-image: url(../img/glyphicons-halflings-white.png);
+}
+.icon-glass {
+  background-position: 0      0;
+}
+.icon-music {
+  background-position: -24px 0;
+}
+.icon-search {
+  background-position: -48px 0;
+}
+.icon-envelope {
+  background-position: -72px 0;
+}
+.icon-heart {
+  background-position: -96px 0;
+}
+.icon-star {
+  background-position: -120px 0;
+}
+.icon-star-empty {
+  background-position: -144px 0;
+}
+.icon-user {
+  background-position: -168px 0;
+}
+.icon-film {
+  background-position: -192px 0;
+}
+.icon-th-large {
+  background-position: -216px 0;
+}
+.icon-th {
+  background-position: -240px 0;
+}
+.icon-th-list {
+  background-position: -264px 0;
+}
+.icon-ok {
+  background-position: -288px 0;
+}
+.icon-remove {
+  background-position: -312px 0;
+}
+.icon-zoom-in {
+  background-position: -336px 0;
+}
+.icon-zoom-out {
+  background-position: -360px 0;
+}
+.icon-off {
+  background-position: -384px 0;
+}
+.icon-signal {
+  background-position: -408px 0;
+}
+.icon-cog {
+  background-position: -432px 0;
+}
+.icon-trash {
+  background-position: -456px 0;
+}
+.icon-home {
+  background-position: 0 -24px;
+}
+.icon-file {
+  background-position: -24px -24px;
+}
+.icon-time {
+  background-position: -48px -24px;
+}
+.icon-road {
+  background-position: -72px -24px;
+}
+.icon-download-alt {
+  background-position: -96px -24px;
+}
+.icon-download {
+  background-position: -120px -24px;
+}
+.icon-upload {
+  background-position: -144px -24px;
+}
+.icon-inbox {
+  background-position: -168px -24px;
+}
+.icon-play-circle {
+  background-position: -192px -24px;
+}
+.icon-repeat {
+  background-position: -216px -24px;
+}
+.icon-refresh {
+  background-position: -240px -24px;
+}
+.icon-list-alt {
+  background-position: -264px -24px;
+}
+.icon-lock {
+  background-position: -287px -24px;
+}
+.icon-flag {
+  background-position: -312px -24px;
+}
+.icon-headphones {
+  background-position: -336px -24px;
+}
+.icon-volume-off {
+  background-position: -360px -24px;
+}
+.icon-volume-down {
+  background-position: -384px -24px;
+}
+.icon-volume-up {
+  background-position: -408px -24px;
+}
+.icon-qrcode {
+  background-position: -432px -24px;
+}
+.icon-barcode {
+  background-position: -456px -24px;
+}
+.icon-tag {
+  background-position: 0 -48px;
+}
+.icon-tags {
+  background-position: -25px -48px;
+}
+.icon-book {
+  background-position: -48px -48px;
+}
+.icon-bookmark {
+  background-position: -72px -48px;
+}
+.icon-print {
+  background-position: -96px -48px;
+}
+.icon-camera {
+  background-position: -120px -48px;
+}
+.icon-font {
+  background-position: -144px -48px;
+}
+.icon-bold {
+  background-position: -167px -48px;
+}
+.icon-italic {
+  background-position: -192px -48px;
+}
+.icon-text-height {
+  background-position: -216px -48px;
+}
+.icon-text-width {
+  background-position: -240px -48px;
+}
+.icon-align-left {
+  background-position: -264px -48px;
+}
+.icon-align-center {
+  background-position: -288px -48px;
+}
+.icon-align-right {
+  background-position: -312px -48px;
+}
+.icon-align-justify {
+  background-position: -336px -48px;
+}
+.icon-list {
+  background-position: -360px -48px;
+}
+.icon-indent-left {
+  background-position: -384px -48px;
+}
+.icon-indent-right {
+  background-position: -408px -48px;
+}
+.icon-facetime-video {
+  background-position: -432px -48px;
+}
+.icon-picture {
+  background-position: -456px -48px;
+}
+.icon-pencil {
+  background-position: 0 -72px;
+}
+.icon-map-marker {
+  background-position: -24px -72px;
+}
+.icon-adjust {
+  background-position: -48px -72px;
+}
+.icon-tint {
+  background-position: -72px -72px;
+}
+.icon-edit {
+  background-position: -96px -72px;
+}
+.icon-share {
+  background-position: -120px -72px;
+}
+.icon-check {
+  background-position: -144px -72px;
+}
+.icon-move {
+  background-position: -168px -72px;
+}
+.icon-step-backward {
+  background-position: -192px -72px;
+}
+.icon-fast-backward {
+  background-position: -216px -72px;
+}
+.icon-backward {
+  background-position: -240px -72px;
+}
+.icon-play {
+  background-position: -264px -72px;
+}
+.icon-pause {
+  background-position: -288px -72px;
+}
+.icon-stop {
+  background-position: -312px -72px;
+}
+.icon-forward {
+  background-position: -336px -72px;
+}
+.icon-fast-forward {
+  background-position: -360px -72px;
+}
+.icon-step-forward {
+  background-position: -384px -72px;
+}
+.icon-eject {
+  background-position: -408px -72px;
+}
+.icon-chevron-left {
+  background-position: -432px -72px;
+}
+.icon-chevron-right {
+  background-position: -456px -72px;
+}
+.icon-plus-sign {
+  background-position: 0 -96px;
+}
+.icon-minus-sign {
+  background-position: -24px -96px;
+}
+.icon-remove-sign {
+  background-position: -48px -96px;
+}
+.icon-ok-sign {
+  background-position: -72px -96px;
+}
+.icon-question-sign {
+  background-position: -96px -96px;
+}
+.icon-info-sign {
+  background-position: -120px -96px;
+}
+.icon-screenshot {
+  background-position: -144px -96px;
+}
+.icon-remove-circle {
+  background-position: -168px -96px;
+}
+.icon-ok-circle {
+  background-position: -192px -96px;
+}
+.icon-ban-circle {
+  background-position: -216px -96px;
+}
+.icon-arrow-left {
+  background-position: -240px -96px;
+}
+.icon-arrow-right {
+  background-position: -264px -96px;
+}
+.icon-arrow-up {
+  background-position: -289px -96px;
+}
+.icon-arrow-down {
+  background-position: -312px -96px;
+}
+.icon-share-alt {
+  background-position: -336px -96px;
+}
+.icon-resize-full {
+  background-position: -360px -96px;
+}
+.icon-resize-small {
+  background-position: -384px -96px;
+}
+.icon-plus {
+  background-position: -408px -96px;
+}
+.icon-minus {
+  background-position: -433px -96px;
+}
+.icon-asterisk {
+  background-position: -456px -96px;
+}
+.icon-exclamation-sign {
+  background-position: 0 -120px;
+}
+.icon-gift {
+  background-position: -24px -120px;
+}
+.icon-leaf {
+  background-position: -48px -120px;
+}
+.icon-fire {
+  background-position: -72px -120px;
+}
+.icon-eye-open {
+  background-position: -96px -120px;
+}
+.icon-eye-close {
+  background-position: -120px -120px;
+}
+.icon-warning-sign {
+  background-position: -144px -120px;
+}
+.icon-plane {
+  background-position: -168px -120px;
+}
+.icon-calendar {
+  background-position: -192px -120px;
+}
+.icon-random {
+  background-position: -216px -120px;
+}
+.icon-comment {
+  background-position: -240px -120px;
+}
+.icon-magnet {
+  background-position: -264px -120px;
+}
+.icon-chevron-up {
+  background-position: -288px -120px;
+}
+.icon-chevron-down {
+  background-position: -313px -119px;
+}
+.icon-retweet {
+  background-position: -336px -120px;
+}
+.icon-shopping-cart {
+  background-position: -360px -120px;
+}
+.icon-folder-close {
+  background-position: -384px -120px;
+}
+.icon-folder-open {
+  background-position: -408px -120px;
+}
+.icon-resize-vertical {
+  background-position: -432px -119px;
+}
+.icon-resize-horizontal {
+  background-position: -456px -118px;
+}
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active, .open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  text-indent: -99999px;
+  *text-indent: 0;
+  vertical-align: top;
+  border-left: 4px solid transparent;
+  border-right: 4px solid transparent;
+  border-top: 4px solid #000000;
+  opacity: 0.3;
+  filter: alpha(opacity=30);
+  content: "\2193";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown:hover .caret, .open.dropdown .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  float: left;
+  display: none;
+  min-width: 160px;
+  max-width: 220px;
+  _width: 160px;
+  padding: 4px 0;
+  margin: 0;
+  list-style: none;
+  background-color: #ffffff;
+  border-color: #ccc;
+  border-color: rgba(0, 0, 0, 0.2);
+  border-style: solid;
+  border-width: 1px;
+  -webkit-border-radius: 0 0 5px 5px;
+  -moz-border-radius: 0 0 5px 5px;
+  border-radius: 0 0 5px 5px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+}
+.dropdown-menu.bottom-up {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 5px 1px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+  *width: 100%;
+  *margin: -5px 0 5px;
+}
+.dropdown-menu a {
+  display: block;
+  padding: 3px 15px;
+  clear: both;
+  font-weight: normal;
+  line-height: 18px;
+  color: #555555;
+  white-space: nowrap;
+}
+.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover {
+  color: #ffffff;
+  text-decoration: none;
+  background-color: #0088cc;
+}
+.dropdown.open {
+  *z-index: 1000;
+}
+.dropdown.open .dropdown-toggle {
+  color: #ffffff;
+  background: #ccc;
+  background: rgba(0, 0, 0, 0.3);
+}
+.dropdown.open .dropdown-menu {
+  display: block;
+}
+.typeahead {
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #eee;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.fade {
+  -webkit-transition: opacity 0.15s linear;
+  -moz-transition: opacity 0.15s linear;
+  -ms-transition: opacity 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear;
+  opacity: 0;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  -webkit-transition: height 0.35s ease;
+  -moz-transition: height 0.35s ease;
+  -ms-transition: height 0.35s ease;
+  -o-transition: height 0.35s ease;
+  transition: height 0.35s ease;
+  position: relative;
+  overflow: hidden;
+  height: 0;
+}
+.collapse.in {
+  height: auto;
+}
+.close {
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #000000;
+  text-shadow: 0 1px 0 #ffffff;
+  opacity: 0.2;
+  filter: alpha(opacity=20);
+}
+.close:hover {
+  color: #000000;
+  text-decoration: none;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  cursor: pointer;
+}
+.btn {
+  display: inline-block;
+  padding: 4px 10px 4px;
+  font-size: 13px;
+  line-height: 18px;
+  color: #333333;
+  text-align: center;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  background-color: #fafafa;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
+  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+  background-repeat: no-repeat;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
+  border: 1px solid #ccc;
+  border-bottom-color: #bbb;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  cursor: pointer;
+  *margin-left: .3em;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover {
+  color: #333333;
+  text-decoration: none;
+  background-color: #e6e6e6;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -ms-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active, .btn:active {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  background-color: #e6e6e6;
+  background-color: #d9d9d9 \9;
+  color: rgba(0, 0, 0, 0.5);
+  outline: 0;
+}
+.btn.disabled, .btn[disabled] {
+  cursor: default;
+  background-image: none;
+  background-color: #e6e6e6;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 9px 14px;
+  font-size: 15px;
+  line-height: normal;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.btn-large .icon {
+  margin-top: 1px;
+}
+.btn-small {
+  padding: 5px 9px;
+  font-size: 11px;
+  line-height: 16px;
+}
+.btn-small .icon {
+  margin-top: -1px;
+}
+.btn-primary,
+.btn-primary:hover,
+.btn-warning,
+.btn-warning:hover,
+.btn-danger,
+.btn-danger:hover,
+.btn-success,
+.btn-success:hover,
+.btn-info,
+.btn-info:hover {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  color: #ffffff;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(top, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  background-color: #0044cc;
+}
+.btn-primary:active, .btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(top, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  background-color: #f89406;
+}
+.btn-warning:active, .btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(top, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  background-color: #bd362f;
+}
+.btn-danger:active, .btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -ms-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(top, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  background-color: #51a351;
+}
+.btn-success:active, .btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(top, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  background-color: #2f96b4;
+}
+.btn-info:active, .btn-info.active {
+  background-color: #24748c \9;
+}
+button.btn, input[type="submit"].btn {
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.large, input[type="submit"].btn.large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.small, input[type="submit"].btn.small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+.btn-group {
+  position: relative;
+  *zoom: 1;
+  *margin-left: .3em;
+}
+.btn-group:before, .btn-group:after {
+  display: table;
+  content: "";
+}
+.btn-group:after {
+  clear: both;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  margin-top: 9px;
+  margin-bottom: 9px;
+}
+.btn-toolbar .btn-group {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group .btn {
+  position: relative;
+  float: left;
+  margin-left: -1px;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group .btn:last-child, .btn-group .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group .btn:hover,
+.btn-group .btn:focus,
+.btn-group .btn:active,
+.btn-group .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group.open {
+  *z-index: 1000;
+}
+.btn-group.open .dropdown-menu {
+  display: block;
+  margin-top: 1px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.btn .caret {
+  margin-top: 7px;
+  margin-left: 0;
+}
+.btn:hover .caret, .open.btn-group .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.btn-primary .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret {
+  border-top-color: #ffffff;
+  opacity: 0.75;
+  filter: alpha(opacity=75);
+}
+.btn-small .caret {
+  margin-top: 4px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 18px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert, .alert-heading {
+  color: #c09853;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 18px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success, .alert-success .alert-heading {
+  color: #468847;
+}
+.alert-danger, .alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+}
+.alert-danger,
+.alert-error,
+.alert-danger .alert-heading,
+.alert-error .alert-heading {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info, .alert-info .alert-heading {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p, .alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav-list {
+  padding-left: 14px;
+  padding-right: 14px;
+  margin-bottom: 0;
+}
+.nav-list > li > a, .nav-list .nav-header {
+  display: block;
+  padding: 3px 15px;
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list .nav-header {
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #999999;
+  text-transform: uppercase;
+}
+.nav-list > li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list .active > a {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list .icon {
+  margin-right: 2px;
+}
+.nav-tabs, .nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+}
+.nav-tabs:after, .nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li, .nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a, .nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 9px;
+  padding-bottom: 9px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills .active > a, .nav-pills .active > a:hover {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu {
+  margin-top: 1px;
+  border-width: 1px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  margin-top: 6px;
+}
+.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret {
+  border-top-color: #005580;
+}
+.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret {
+  border-top-color: #333333;
+}
+.nav > .dropdown.active > a:hover {
+  color: #000000;
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret {
+  border-top-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before, .tabbable:after {
+  display: table;
+  content: "";
+}
+.tabbable:after {
+  clear: both;
+}
+.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane, .pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active, .pill-content > .active {
+  display: block;
+}
+.tabs-below .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below .nav-tabs > li > a:hover {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li {
+  float: none;
+}
+.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left .nav-tabs > li > a:hover {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right .nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 18px;
+}
+.navbar-inner {
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #2c2c2c;
+  background-image: -moz-linear-gradient(top, #333333, #222222);
+  background-image: -ms-linear-gradient(top, #333333, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+  background-image: -webkit-linear-gradient(top, #333333, #222222);
+  background-image: -o-linear-gradient(top, #333333, #222222);
+  background-image: linear-gradient(top, #333333, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+.btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  background-color: #2c2c2c;
+  background-image: -moz-linear-gradient(top, #333333, #222222);
+  background-image: -ms-linear-gradient(top, #333333, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+  background-image: -webkit-linear-gradient(top, #333333, #222222);
+  background-image: -o-linear-gradient(top, #333333, #222222);
+  background-image: linear-gradient(top, #333333, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+.btn-navbar:hover,
+.btn-navbar:active,
+.btn-navbar.active,
+.btn-navbar.disabled,
+.btn-navbar[disabled] {
+  background-color: #222222;
+}
+.btn-navbar:active, .btn-navbar.active {
+  background-color: #080808 \9;
+}
+.btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.nav-collapse.collapse {
+  height: auto;
+}
+.navbar .brand:hover {
+  text-decoration: none;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 8px 20px 12px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 1;
+  color: #ffffff;
+}
+.navbar .navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #999999;
+}
+.navbar .navbar-text a:hover {
+  color: #ffffff;
+  background-color: transparent;
+}
+.navbar .btn, .navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before, .navbar-form:after {
+  display: table;
+  content: "";
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input, .navbar-form select {
+  display: inline-block;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-form .radio, .navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 6px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  padding: 4px 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  color: #ffffff;
+  color: rgba(255, 255, 255, 0.75);
+  background: #666;
+  background: rgba(255, 255, 255, 0.3);
+  border: 1px solid #111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -ms-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-search .search-query :-moz-placeholder {
+  color: #eeeeee;
+}
+.navbar-search .search-query::-webkit-input-placeholder {
+  color: #eeeeee;
+}
+.navbar-search .search-query:hover {
+  color: #ffffff;
+  background-color: #999999;
+  background-color: rgba(255, 255, 255, 0.5);
+}
+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
+  padding: 5px 10px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+.navbar-fixed-top .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+}
+.navbar .nav > li {
+  display: block;
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 10px 11px;
+  line-height: 19px;
+  color: #999999;
+  text-decoration: none;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+  text-decoration: none;
+}
+.navbar .nav .active > a, .navbar .nav .active > a:hover {
+  color: #ffffff;
+  text-decoration: none;
+  background-color: #222222;
+  background-color: rgba(0, 0, 0, 0.5);
+}
+.navbar .divider-vertical {
+  height: 40px;
+  width: 1px;
+  margin: 0 9px;
+  overflow: hidden;
+  background-color: #222222;
+  border-right: 1px solid #333333;
+}
+.navbar .nav.pull-right {
+  margin-left: 10px;
+  margin-right: 0;
+}
+.navbar .dropdown-menu {
+  margin-top: 1px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.navbar .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret {
+  border-top-color: #ffffff;
+}
+.navbar .nav .active .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle {
+  background-color: transparent;
+}
+.navbar .nav .active > .dropdown-toggle:hover {
+  color: #ffffff;
+}
+.navbar .nav.pull-right .dropdown-menu {
+  left: auto;
+  right: 0;
+}
+.navbar .nav.pull-right .dropdown-menu:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .nav.pull-right .dropdown-menu:after {
+  left: auto;
+  right: 13px;
+}
+.breadcrumb {
+  padding: 7px 14px;
+  margin: 0 0 18px;
+  background-color: #fbfbfb;
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: linear-gradient(top, #ffffff, #f5f5f5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
+  border: 1px solid #ddd;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+}
+.breadcrumb li {
+  display: inline;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.breadcrumb .divider {
+  padding: 0 5px;
+  color: #999999;
+}
+.breadcrumb .active a {
+  color: #333333;
+}
+.pagination {
+  height: 36px;
+  margin: 18px 0;
+}
+.pagination ul {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-left: 0;
+  margin-bottom: 0;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.pagination li {
+  display: inline;
+}
+.pagination a {
+  float: left;
+  padding: 0 14px;
+  line-height: 34px;
+  text-decoration: none;
+  border: 1px solid #ddd;
+  border-left-width: 0;
+}
+.pagination a:hover, .pagination .active a {
+  background-color: #f5f5f5;
+}
+.pagination .active a {
+  color: #999999;
+  cursor: default;
+}
+.pagination .disabled a, .pagination .disabled a:hover {
+  color: #999999;
+  background-color: transparent;
+  cursor: default;
+}
+.pagination li:first-child a {
+  border-left-width: 1px;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.pagination li:last-child a {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.pagination-centered {
+  text-align: center;
+}
+.pagination-right {
+  text-align: right;
+}
+.pager {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+  text-align: center;
+  *zoom: 1;
+}
+.pager:before, .pager:after {
+  display: table;
+  content: "";
+}
+.pager:after {
+  clear: both;
+}
+.pager li {
+  display: inline;
+}
+.pager a {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.pager a:hover {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.pager .next a {
+  float: right;
+}
+.pager .previous a {
+  float: left;
+}
+.modal-open .dropdown-menu {
+  z-index: 2050;
+}
+.modal-open .dropdown.open {
+  *z-index: 2050;
+}
+.modal-open .popover {
+  z-index: 2060;
+}
+.modal-open .tooltip {
+  z-index: 2070;
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop, .modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  z-index: 1050;
+  max-height: 500px;
+  overflow: auto;
+  width: 560px;
+  margin: -250px 0 0 -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -ms-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 50%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-body {
+  padding: 15px;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before, .modal-footer:after {
+  display: table;
+  content: "";
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn {
+  float: right;
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.tooltip {
+  position: absolute;
+  z-index: 1020;
+  display: block;
+  visibility: visible;
+  padding: 5px;
+  font-size: 11px;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.tooltip.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.tooltip.top {
+  margin-top: -2px;
+}
+.tooltip.right {
+  margin-left: 2px;
+}
+.tooltip.bottom {
+  margin-top: 2px;
+}
+.tooltip.left {
+  margin-left: -2px;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #000000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #000000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #000000;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #ffffff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000000;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  padding: 5px;
+}
+.popover.top {
+  margin-top: -5px;
+}
+.popover.right {
+  margin-left: 5px;
+}
+.popover.bottom {
+  margin-top: 5px;
+}
+.popover.left {
+  margin-left: -5px;
+}
+.popover.top .arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #000000;
+}
+.popover.right .arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #000000;
+}
+.popover.bottom .arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #000000;
+}
+.popover.left .arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #000000;
+}
+.popover .arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover-inner {
+  padding: 3px;
+  width: 280px;
+  overflow: hidden;
+  background: #000000;
+  background: rgba(0, 0, 0, 0.8);
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+}
+.popover-title {
+  padding: 9px 15px;
+  line-height: 1;
+  background-color: #f5f5f5;
+  border-bottom: 1px solid #eee;
+  -webkit-border-radius: 3px 3px 0 0;
+  -moz-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0;
+}
+.popover-content {
+  padding: 14px;
+  background-color: #ffffff;
+  -webkit-border-radius: 0 0 3px 3px;
+  -moz-border-radius: 0 0 3px 3px;
+  border-radius: 0 0 3px 3px;
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.popover-content p, .popover-content ul, .popover-content ol {
+  margin-bottom: 0;
+}
+.thumbnails {
+  margin-left: -20px;
+  list-style: none;
+  *zoom: 1;
+}
+.thumbnails:before, .thumbnails:after {
+  display: table;
+  content: "";
+}
+.thumbnails:after {
+  clear: both;
+}
+.thumbnails > li {
+  float: left;
+  margin: 0 0 18px 20px;
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  line-height: 1;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+a.thumbnail:hover {
+  border-color: #0088cc;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+.thumbnail > img {
+  display: block;
+  max-width: 100%;
+  margin-left: auto;
+  margin-right: auto;
+}
+.thumbnail .caption {
+  padding: 9px;
+}
+.label {
+  padding: 1px 3px 2px;
+  font-size: 9.75px;
+  font-weight: bold;
+  color: #ffffff;
+  text-transform: uppercase;
+  background-color: #999999;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.label-important {
+  background-color: #b94a48;
+}
+.label-warning {
+  background-color: #f89406;
+}
+.label-success {
+  background-color: #468847;
+}
+.label-info {
+  background-color: #3a87ad;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@-moz-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+.progress {
+  overflow: hidden;
+  height: 18px;
+  margin-bottom: 18px;
+  background-color: #f7f7f7;
+  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.progress .bar {
+  width: 0%;
+  height: 18px;
+  color: #ffffff;
+  font-size: 12px;
+  text-align: center;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e90d2;
+  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+  background-image: -o-linear-gradient(top, #149bdf, #0480be);
+  background-image: linear-gradient(top, #149bdf, #0480be);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-transition: width 0.6s ease;
+  -moz-transition: width 0.6s ease;
+  -ms-transition: width 0.6s ease;
+  -o-transition: width 0.6s ease;
+  transition: width 0.6s ease;
+}
+.progress-striped .bar {
+  background-color: #62c462;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+  -moz-background-size: 40px 40px;
+  -o-background-size: 40px 40px;
+  background-size: 40px 40px;
+}
+.progress.active .bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -moz-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-danger .bar {
+  background-color: #dd514c;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: linear-gradient(top, #ee5f5b, #c43c35);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
+}
+.progress-danger.progress-striped .bar {
+  background-color: #ee5f5b;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-success .bar {
+  background-color: #5eb95e;
+  background-image: -moz-linear-gradient(top, #62c462, #57a957);
+  background-image: -ms-linear-gradient(top, #62c462, #57a957);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+  background-image: -o-linear-gradient(top, #62c462, #57a957);
+  background-image: linear-gradient(top, #62c462, #57a957);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
+}
+.progress-success.progress-striped .bar {
+  background-color: #62c462;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-info .bar {
+  background-color: #4bb1cf;
+  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: linear-gradient(top, #5bc0de, #339bb9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
+}
+.progress-info.progress-striped .bar {
+  background-color: #5bc0de;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.accordion {
+  margin-bottom: 18px;
+}
+.accordion-group {
+  margin-bottom: 2px;
+  border: 1px solid #e5e5e5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.accordion-heading {
+  border-bottom: 0;
+}
+.accordion-heading .accordion-toggle {
+  display: block;
+  padding: 8px 15px;
+}
+.accordion-inner {
+  padding: 9px 15px;
+  border-top: 1px solid #e5e5e5;
+}
+.carousel {
+  position: relative;
+  margin-bottom: 18px;
+  line-height: 1;
+}
+.carousel-inner {
+  overflow: hidden;
+  width: 100%;
+  position: relative;
+}
+.carousel .item {
+  display: none;
+  position: relative;
+  -webkit-transition: 0.6s ease-in-out left;
+  -moz-transition: 0.6s ease-in-out left;
+  -ms-transition: 0.6s ease-in-out left;
+  -o-transition: 0.6s ease-in-out left;
+  transition: 0.6s ease-in-out left;
+}
+.carousel .item > img {
+  display: block;
+  line-height: 1;
+}
+.carousel .active, .carousel .next, .carousel .prev {
+  display: block;
+}
+.carousel .active {
+  left: 0;
+}
+.carousel .next, .carousel .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel .next {
+  left: 100%;
+}
+.carousel .prev {
+  left: -100%;
+}
+.carousel .next.left, .carousel .prev.right {
+  left: 0;
+}
+.carousel .active.left {
+  left: -100%;
+}
+.carousel .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 40%;
+  left: 15px;
+  width: 40px;
+  height: 40px;
+  margin-top: -20px;
+  font-size: 60px;
+  font-weight: 100;
+  line-height: 30px;
+  color: #ffffff;
+  text-align: center;
+  background: #222222;
+  border: 3px solid #ffffff;
+  -webkit-border-radius: 23px;
+  -moz-border-radius: 23px;
+  border-radius: 23px;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.carousel-control.right {
+  left: auto;
+  right: 15px;
+}
+.carousel-control:hover {
+  color: #ffffff;
+  text-decoration: none;
+  opacity: 0.9;
+  filter: alpha(opacity=90);
+}
+.carousel-caption {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding: 10px 15px 5px;
+  background: #333333;
+  background: rgba(0, 0, 0, 0.75);
+}
+.carousel-caption h4, .carousel-caption p {
+  color: #ffffff;
+}
+.hero-unit {
+  padding: 60px;
+  margin-bottom: 30px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.hero-unit h1 {
+  margin-bottom: 0;
+  font-size: 60px;
+  line-height: 1;
+  letter-spacing: -1px;
+}
+.hero-unit p {
+  font-size: 18px;
+  font-weight: 200;
+  line-height: 27px;
+}
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
diff --git a/doc/6.0.x/resources/bootstrap.js b/doc/6.0.x/resources/bootstrap.js
new file mode 100644
index 0000000..49aceca
--- /dev/null
+++ b/doc/6.0.x/resources/bootstrap.js
@@ -0,0 +1,1734 @@
+/* ===================================================
+ * bootstrap-transition.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+!function( $ ) {
+
+  $(function () {
+
+    "use strict"
+
+    /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
+     * ======================================================= */
+
+    $.support.transition = (function () {
+      var thisBody = document.body || document.documentElement
+        , thisStyle = thisBody.style
+        , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
+
+      return support && {
+        end: (function () {
+          var transitionEnd = "TransitionEnd"
+          if ( $.browser.webkit ) {
+          	transitionEnd = "webkitTransitionEnd"
+          } else if ( $.browser.mozilla ) {
+          	transitionEnd = "transitionend"
+          } else if ( $.browser.opera ) {
+          	transitionEnd = "oTransitionEnd"
+          }
+          return transitionEnd
+        }())
+      }
+    })()
+
+  })
+  
+}( window.jQuery )
+
+/* =========================================================
+ * bootstrap-modal.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* MODAL CLASS DEFINITION
+  * ====================== */
+
+  var Modal = function ( content, options ) {
+    this.options = options
+    this.$element = $(content)
+      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+  }
+
+  Modal.prototype = {
+
+      constructor: Modal
+
+    , toggle: function () {
+        return this[!this.isShown ? 'show' : 'hide']()
+      }
+
+    , show: function () {
+        var that = this
+
+        if (this.isShown) return
+
+        $('body').addClass('modal-open')
+
+        this.isShown = true
+        this.$element.trigger('show')
+
+        escape.call(this)
+        backdrop.call(this, function () {
+          var transition = $.support.transition && that.$element.hasClass('fade')
+
+          !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
+
+          that.$element
+            .show()
+
+          if (transition) {
+            that.$element[0].offsetWidth // force reflow
+          }
+
+          that.$element.addClass('in')
+
+          transition ?
+            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+            that.$element.trigger('shown')
+
+        })
+      }
+
+    , hide: function ( e ) {
+        e && e.preventDefault()
+
+        if (!this.isShown) return
+
+        var that = this
+        this.isShown = false
+
+        $('body').removeClass('modal-open')
+
+        escape.call(this)
+
+        this.$element
+          .trigger('hide')
+          .removeClass('in')
+
+        $.support.transition && this.$element.hasClass('fade') ?
+          hideWithTransition.call(this) :
+          hideModal.call(this)
+      }
+
+  }
+
+
+ /* MODAL PRIVATE METHODS
+  * ===================== */
+
+  function hideWithTransition() {
+    var that = this
+      , timeout = setTimeout(function () {
+          that.$element.off($.support.transition.end)
+          hideModal.call(that)
+        }, 500)
+
+    this.$element.one($.support.transition.end, function () {
+      clearTimeout(timeout)
+      hideModal.call(that)
+    })
+  }
+
+  function hideModal( that ) {
+    this.$element
+      .hide()
+      .trigger('hidden')
+
+    backdrop.call(this)
+  }
+
+  function backdrop( callback ) {
+    var that = this
+      , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+        .appendTo(document.body)
+
+      if (this.options.backdrop != 'static') {
+        this.$backdrop.click($.proxy(this.hide, this))
+      }
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      doAnimate ?
+        this.$backdrop.one($.support.transition.end, callback) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      $.support.transition && this.$element.hasClass('fade')?
+        this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
+        removeBackdrop.call(this)
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  function removeBackdrop() {
+    this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  function escape() {
+    var that = this
+    if (this.isShown && this.options.keyboard) {
+      $(document).on('keyup.dismiss.modal', function ( e ) {
+        e.which == 27 && that.hide()
+      })
+    } else if (!this.isShown) {
+      $(document).off('keyup.dismiss.modal')
+    }
+  }
+
+
+ /* MODAL PLUGIN DEFINITION
+  * ======================= */
+
+  $.fn.modal = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('modal')
+        , options = $.extend({}, $.fn.modal.defaults, typeof option == 'object' && option)
+      if (!data) $this.data('modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option]()
+      else if (options.show) data.show()
+    })
+  }
+
+  $.fn.modal.defaults = {
+      backdrop: true
+    , keyboard: true
+    , show: true
+  }
+
+  $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+  * ============== */
+
+  $(function () {
+    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+      var $this = $(this), href
+        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+        , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
+
+      e.preventDefault()
+      $target.modal(option)
+    })
+  })
+
+}( window.jQuery )
+
+/* ============================================================
+ * bootstrap-dropdown.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* DROPDOWN CLASS DEFINITION
+  * ========================= */
+
+  var toggle = '[data-toggle="dropdown"]'
+    , Dropdown = function ( element ) {
+        var $el = $(element).on('click.dropdown.data-api', this.toggle)
+        $('html').on('click.dropdown.data-api', function () {
+          $el.parent().removeClass('open')
+        })
+      }
+
+  Dropdown.prototype = {
+
+    constructor: Dropdown
+
+  , toggle: function ( e ) {
+      var $this = $(this)
+        , selector = $this.attr('data-target')
+        , $parent
+        , isActive
+
+      if (!selector) {
+        selector = $this.attr('href')
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+      }
+
+      $parent = $(selector)
+      $parent.length || ($parent = $this.parent())
+
+      isActive = $parent.hasClass('open')
+
+      clearMenus()
+      !isActive && $parent.toggleClass('open')
+
+      return false
+    }
+
+  }
+
+  function clearMenus() {
+    $(toggle).parent().removeClass('open')
+  }
+
+
+  /* DROPDOWN PLUGIN DEFINITION
+   * ========================== */
+
+  $.fn.dropdown = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('dropdown')
+      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  /* APPLY TO STANDARD DROPDOWN ELEMENTS
+   * =================================== */
+
+  $(function () {
+    $('html').on('click.dropdown.data-api', clearMenus)
+    $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+  })
+
+}( window.jQuery )
+
+/* =============================================================
+ * bootstrap-scrollspy.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================== */
+
+!function ( $ ) {
+
+  "use strict"
+
+  /* SCROLLSPY CLASS DEFINITION
+   * ========================== */
+
+  function ScrollSpy( element, options) {
+    var process = $.proxy(this.process, this)
+      , $element = $(element).is('body') ? $(window) : $(element)
+      , href
+    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+    this.$scrollElement = $element.on('scroll.scroll.data-api', process)
+    this.selector = (this.options.target
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+      || '') + ' .nav li > a'
+    this.$body = $('body').on('click.scroll.data-api', this.selector, process)
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.prototype = {
+
+      constructor: ScrollSpy
+
+    , refresh: function () {
+        this.targets = this.$body
+          .find(this.selector)
+          .map(function () {
+            var href = $(this).attr('href')
+            return /^#\w/.test(href) && $(href).length ? href : null
+          })
+
+        this.offsets = $.map(this.targets, function (id) {
+          return $(id).position().top
+        })
+      }
+
+    , process: function () {
+        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+          , offsets = this.offsets
+          , targets = this.targets
+          , activeTarget = this.activeTarget
+          , i
+
+        for (i = offsets.length; i--;) {
+          activeTarget != targets[i]
+            && scrollTop >= offsets[i]
+            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+            && this.activate( targets[i] )
+        }
+      }
+
+    , activate: function (target) {
+        var active
+
+        this.activeTarget = target
+
+        this.$body
+          .find(this.selector).parent('.active')
+          .removeClass('active')
+
+        active = this.$body
+          .find(this.selector + '[href="' + target + '"]')
+          .parent('li')
+          .addClass('active')
+
+        if ( active.parent('.dropdown-menu') )  {
+          active.closest('li.dropdown').addClass('active')
+        }
+      }
+
+  }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+  * =========================== */
+
+  $.fn.scrollspy = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('scrollspy')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+  $.fn.scrollspy.defaults = {
+    offset: 10
+  }
+
+
+ /* SCROLLSPY DATA-API
+  * ================== */
+
+  $(function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      $spy.scrollspy($spy.data())
+    })
+  })
+
+}( window.jQuery )
+
+/* ========================================================
+ * bootstrap-tab.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* TAB CLASS DEFINITION
+  * ==================== */
+
+  var Tab = function ( element ) {
+    this.element = $(element)
+  }
+
+  Tab.prototype = {
+
+    constructor: Tab
+
+  , show: function () {
+      var $this = this.element
+        , $ul = $this.closest('ul:not(.dropdown-menu)')
+        , selector = $this.attr('data-target')
+        , previous
+        , $target
+
+      if (!selector) {
+        selector = $this.attr('href')
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+      }
+
+      if ( $this.parent('li').hasClass('active') ) return
+
+      previous = $ul.find('.active a').last()[0]
+
+      $this.trigger({
+        type: 'show'
+      , relatedTarget: previous
+      })
+
+      $target = $(selector)
+
+      this.activate($this.parent('li'), $ul)
+      this.activate($target, $target.parent(), function () {
+        $this.trigger({
+          type: 'shown'
+        , relatedTarget: previous
+        })
+      })
+    }
+
+  , activate: function ( element, container, callback) {
+      var $active = container.find('> .active')
+        , transition = callback
+            && $.support.transition
+            && $active.hasClass('fade')
+
+      function next() {
+        $active
+          .removeClass('active')
+          .find('> .dropdown-menu > .active')
+          .removeClass('active')
+
+        element.addClass('active')
+
+        if (transition) {
+          element[0].offsetWidth // reflow for transition
+          element.addClass('in')
+        } else {
+          element.removeClass('fade')
+        }
+
+        if ( element.parent('.dropdown-menu') ) {
+          element.closest('li.dropdown').addClass('active')
+        }
+
+        callback && callback()
+      }
+
+      transition ?
+        $active.one($.support.transition.end, next) :
+        next()
+
+      $active.removeClass('in')
+    }
+  }
+
+
+ /* TAB PLUGIN DEFINITION
+  * ===================== */
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('tab')
+      if (!data) $this.data('tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+  * ============ */
+
+  $(function () {
+    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+      e.preventDefault()
+      $(this).tab('show')
+    })
+  })
+
+}( window.jQuery )
+
+/* ===========================================================
+ * bootstrap-tooltip.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+!function( $ ) {
+
+  "use strict"
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+  * =============================== */
+
+  var Tooltip = function ( element, options ) {
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.prototype = {
+
+    constructor: Tooltip
+
+  , init: function ( type, element, options ) {
+      var eventIn
+        , eventOut
+
+      this.type = type
+      this.$element = $(element)
+      this.options = this.getOptions(options)
+      this.enabled = true
+
+      if (this.options.trigger != 'manual') {
+        eventIn  = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+        this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
+      }
+
+      this.options.selector ?
+        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+        this.fixTitle()
+    }
+
+  , getOptions: function ( options ) {
+      options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+      if (options.delay && typeof options.delay == 'number') {
+        options.delay = {
+          show: options.delay
+        , hide: options.delay
+        }
+      }
+
+      return options
+    }
+
+  , enter: function ( e ) {
+      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+      if (!self.options.delay || !self.options.delay.show) {
+        self.show()
+      } else {
+        self.hoverState = 'in'
+        setTimeout(function() {
+          if (self.hoverState == 'in') {
+            self.show()
+          }
+        }, self.options.delay.show)
+      }
+    }
+
+  , leave: function ( e ) {
+      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+      if (!self.options.delay || !self.options.delay.hide) {
+        self.hide()
+      } else {
+        self.hoverState = 'out'
+        setTimeout(function() {
+          if (self.hoverState == 'out') {
+            self.hide()
+          }
+        }, self.options.delay.hide)
+      }
+    }
+
+  , show: function () {
+      var $tip
+        , inside
+        , pos
+        , actualWidth
+        , actualHeight
+        , placement
+        , tp
+
+      if (this.hasContent() && this.enabled) {
+        $tip = this.tip()
+        this.setContent()
+
+        if (this.options.animation) {
+          $tip.addClass('fade')
+        }
+
+        placement = typeof this.options.placement == 'function' ?
+          this.options.placement.call(this, $tip[0], this.$element[0]) :
+          this.options.placement
+
+        inside = /in/.test(placement)
+
+        $tip
+          .remove()
+          .css({ top: 0, left: 0, display: 'block' })
+          .appendTo(inside ? this.$element : document.body)
+
+        pos = this.getPosition(inside)
+
+        actualWidth = $tip[0].offsetWidth
+        actualHeight = $tip[0].offsetHeight
+
+        switch (inside ? placement.split(' ')[1] : placement) {
+          case 'bottom':
+            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+            break
+          case 'top':
+            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+            break
+          case 'left':
+            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+            break
+          case 'right':
+            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+            break
+        }
+
+        $tip
+          .css(tp)
+          .addClass(placement)
+          .addClass('in')
+      }
+    }
+
+  , setContent: function () {
+      var $tip = this.tip()
+      $tip.find('.tooltip-inner').html(this.getTitle())
+      $tip.removeClass('fade in top bottom left right')
+    }
+
+  , hide: function () {
+      var that = this
+        , $tip = this.tip()
+
+      $tip.removeClass('in')
+
+      function removeWithAnimation() {
+        var timeout = setTimeout(function () {
+          $tip.off($.support.transition.end).remove()
+        }, 500)
+
+        $tip.one($.support.transition.end, function () {
+          clearTimeout(timeout)
+          $tip.remove()
+        })
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        removeWithAnimation() :
+        $tip.remove()
+    }
+
+  , fixTitle: function () {
+      var $e = this.$element
+      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+        $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+      }
+    }
+
+  , hasContent: function () {
+      return this.getTitle()
+    }
+
+  , getPosition: function (inside) {
+      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+        width: this.$element[0].offsetWidth
+      , height: this.$element[0].offsetHeight
+      })
+    }
+
+  , getTitle: function () {
+      var title
+        , $e = this.$element
+        , o = this.options
+
+      title = $e.attr('data-original-title')
+        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+      title = title.toString().replace(/(^\s*|\s*$)/, "")
+
+      return title
+    }
+
+  , tip: function () {
+      return this.$tip = this.$tip || $(this.options.template)
+    }
+
+  , validate: function () {
+      if (!this.$element[0].parentNode) {
+        this.hide()
+        this.$element = null
+        this.options = null
+      }
+    }
+
+  , enable: function () {
+      this.enabled = true
+    }
+
+  , disable: function () {
+      this.enabled = false
+    }
+
+  , toggleEnabled: function () {
+      this.enabled = !this.enabled
+    }
+
+  , toggle: function () {
+      this[this.tip().hasClass('in') ? 'hide' : 'show']()
+    }
+
+  }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+  * ========================= */
+
+  $.fn.tooltip = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('tooltip')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+  $.fn.tooltip.defaults = {
+    animation: true
+  , delay: 0
+  , selector: false
+  , placement: 'top'
+  , trigger: 'hover'
+  , title: ''
+  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+  }
+
+}( window.jQuery )
+
+/* ===========================================================
+ * bootstrap-popover.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function( $ ) {
+
+ "use strict"
+
+  var Popover = function ( element, options ) {
+    this.init('popover', element, options)
+  }
+
+  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+     ========================================== */
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+    constructor: Popover
+
+  , setContent: function () {
+      var $tip = this.tip()
+        , title = this.getTitle()
+        , content = this.getContent()
+
+      $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
+      $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
+
+      $tip.removeClass('fade top bottom left right in')
+    }
+
+  , hasContent: function () {
+      return this.getTitle() || this.getContent()
+    }
+
+  , getContent: function () {
+      var content
+        , $e = this.$element
+        , o = this.options
+
+      content = $e.attr('data-content')
+        || (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
+
+      content = content.toString().replace(/(^\s*|\s*$)/, "")
+
+      return content
+    }
+
+  , tip: function() {
+      if (!this.$tip) {
+        this.$tip = $(this.options.template)
+      }
+      return this.$tip
+    }
+
+  })
+
+
+ /* POPOVER PLUGIN DEFINITION
+  * ======================= */
+
+  $.fn.popover = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('popover')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.popover.Constructor = Popover
+
+  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+    placement: 'right'
+  , content: ''
+  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
+  })
+
+}( window.jQuery )
+
+/* ==========================================================
+ * bootstrap-alert.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* ALERT CLASS DEFINITION
+  * ====================== */
+
+  var dismiss = '[data-dismiss="alert"]'
+    , Alert = function ( el ) {
+        $(el).on('click', dismiss, this.close)
+      }
+
+  Alert.prototype = {
+
+    constructor: Alert
+
+  , close: function ( e ) {
+      var $this = $(this)
+        , selector = $this.attr('data-target')
+        , $parent
+
+      if (!selector) {
+        selector = $this.attr('href')
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+      }
+
+      $parent = $(selector)
+      $parent.trigger('close')
+
+      e && e.preventDefault()
+
+      $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+      $parent.removeClass('in')
+
+      function removeElement() {
+        $parent.remove()
+        $parent.trigger('closed')
+      }
+
+      $.support.transition && $parent.hasClass('fade') ?
+        $parent.on($.support.transition.end, removeElement) :
+        removeElement()
+    }
+
+  }
+
+
+ /* ALERT PLUGIN DEFINITION
+  * ======================= */
+
+  $.fn.alert = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('alert')
+      if (!data) $this.data('alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+  * ============== */
+
+  $(function () {
+    $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+  })
+
+}( window.jQuery )
+
+/* ============================================================
+ * bootstrap-button.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+  "use strict"
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+  * ============================== */
+
+  var Button = function ( element, options ) {
+    this.$element = $(element)
+    this.options = $.extend({}, $.fn.button.defaults, options)
+  }
+
+  Button.prototype = {
+
+      constructor: Button
+
+    , setState: function ( state ) {
+        var d = 'disabled'
+          , $el = this.$element
+          , data = $el.data()
+          , val = $el.is('input') ? 'val' : 'html'
+
+        state = state + 'Text'
+        data.resetText || $el.data('resetText', $el[val]())
+
+        $el[val](data[state] || this.options[state])
+
+        // push to event loop to allow forms to submit
+        setTimeout(function () {
+          state == 'loadingText' ?
+            $el.addClass(d).attr(d, d) :
+            $el.removeClass(d).removeAttr(d)
+        }, 0)
+      }
+
+    , toggle: function () {
+        var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
+
+        $parent && $parent
+          .find('.active')
+          .removeClass('active')
+
+        this.$element.toggleClass('active')
+      }
+
+  }
+
+
+ /* BUTTON PLUGIN DEFINITION
+  * ======================== */
+
+  $.fn.button = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('button')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('button', (data = new Button(this, options)))
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  $.fn.button.defaults = {
+    loadingText: 'loading...'
+  }
+
+  $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+  * =============== */
+
+  $(function () {
+    $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+      $(e.target).button('toggle')
+    })
+  })
+
+}( window.jQuery )
+
+/* =============================================================
+ * bootstrap-collapse.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+  "use strict"
+
+  var Collapse = function ( element, options ) {
+  	this.$element = $(element)
+    this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+    if (this.options["parent"]) {
+      this.$parent = $(this.options["parent"])
+    }
+
+    this.options.toggle && this.toggle()
+  }
+
+  Collapse.prototype = {
+
+    constructor: Collapse
+
+  , dimension: function () {
+      var hasWidth = this.$element.hasClass('width')
+      return hasWidth ? 'width' : 'height'
+    }
+
+  , show: function () {
+      var dimension = this.dimension()
+        , scroll = $.camelCase(['scroll', dimension].join('-'))
+        , actives = this.$parent && this.$parent.find('.in')
+        , hasData
+
+      if (actives && actives.length) {
+        hasData = actives.data('collapse')
+        actives.collapse('hide')
+        hasData || actives.data('collapse', null)
+      }
+
+      this.$element[dimension](0)
+      this.transition('addClass', 'show', 'shown')
+      this.$element[dimension](this.$element[0][scroll])
+
+    }
+
+  , hide: function () {
+      var dimension = this.dimension()
+      this.reset(this.$element[dimension]())
+      this.transition('removeClass', 'hide', 'hidden')
+      this.$element[dimension](0)
+    }
+
+  , reset: function ( size ) {
+      var dimension = this.dimension()
+
+      this.$element
+        .removeClass('collapse')
+        [dimension](size || 'auto')
+        [0].offsetWidth
+
+      this.$element.addClass('collapse')
+    }
+
+  , transition: function ( method, startEvent, completeEvent ) {
+      var that = this
+        , complete = function () {
+            if (startEvent == 'show') that.reset()
+            that.$element.trigger(completeEvent)
+          }
+
+      this.$element
+        .trigger(startEvent)
+        [method]('in')
+
+      $.support.transition && this.$element.hasClass('collapse') ?
+        this.$element.one($.support.transition.end, complete) :
+        complete()
+  	}
+
+  , toggle: function () {
+      this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  	}
+
+  }
+
+  /* COLLAPSIBLE PLUGIN DEFINITION
+  * ============================== */
+
+  $.fn.collapse = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('collapse')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.defaults = {
+    toggle: true
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+  * ==================== */
+
+  $(function () {
+    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+      var $this = $(this), href
+        , target = $this.attr('data-target')
+          || e.preventDefault()
+          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+        , option = $(target).data('collapse') ? 'toggle' : $this.data()
+      $(target).collapse(option)
+    })
+  })
+
+}( window.jQuery )
+
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+ /* CAROUSEL CLASS DEFINITION
+  * ========================= */
+
+  var Carousel = function (element, options) {
+    this.$element = $(element)
+    this.options = $.extend({}, $.fn.carousel.defaults, options)
+    this.options.slide && this.slide(this.options.slide)
+  }
+
+  Carousel.prototype = {
+
+    cycle: function () {
+      this.interval = setInterval($.proxy(this.next, this), this.options.interval)
+      return this
+    }
+
+  , to: function (pos) {
+      var $active = this.$element.find('.active')
+        , children = $active.parent().children()
+        , activePos = children.index($active)
+        , that = this
+
+      if (pos > (children.length - 1) || pos < 0) return
+
+      if (this.sliding) {
+        return this.$element.one('slid', function () {
+          that.to(pos)
+        })
+      }
+
+      if (activePos == pos) {
+        return this.pause().cycle()
+      }
+
+      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+    }
+
+  , pause: function () {
+      clearInterval(this.interval)
+      return this
+    }
+
+  , next: function () {
+      if (this.sliding) return
+      return this.slide('next')
+    }
+
+  , prev: function () {
+      if (this.sliding) return
+      return this.slide('prev')
+    }
+
+  , slide: function (type, next) {
+      var $active = this.$element.find('.active')
+        , $next = next || $active[type]()
+        , isCycling = this.interval
+        , direction = type == 'next' ? 'left' : 'right'
+        , fallback  = type == 'next' ? 'first' : 'last'
+        , that = this
+
+      this.sliding = true
+
+      isCycling && this.pause()
+
+      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+      if (!$.support.transition && this.$element.hasClass('slide')) {
+        this.$element.trigger('slide')
+        $active.removeClass('active')
+        $next.addClass('active')
+        this.sliding = false
+        this.$element.trigger('slid')
+      } else {
+        $next.addClass(type)
+        $next[0].offsetWidth // force reflow
+        $active.addClass(direction)
+        $next.addClass(direction)
+        this.$element.trigger('slide')
+        this.$element.one($.support.transition.end, function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () { that.$element.trigger('slid') }, 0)
+        })
+      }
+
+      isCycling && this.cycle()
+
+      return this
+    }
+
+  }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+  * ========================== */
+
+  $.fn.carousel = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('carousel')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (typeof option == 'string' || (option = options.slide)) data[option]()
+      else data.cycle()
+    })
+  }
+
+  $.fn.carousel.defaults = {
+    interval: 5000
+  }
+
+  $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+  * ================= */
+
+  $(function () {
+    $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+      var $this = $(this), href
+        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+        , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+      $target.carousel(options)
+      e.preventDefault()
+    })
+  })
+
+}( window.jQuery )
+
+/* =============================================================
+ * bootstrap-typeahead.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+  "use strict"
+
+  var Typeahead = function ( element, options ) {
+    this.$element = $(element)
+    this.options = $.extend({}, $.fn.typeahead.defaults, options)
+    this.matcher = this.options.matcher || this.matcher
+    this.sorter = this.options.sorter || this.sorter
+    this.highlighter = this.options.highlighter || this.highlighter
+    this.$menu = $(this.options.menu).appendTo('body')
+    this.source = this.options.source
+    this.shown = false
+    this.listen()
+  }
+
+  Typeahead.prototype = {
+
+    constructor: Typeahead
+
+  , select: function () {
+      var val = this.$menu.find('.active').attr('data-value')
+      this.$element.val(val)
+      return this.hide()
+    }
+
+  , show: function () {
+      var pos = $.extend({}, this.$element.offset(), {
+        height: this.$element[0].offsetHeight
+      })
+
+      this.$menu.css({
+        top: pos.top + pos.height
+      , left: pos.left
+      })
+
+      this.$menu.show()
+      this.shown = true
+      return this
+    }
+
+  , hide: function () {
+      this.$menu.hide()
+      this.shown = false
+      return this
+    }
+
+  , lookup: function (event) {
+      var that = this
+        , items
+        , q
+
+      this.query = this.$element.val()
+
+      if (!this.query) {
+        return this.shown ? this.hide() : this
+      }
+
+      items = $.grep(this.source, function (item) {
+        if (that.matcher(item)) return item
+      })
+
+      items = this.sorter(items)
+
+      if (!items.length) {
+        return this.shown ? this.hide() : this
+      }
+
+      return this.render(items.slice(0, this.options.items)).show()
+    }
+
+  , matcher: function (item) {
+      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+    }
+
+  , sorter: function (items) {
+      var beginswith = []
+        , caseSensitive = []
+        , caseInsensitive = []
+        , item
+
+      while (item = items.shift()) {
+        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+        else if (~item.indexOf(this.query)) caseSensitive.push(item)
+        else caseInsensitive.push(item)
+      }
+
+      return beginswith.concat(caseSensitive, caseInsensitive)
+    }
+
+  , highlighter: function (item) {
+      return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
+        return '<strong>' + match + '</strong>'
+      })
+    }
+
+  , render: function (items) {
+      var that = this
+
+      items = $(items).map(function (i, item) {
+        i = $(that.options.item).attr('data-value', item)
+        i.find('a').html(that.highlighter(item))
+        return i[0]
+      })
+
+      items.first().addClass('active')
+      this.$menu.html(items)
+      return this
+    }
+
+  , next: function (event) {
+      var active = this.$menu.find('.active').removeClass('active')
+        , next = active.next()
+
+      if (!next.length) {
+        next = $(this.$menu.find('li')[0])
+      }
+
+      next.addClass('active')
+    }
+
+  , prev: function (event) {
+      var active = this.$menu.find('.active').removeClass('active')
+        , prev = active.prev()
+
+      if (!prev.length) {
+        prev = this.$menu.find('li').last()
+      }
+
+      prev.addClass('active')
+    }
+
+  , listen: function () {
+      this.$element
+        .on('blur',     $.proxy(this.blur, this))
+        .on('keypress', $.proxy(this.keypress, this))
+        .on('keyup',    $.proxy(this.keyup, this))
+
+      if ($.browser.webkit || $.browser.msie) {
+        this.$element.on('keydown', $.proxy(this.keypress, this))
+      }
+
+      this.$menu
+        .on('click', $.proxy(this.click, this))
+        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+    }
+
+  , keyup: function (e) {
+      e.stopPropagation()
+      e.preventDefault()
+
+      switch(e.keyCode) {
+        case 40: // down arrow
+        case 38: // up arrow
+          break
+
+        case 9: // tab
+        case 13: // enter
+          if (!this.shown) return
+          this.select()
+          break
+
+        case 27: // escape
+          this.hide()
+          break
+
+        default:
+          this.lookup()
+      }
+
+  }
+
+  , keypress: function (e) {
+      e.stopPropagation()
+      if (!this.shown) return
+
+      switch(e.keyCode) {
+        case 9: // tab
+        case 13: // enter
+        case 27: // escape
+          e.preventDefault()
+          break
+
+        case 38: // up arrow
+          e.preventDefault()
+          this.prev()
+          break
+
+        case 40: // down arrow
+          e.preventDefault()
+          this.next()
+          break
+      }
+    }
+
+  , blur: function (e) {
+      var that = this
+      e.stopPropagation()
+      e.preventDefault()
+      setTimeout(function () { that.hide() }, 150)
+    }
+
+  , click: function (e) {
+      e.stopPropagation()
+      e.preventDefault()
+      this.select()
+    }
+
+  , mouseenter: function (e) {
+      this.$menu.find('.active').removeClass('active')
+      $(e.currentTarget).addClass('active')
+    }
+
+  }
+
+
+  /* TYPEAHEAD PLUGIN DEFINITION
+   * =========================== */
+
+  $.fn.typeahead = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('typeahead')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.typeahead.defaults = {
+    source: []
+  , items: 8
+  , menu: '<ul class="typeahead dropdown-menu"></ul>'
+  , item: '<li><a href="#"></a></li>'
+  }
+
+  $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+  * ================== */
+
+  $(function () {
+    $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+      var $this = $(this)
+      if ($this.data('typeahead')) return
+      e.preventDefault()
+      $this.typeahead($this.data())
+    })
+  })
+
+}( window.jQuery )
diff --git a/doc/6.0.x/resources/custom.css b/doc/6.0.x/resources/custom.css
new file mode 100644
index 0000000..21ea222
--- /dev/null
+++ b/doc/6.0.x/resources/custom.css
@@ -0,0 +1,175 @@
+/*
+ Sections padding customizations.
+*/
+body {
+	background-color: #fff;
+	width: 1200px;
+	margin: 0 auto;
+	padding-bottom: 30px;
+	color: #383838;
+}
+
+@media (max-width : 1224px) {	
+	body {
+		background-color: #fff;
+	width: 690px;
+	margin: 0 auto;
+	padding-bottom: 30px;
+	color: #383838;
+}
+	
+img {
+	max-width: 70%;
+	}
+}
+
+a:hover {
+	color: #383838;
+}
+
+h1,h2,h3,h4,h5 {
+	padding: 12px 0;
+	color: #000;
+}
+
+p,dl {
+	
+}
+
+ul,ol {
+	
+}
+
+ul ul {
+	padding-left: 15px;
+}
+
+li {
+	line-height: 22px;
+}
+
+
+ol ol {
+	padding-left: 20px;
+}
+
+ol {
+	margin: 0 0 30px 0;
+}
+
+table {
+	margin-left: 50px;
+}
+
+img {
+	box-shadow: 0 2px 6px #999;
+	margin: 1.5em auto 3em auto;
+	display: block;
+}
+
+pre {
+	left: 50px;
+	width: 90%;
+	position: relative;
+}
+
+/*
+ Color customizations.
+*/
+td,th {
+	border: 1px solid #ddd;
+}
+
+.toc {
+	margin: 10px 0;
+	padding: 10px 30px;
+	border: 1px solid #ddd;
+}
+
+ol li {
+	
+}
+
+code,pre {
+	color: #25587E;
+}
+
+/*
+ Welcome page & header customizations.
+*/
+#header {
+	width: inherit;
+	height: 70px;;
+	padding: 20px 0 0 0;
+	margin-bottom: 50px;
+}
+
+.clear {
+	clear: both;
+}
+
+#logo {
+	position: relative;
+	background: url("images/logo.png") no-repeat;
+	display: block;
+	height: 70px;
+	width: 229px;
+}
+
+#logo img {
+	width: 190px;
+	height: auto;
+	box-shadow: none !important;
+	border: none;
+	margin: 0 !important;
+}
+
+.visit a {
+	display: block;
+	width: 180px;
+	height: 35px;
+	text-align: center;
+	color: #fff;
+	background-color: #7269a4;
+	font-size: 14px;
+	margin: 30px 0 0 0;
+	line-height: 35px;
+	font-weight: bold;
+	letter-spacing: 1px;
+}
+
+.visit a:hover {
+	background-color: #be1a78;
+}
+
+.col1,.col2 {
+	display: 0;
+	margin: 20px 0;
+	padding: 0;
+	border: none;
+}
+
+.col1 {
+	width: 40%;
+}
+
+.col2 {
+	width: 60%;
+}
+
+.left {
+	float: left !important;
+}
+
+.right {
+	float: right !important;
+}
+
+code {
+  background-color: #fafafc !important;
+  border: none !important;
+}
+
+.label-danger {
+  background-color: #d9534f;
+}
\ No newline at end of file
diff --git a/doc/6.0.x/resources/images/logo.png b/doc/6.0.x/resources/images/logo.png
new file mode 100644
index 0000000..003ec55
--- /dev/null
+++ b/doc/6.0.x/resources/images/logo.png
Binary files differ
diff --git a/doc/6.0.x/resources/images/screenshot.png b/doc/6.0.x/resources/images/screenshot.png
new file mode 100644
index 0000000..322280b
--- /dev/null
+++ b/doc/6.0.x/resources/images/screenshot.png
Binary files differ
diff --git a/doc/6.0.x/specifier/Sirius Specifier Manual.html b/doc/6.0.x/specifier/Sirius Specifier Manual.html
new file mode 100644
index 0000000..6f79e0f
--- /dev/null
+++ b/doc/6.0.x/specifier/Sirius Specifier Manual.html
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Sirius Specifier Manual</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusSpecifierManual">Sirius Specifier Manual</h1>
+		<p>This document describes how to create your own designers using Sirius. To learn how to 
+			<strong>
+				<em>use</em>
+			</strong> existing designers, refer to the 
+			<a href="../user/Sirius%20User%20Manual.html">Sirius User Manual</a> .
+		</p>
+		<p>You will find the following sections:</p>
+		<ul>
+			<li>
+				<a href="general/Specifying_Viewpoints.html">
+					<strong>Viewpoints</strong>
+				</a> gives a general overview of what viewpoints are and how they are specified, tested and deployed.
+			</li>
+			<li>The next sections are specific to a kind of representation supported by Sirius:
+				<ul>
+					<li>
+						<a href="diagrams/Diagrams.html">
+							<strong>Diagrams</strong>
+						</a> describes how to specify general graphical modelers.
+					</li>
+					<li>
+						<a href="sequences/Sequence%20Diagrams.html">
+							<strong>Sequence Diagrams</strong>
+						</a> are a special case of diagram with many peculiarities and specific kinds of tools, which are detailed here.
+					</li>
+					<li>
+						<a href="tables/Tables.html">
+							<strong>Tables</strong>
+						</a> covers how to specify both edition tables and matrix-like cross-tables.
+					</li>
+					<li>
+						<a href="trees/Trees.html">
+							<strong>Trees</strong>
+						</a> shows how to create tree-like modelers for a hierarchical view of data.
+					</li>
+					<li>
+						<a href="properties/Properties_View_Description.html">
+							<strong>Properties View</strong>
+						</a> shows how to define custom properties views for your modelers.
+					</li>
+					<li>
+						<a href="workflows/Workflows.html">
+							<strong>Workflows</strong>
+						</a> (
+						<b>EXPERIMENTAL</b>) shows how to define in the aird editor a custom workflow improving usability of your modeling environment.
+					</li>
+				</ul>
+			</li>
+			<li>
+				<a href="general/Model_Operations.html">
+					<strong>Model Operations</strong>
+				</a> describes the small language which can be used throughout 
+				<a href="../Glossary.html#VSM">
+					<em>Viewpoint Specification Models</em>
+				</a> to describe behavior (for example for tools).
+			</li>
+			<li>
+				<a href="general/Colors.html">
+					<strong>Colors</strong>
+				</a> explains how colors can be specified for all kinds of representations.
+			</li>
+			<li>
+				<a href="general/Writing_Queries.html">
+					<strong>Queries and Interpreted Expressions</strong>
+				</a> explains the general rules to follow to write the expressions used inside 
+				<a href="../Glossary.html#VSM">
+					<em>Viewpoint Specification Models</em>
+				</a>, and the various languages supported.
+			</li>
+		</ul>
+		<p>For more information on Sirius, please refer to the 
+			<a href="../user/Sirius%20User%20Manual.html">
+				<strong>Sirius User Manual</strong>
+			</a>, which describes how end-users can use the designers you created.
+		</p>
+		<p>In addition to this documentation, see also the <a href="http://www.eclipse.org/sirius" target="_blank">main project site</a>: and the <a href="http://wiki.eclipse.org/Sirius" target="_blank">top-level wiki page</a>.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/cheatsheets/CreatingViewpointSpecification.xml b/doc/6.0.x/specifier/cheatsheets/CreatingViewpointSpecification.xml
new file mode 100644
index 0000000..fa34009
--- /dev/null
+++ b/doc/6.0.x/specifier/cheatsheets/CreatingViewpointSpecification.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Creating a viewpoint specification project">
+  <intro>
+    <description>Learn how to create a minimal working viewpoint specification project that can be enriched later.</description>
+  </intro>
+  <item title="Create the project" dialog="true" skip="false">
+    <description>First, you need to create a Viewpoint Specification Project.</description>
+    
+    <subitem label="Go to the 'Sirius' perspective." />
+    <subitem label="In the 'Model Explorer' view, right-click and select New &gt; Viewpoint Specification Project." />
+    <subitem label="Enter the name of the new project and hit 'Next'. The convention is to use the name of the main domain model&apos;s plug-in, followed by '.design'." />
+    <subitem label="On the next page, enter the name of the Viewpoint Specification Model file, and then 'Finish'." />
+  </item>
+  <item title="Fill the Viewpoint Specification Model" dialog="true" skip="false">
+    <description>
+      The project created is a complete Eclipse plug-in project, and contains an empty Viewpoint Specification Model. Refer to the Sirius Specifier Manual to learn of to specify viewpoints and representations. The basic idea is to:
+    </description>
+    <subitem label="Create one or more Viewpoint element inside the VSM." />
+    <subitem label="Inside each Viewpoint, create one or more representation descriptions, for example a diagram description." />
+    <subitem label="Define the structure of your representation, i.e. what elements should be visible and how should they be organized." />
+    <subitem label="Define the style of your representation, i.e. for each kind of element it will show, what shape, color, etc. should it have." />
+    <subitem label="Finally, define the behavior of your representation by associating tools to each kind of element." />
+  </item>
+  <item title="Test and refine your representations" dialog="true" skip="false">
+    <description>
+      Once you have a basic representation defined, even if it is just a skeleton with no behavior, start to test it and refine the definition. In most cases, it is possible to test your VSMs dynamically, with no need to compile or deploy anything.
+    </description>
+    <subitem label="In the same workspace in which you are defining your VSM, create a Modeling project with a sample domain model." />
+    <subitem label="On the Modeling project, enable the Viewpoint which you are currently specifying." />
+    <subitem label="Create an instance of the representation your are developing." />
+    <subitem label="Keep both the representation and the VSM opened. When you change and save your VSM, the representation will automatically be updated to take the new, improved definition into account." />
+    <subitem label="Continue to develop your representation(s) interactively and interactively until you are satisfied. "/> 
+  </item>
+  <item title="Test your representation in deployed mode" dialog="true" skip="false">
+    <description>
+      When you are satisfied with your viewpoints and representations definitions, you can test them in a non-dynamic setting, closer to how your users will experience it.
+    </description>
+    <subitem label="Create a new 'Eclipse Application' launch configuration using the 'Run > Run Configurations...' menu." />
+    <subitem label="Run the launch configuration, and test your viewpoints." />
+  </item>
+  <item title="Deploy your viewpoints" dialog="true" skip="false">
+    <description>
+      When development is finished, you can build and deploy your Viewpoint Specification Project like any other Eclipse plug-in. Juste make sure the project's dependencies include everything you need, in particular the domain model plug-ins and the Sirius plug-ins which provide support for the query language(s) you used in your VSM.
+    </description>
+  </item>
+</cheatsheet>
diff --git a/doc/6.0.x/specifier/diagrams/Diagrams.html b/doc/6.0.x/specifier/diagrams/Diagrams.html
new file mode 100644
index 0000000..3e693bf
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/Diagrams.html
@@ -0,0 +1,1962 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Diagrams</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingDiagramEditors">Specifying Diagram Editors</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingDiagramEditors">Specifying Diagram Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#diagram_description">Diagram Description</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#layout">Layout Configuration</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#layers_graphical_elements">Layers and Graphical Elements</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#layers">Layers</a>
+							</li>
+							<li>
+								<a href="#graphical_elements">Graphical Elements and Mappings</a>
+							</li>
+							<li>
+								<a href="#nodes">Nodes</a>
+							</li>
+							<li>
+								<a href="#containers">Containers</a>
+							</li>
+							<li>
+								<a href="#bordered_nodes">Bordered Nodes</a>
+							</li>
+							<li>
+								<a href="#edges">Edges</a>
+							</li>
+							<li>
+								<a href="#decorations">Decorations</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#styling">Styling</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#conditional_styles">Conditional Styles</a>
+							</li>
+							<li>
+								<a href="#label_style">Label Properties</a>
+							</li>
+							<li>
+								<a href="#size">Size Properties</a>
+							</li>
+							<li>
+								<a href="#colors">Colors</a>
+							</li>
+							<li>
+								<a href="#authorizedsides">Authorized Sides</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#tools">Tools</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#tools_organization">Tools Organization</a>
+							</li>
+							<li>
+								<a href="#tools_specification">Tools Specification</a>
+							</li>
+							<li>
+								<a href="#tools_reference">Tools Reference</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#filters">Filters</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#mapping_filter">Mapping Filter</a>
+							</li>
+							<li>
+								<a href="#variable_filter">Variable Filter</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#validation">Validation Rules</a>
+					</li>
+					<li>
+						<a href="#extensibility">Diagram Extensibility Features</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#diagram_extension">Diagram Extensions</a>
+							</li>
+							<li>
+								<a href="#mapping_imports">Mapping Imports</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#customization">Diagram Styles Customization</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#enum_customization">Style Customization of an Enumerator property </a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius supports the definition of sophisticated graphical modelers, with support for many features like filters, layers, drag&#8217;n&#8217;drop, complex styling etc.</p>
+		<p>Diagrams support several kinds of graphical constructs: simple nodes, containers (which can contain other nodes or containers), lists, bordered nodes (nodes which appear on the side of other elements, typically to represent ports), and edges between all of these. Each kind of element supports a rich set of possible styles (shape and color).</p>
+		<p>As the specifier of Sirius diagrams, you have total control on how the elements in your semantic models are 
+			<em>represented</em> using the constructs provided by Sirius, and how they 
+			<em>behave</em>. In particular, this means the structure of the graphical elements shown on a diagram (which element contains which, how they are connected) does not have to match the &#8220;physical&#8221; structure of the semantic model being represented. The two are completely de-correlated, and you can choose to represent your semantic models in ways which make sense from various point of views.
+		</p>
+		<h2 id="diagram_description">Diagram Description</h2>
+		<p>Diagrams are configured by creating a 
+			<em>Diagram Description</em> element (inside a 
+			<em>Viewpoint</em>) and its sub-elements (which describe the layers, graphical elements and tools).
+		</p>
+		<p>Like many elements inside a 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>, 
+			<em>Diagram Description</em> have a mandatory 
+			<em>Id</em>, which should be unique and stable across revisions of the diagram specification, and an optional 
+			<em>Label</em> which is used for presentation purpose (i.e. it is the name visible to end-users). If no 
+			<em>Label</em> is specified, the 
+			<em>Id</em> is used for presentation. Note that changing the 
+			<em>Id</em> will break existing diagrams which were created using the previous version; changing the 
+			<em>Label</em> is safe.
+		</p>
+		<p>The mandatory 
+			<em>Domain Class</em> attribute is the type of semantic element which are represented by the diagram. In the 
+			<em>Model Explorer</em>, end-users will be able to create new instances of this diagram on semantic elements of this type (assuming the corresponding viewpoint is enabled in the 
+			<em>Modeling Project</em>). The syntax for the domain class name can be the basic name, like 
+			<code>Package</code>, a qualified name using name of the EMF EPackage which defines the type, like 
+			<code>uml::Package</code>, or a fully qualified URI like 
+			<code>http://www.eclipse.org/uml2/3.0.0/UML#//Package</code>.
+		</p>
+		<p>By default, new diagrams can be created on 
+			<em>any</em> instance of the 
+			<em>Domain Class</em>. You can use the 
+			<em>Precondition Expression</em> to change this. If such an expression is specified, it will be evaluated in the context of the semantic element the user has selected, and only if the expression returns 
+			<code>true</code> will the user be able to create a new diagram on this element.
+		</p>
+		<p>The default title for newly created diagram can be specified using the 
+			<em>Title expression</em> (
+			<em>Advanced</em> category), which is evaluated in the context of the semantic element on which the diagram is created, and should return a string. If the expression is not specified, the default title is the label of the diagram description (of its 
+			<em>Id</em> if no 
+			<em>Label</em> is set) prefixed with the string 
+			<code>"new "</code> (e.g. 
+			<code>new Package Contents</code>).
+		</p>
+		<p>It is recommended that the 
+			<em>Diagram Description</em> be explicitly associated with the meta-model(s) of the semantic elements it will represent. You can add referenced meta-models from different sources in the 
+			<em>Metamodels</em> property section of the 
+			<em>Diagram Description</em>. Sirius will work even without this association, but setting it explicitly will give you better feedback when validating your 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>.
+		</p>
+		<p>The 
+			<em>Initialization</em> and 
+			<em>Show on startup</em> flags control whether diagram instances are created and/or opened automatically without user intervention. If 
+			<em>Initialization</em> is set, then when the viewpoint which contains this diagram description is enabled, instances of this diagram description will be automatically created on all compatible semantic elements. If 
+			<em>Show on startup</em> is set, then when a modeling project is opened which contains instances of this diagram description, they will be opened: if only one such representation exist, it will be opened automatically; if there are more than one, a dialog box will appear to allow the user to select which one(s) to open. 
+			<strong>WARNING</strong>: Then 
+			<em>Initialization</em> flag can have a negative impact on performance: if it is set on a given diagram, then when the user enables the viewpoint which defines this diagram Sirius will attempt to find all possible elements in the semantic model on which it may be possible to create such a diagram. This can take a long time on big semantic models.
+		</p>
+		<p>If 
+			<em>Enable Popup Bars</em> flag is set, then when the end-user leaves the mouse pointer still on a diagram (or diagram element) for a small time, a 
+			<em>popup bar</em> will appear with shortcut buttons to all the tools which can be applied in this context. It can be useful to create elements without going to the palette to select tools, but it can also become visually distracting if too many tools are available in the popup bar.
+		</p>
+		<p>By default, diagrams are displayed with white background. In the 
+			<em>Background</em> property section of the 
+			<em>Diagram Description</em>, you can add either one of the pre-defined system colors or one which you have defined yourself in a 
+			<em>Users Color Palette</em>. See 
+			<a href="../general/Colors.html">the general section on colors</a> on colors for more details on dynamic and computed color of the 
+			<em>Users Color Palette</em>. Note that when dynamic/computed colors are re-computed because of model change for example, background color is refreshed.
+		</p>
+		<p>The content of the 
+			<em>Diagram Description</em> is mostly made of 
+			<a href="#graphical_elements">graphical elements mappings</a>, organized in 
+			<a href="#layers">layers</a>, and their associated 
+			<a href="#tools">tools</a>. In addition, it can also contain 
+			<a href="#validation">validation rules</a>, 
+			<a href="#filters">filters</a> and 
+			<a href="#layout">layout configuration</a> information.
+		</p>
+		<p>Note that the 
+			<em>Window Title</em> label and 
+			<em>Message</em> label are 
+			<a href="../general/Specifying_Viewpoints.html#translatable_messages">
+				<em>Translatable Messages</em>
+			</a> and can therefore be localized.
+		</p>
+		<h3 id="layout">Layout Configuration</h3>
+		<p>Sirius provides a default algorithm to perform an automatic layout of all the graphical elements on a diagram (excluding 
+			<a href="../../user/diagrams/Diagrams.html#diagram_element_pinning">pinned elements</a> ). If the default algorithm does not fit your needs, you can configure some parameters or request for alternate algorithms (currently only one) directly inside the VSM.
+		</p>
+		<p>The 
+			<em>Composite Layout</em> enables one to specify the 
+			<code>padding</code> between elements and the 
+			<code>direction</code> for the default algorithm.
+		</p>
+		<p>The 
+			<em>Ordered Tree Layout</em> enables one to lay out nodes as an ordered tree. The manner to retrieve children for each node should be specified.
+		</p>
+		<p>NOTE: these layout algorithms manage only nodes connected by edges, other nodes are layouted from left to right as usual.</p>
+		<p>Additional layout algorithms can be available if you have installed the ELK integration with Sirius. Please refers to the 
+			<a href="https://www.eclipse.org/elk/reference/algorithms.html">ELK documentation</a> if you want details about these algorithms. All these algorithms exclude pinned element from the layouting and shorten edges between border nodes in addition to their core algorithm. 
+		</p>
+		<p>If you need to go beyond that, you can provide your own layout algorithm programmatically (see the 
+			<a href="../../developer/Sirius%20Developer%20Manual.html">developer documentation</a> for details).
+		</p>
+		<h2 id="layers_graphical_elements">Layers and Graphical Elements</h2>
+		<p>This section describes how to specify the graphical elements which should appear on your diagram, and how to organize them.</p>
+		<h3 id="layers">Layers</h3>
+		<p>All the graphical elements and tools on a Sirius diagram are part of a 
+			<em>Layer</em>. Every diagram 
+			<em>must</em> have a default layer, which is always enabled, and zero or more 
+			<em>additional layers</em> that the end-user can enable or disable following the optional flag value. Note that the default layer is created at diagram creation. When a layer is enabled, all the graphical elements and tools it defines are also enabled.
+		</p>
+		<p>The elements which are defined in different layers can interact and reference themselves. For example, it is possible to define a type of edge (connection) between elements which are defined in different layers; the edges will only be visible if all the concerned layers are enabled: the ones which define the source graphical element, the one for the target graphical element, and the one for the edge itself.</p>
+		<p>Layers are defined directly inside the 
+			<em>Diagram Description</em> element. You must have exactly one 
+			<em>Default Layer</em> (whose name does not matter), and as many 
+			<em>Additional Layers</em> as you need. 
+		</p>
+		<ul>
+			<li>Additional layers have an 
+				<em>Optional</em> flag (unset by default) that specify whether the additional layer can be disabled (if true) or not by the end-user.
+			</li>
+			<li>The 
+				<em>Active by default</em> flag, if it set (unset by default), the layer will be automatically enabled when the user creates a new diagram of this type. This flag has no effect in the case where the optional flag is unset, the layer become mandatory and cannot be disabled by the end-user.
+			</li>
+		</ul>
+		<p>The 
+			<em>Label</em> (or 
+			<em>Id</em> if not label is set) of an optional layer is used in the drop-down menu available to users in the diagram&#8217;s tabbar, from which they can enable or disable them. Mandatory layers are not visible in this menu. The 
+			<em>Layers</em> can 
+			<em>contain</em> graphical elements and tools definitions (as described below), but they can also 
+			<em>reuse</em> tools and mappings (graphical elements definitions) which are defined in other layers using the 
+			<em>Reused Tools</em> and 
+			<em>Reused Mappings</em> in the 
+			<em>Advanced</em> category. If a layer 
+			<em>L1</em> reuses elements defined in another layer 
+			<em>L2</em>, these elements will be enabled whenever 
+			<em>L1</em> is enabled, even if 
+			<em>L2</em> is not. However if both 
+			<em>L1</em> and 
+			<em>L2</em> are enabled, the elements are enabled only once (i.e. graphical elements do not appear once for 
+			<em>L1</em> and once for 
+			<em>L2</em>).
+		</p>
+		<h4 id="Transientlayer">Transient layer</h4>
+		<p>A transient layer is a layer that contains only 
+			<em>Decoration Description</em> and/or tools.
+			<br/>When applying a transient layer, the diagram is 
+			<strong>never</strong> modified. Tools are displayed in the palette and decorations are refreshed in opened editors.
+		</p>
+		<p>Note that the 
+			<em>Active by default</em> flag have a different meaning for transient layer. If 
+			<em>Active by default</em> is set, the transient layer will be automatically enabled when the user 
+			<strong>opens</strong> a diagram (and not specially when he creates a new diagram).
+		</p>
+		<h3 id="graphical_elements">Graphical Elements and Mappings</h3>
+		<p>This section describes the different kinds of graphical elements supported on Sirius diagrams and the general principle of how they are specified inside the VSM, through the notion of 
+			<em>mapping</em>.
+		</p>
+		<p>
+			<strong>Graphical Vocabulary.</strong> Sirius diagrams can contain several different types of graphical elements, which are described inside the 
+			<em>Layer</em> elements. These are:
+		</p>
+		<ul>
+			<li>
+				<em>Nodes</em> for elements which can not contain other elements;
+			</li>
+			<li>
+				<em>Containers</em> for elements which can contain other elements, including other containers;
+			</li>
+			<li>
+				<em>List containers</em> (or just 
+				<em>Lists</em>), which are a special kind of containers. They present their direct sub-elements as a vertical list of text items (with an optional icon). List containers are not recursive.
+			</li>
+			<li>
+				<em>Region Container</em>, which are a special kind of containers. They present their direct sub-container as a vertical or horizontal stack of compartments also called 
+				<em>Regions</em> in Sirius. Region containers are not recursive and can not contain nodes as direct children.
+			</li>
+			<li>
+				<em>Region</em>, which are a special kind of container. They are compartments of a container, organized vertically or horizontally regarding the configuration of their parent Region container. They are 
+				<em>Containers</em> or 
+				<em>List Containers</em> but can not be themselves a Region container.
+			</li>
+			<li>
+				<em>Bordered nodes</em> are like normal nodes, but instead of appearing directly on the diagram or inside a container, they are placed on the border of another element (node, container, list, region container but not region). This is useful to represent things like communication ports.
+			</li>
+			<li>Finally, 
+				<em>Edges</em> are connections between a source and target element. The source and target element can be any of the other kind of graphical element mentioned above. It is also possible for the source or the target of an edge (but not both) to be another edge.
+			</li>
+		</ul>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Node.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Container.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_List_Container.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Bordered_Node.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Nodes</th>
+				<th>Containers</th>
+				<th>List Containers</th>
+				<th>BorderedNodes</th>
+			</tr>
+		</table>
+		<p id="mappings">
+			<strong>Mappings.</strong> All these graphical elements are described using the concept of a 
+			<em>mapping</em> (for example a 
+			<em>Node</em> mapping to describe a kind of nodes). A mapping is an element defined inside the VSM which identifies a sub-set of the elements in the semantic model and associates a graphical representation to them: it 
+			<em>maps</em> semantic elements onto some graphical notation. At runtime, each active mapping  (i.e. defined in a layer which is enabled) will produce zero or more graphical elements on the diagram, depending on how many semantic elements currently match the mapping&#8217;s definition. In the default functioning mode, whenever the semantic model changes Sirius will automatically re-compute which graphical elements should appear on the diagram according to the active mappings, and create or remove the necessary elements.
+		</p>
+		<p>You can think of the set of mappings defined in a diagram as a description of how to 
+			<em>project</em> the concepts in your semantic model onto the graphical language provided by Sirius (nodes, containers, edges...) according to the 
+			<em>viewpoint</em> you want the diagram to represent.
+		</p>
+		<p>
+			<strong>Mapping Definition.</strong> The mapping descriptions for all the different types of graphical elements share the same common principles:
+		</p>
+		<ul>
+			<li>Some of the elements of the semantic model are selected, using a combination of mapping configuration attributes (see below). These elements are called 
+				<em>targets</em>, and each one has a single graphical diagram element of this type representing it. 
+			</li>
+			<li>Each of these diagram elements is also associated to a set of 
+				<em>semantic elements</em>: model elements which are logically grouped together and include all the semantically relevant information for the node. By default, the only semantic element of a node is its target, but this can be overridden. This is useful if the meta-model is fine-grained and describes a single logical entity with a group of inter-related model elements: the graphical element will be represent a single 
+				<em>target</em> (the main semantic element), but you can also associate to it the other semantically related elements.
+			</li>
+			<li>The graphical aspect of the mapping is defined by a 
+				<em>style</em>. Sirius provides a rich set of possible styles, which are described later in this document.
+			</li>
+			<li>Finally, the behavior of the graphical element (how to create it, how it reacts to edition of its label, to drag and drop operations, etc.) are defined by 
+				<em>tools</em> associated to the mapping.
+			</li>
+		</ul>
+		<p>Each mapping is defined in a 
+			<em>context</em> in the VSM: either directly inside a layer or inside another mapping. At runtime, the corresponding 
+			<em>context element</em> would be (respectively) either the target semantic element of the diagram itself, or the target of an instance of the parent mapping. This context element is used as a starting point to determine which instances of a mapping should be created on the diagram:
+		</p>
+		<ol>
+			<li>First, the 
+				<em>Semantic Candidates Expression</em> of the mapping is evaluated, starting from the context element. It should return a set (possibly empty) of elements in the semantic model.
+			</li>
+			<li>This list of candidates is then filtered using the 
+				<em>Domain Class</em> specified in the mapping: only the candidates which are instance of the specified class are retained.
+			</li>
+			<li>Finally, the optional 
+				<em>Precondition Expression</em> of the mapping (in the 
+				<em>Advanced</em> category) is evaluated, once for each of the remaining candidate. It should return a boolean value. Only the candidates for which the predicate returns a true value are kept and will actually produce a graphical element on the diagram, with that element as its semantic target.
+			</li>
+		</ol>
+		<p>This order of evaluation should be kept in mind when specifying diagrams. In particular, to avoid performance issues you should:</p>
+		<ul>
+			<li>Limit the number of model elements with 
+				<em>Semantic Candidates Expression</em>.
+			</li>
+			<li>Avoid testing instances type in 
+				<em>Semantic Candidates Expression</em> (this will be done anyway when filtering the 
+				<em>Domain Class</em>).
+			</li>
+			<li>Use the most specific type in 
+				<em>Domain Class</em>.
+			</li>
+			<li>Avoid navigation and long computations in 
+				<em>Precondition Expression</em>.
+			</li>
+		</ul>
+		<p>
+			<strong>Associated Semantic Elements.</strong> To associate more semantic elements to a graphical element than just its semantic target, you can specify the 
+			<em>Associated Elements Expression</em> (in the 
+			<em>Advanced</em> category). It will be evaluated for each instance of the mapping in the context of the semantic target, and should return a set of semantic elements. These will be visible to the end-user in the 
+			<em>Properties</em> view when the graphical element is selected, and any change on one of these elements will trigger a refresh of the graphical element. This means that if you use properties of other elements than the target to compute an element&#8217;s label or conditional style (for example), you should make sure that these other elements appear in the 
+			<em>Associated Elements</em>, otherwise the label or style will not be properly refreshed when the elements are modified.
+		</p>
+		<p>
+			<strong>Synchronization.</strong> All mappings have a 
+			<em>Synchronization</em> parameter (in the 
+			<em>Advanced</em> category) which controls when instances of the mapping are created on the diagram. The possible values are:
+		</p>
+		<ul>
+			<li>
+				<em>Synchronized</em>: It means that when Sirius refreshes the diagram (either automatically or due to an explicit 
+				<em>Refresh</em> action from the user), it will ensure that exactly one instance of the mapping exists on the diagram for each compatible semantic target element (as defined by the mapping&#8217;s properties). In this mode, if a new semantic element compatible with the mapping is created (even by an action on another representation or a change in the semantic model&#8217;s file), the corresponding graphical element will automatically appear on the diagram. Symmetrically, if the semantic element of one of the mapping&#8217;s instances is deleted from the model, the graphical element (view) will disappear automatically.
+			</li>
+			<li>
+				<em>Not Synchronized</em>: In this mode, the graphical instances of the mapping are only created and deleted when explicitly requested by a tool (using the 
+				<em>Create View</em> and 
+				<em>Delete View</em> operations). It means that if a new semantic element compatible with the mapping is created, the corresponding view will not appear on the diagram by default. Symmetrically, if the semantic element of one of the mapping&#8217;s instances is deleted from the model, the graphical element (view) will not disappear automatically, but a red cross will appear on it to indicate it represents an element which does not exist anymore. An explicit 
+				<em>Refresh</em> operation removes these obsolete graphical elements, but will not create new ones. This mode is useful if you want the user to decide which parts of a big semantic model he wants to see: set the mapping to 
+				<em>Unsynchronized</em> and create specific tools to allow the user to reveal progressively the parts of the model which interest him.
+			</li>
+			<li>
+				<em>Unsynchronizable</em>: This is the default. This mode is similar to 
+				<em>Synchronized</em> be default, but gives some control to end-users: if they put the whole diagram in 
+				<em>Unsynchronized mode</em> (using the context menu on the diagram), all the diagram&#8217;s mappings which are 
+				<em>Unsynchronizable</em> will behave as if they were 
+				<em>Unsynchronized</em>. They will go back to a 
+				<em>Synchronized</em> behavior if the user disables the 
+				<em>Unsynchronized</em> mode.
+			</li>
+		</ul>
+		<p>
+			<strong>Mapping Imports.</strong> A mapping import is a feature which can be used to 
+			<em>specialize</em> (modify) a mapping defined somewhere else (in an other layer, an other graphical representation or an other viewpoint). It is available for Nodes, Containers and Edges. Although it can be used in normal diagram descriptions, its main use case is when defining 
+			<a href="#diagram_extension">diagram extensions</a>, so mapping imports are describe in 
+			<a href="#mapping_imports">their own section</a>.
+		</p>
+		<h3 id="nodes">Nodes</h3>
+		<p>A 
+			<em>Node</em> mapping is used to represent model elements graphically as atomic elements, i.e. elements which can not contain other elements. 
+			<em>Node</em> mappings can appear directly inside a layer description, in which case the node will appear directly on the diagram, or inside another element (for example a container). A node mapping which is defined inside another element can be either a 
+			<em>sub-node mapping</em>, in which case it will appear inside its parent (which must be a container), or a 
+			<em>bordered node mapping</em>, in which case it will appear on the border of its parent (which may be a container or a node, including another bordered node). Bordered node mappings are useful to represent ports.
+		</p>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Node.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Container.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_List_Container.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Graphical_Vocabulary_Bordered_Node.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Nodes on a diagram</th>
+				<th>Nodes in container</th>
+				<th>Nodes in containers displayed as lists</th>
+				<th>Nodes on borders</th>
+			</tr>
+		</table>
+		<p>The definition of a node mapping follows the general rules described 
+			<a href="#mappings">above</a> to determine the semantic elements for which a node should be created. All the properties available in the 
+			<em>Behavior</em> category of the 
+			<em>Node</em> mapping configuration allow you to see all the various tools, defined elsewhere in the VSM, which apply to this mapping.
+		</p>
+		<p>A node can not contain sub-nodes, but it can have 
+			<em>bordered nodes</em>, which are defined inside the node mapping (
+			<em>New Diagram Element &gt; Bordered Node</em>). You can also 
+			<em>reuse</em> node mappings defined elsewhere in the VSM using the 
+			<em>Reused Bordered Node Mappings</em> property in the 
+			<em>Import</em> category. The effect at runtime is the same as if you had created an equivalent 
+			<em>Bordered Node</em> mapping inside the node mapping.
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> Bordered Node Import
+			<br/></div>
+		</p>
+		<h4 id="node_styles">Node Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including conditional styles. This section only presents the aspects which are specific to nodes.
+		</p>
+		<p>For nodes you can use the following styles:</p>
+		<ul>
+			<li>
+				<em>Square</em>, 
+				<em>Diamond</em>, 
+				<em>Ellipse</em> to display basic shapes.
+			</li>
+			<li>
+				<em>Basic Shape</em> to represent nodes with predefined shapes provided with the runtime.
+			</li>
+			<li>
+				<em>Note</em> to represent nodes as a square with one folded corner.
+			</li>
+			<li>
+				<em>Gauge</em> to display gauges, for instance progress indicators.
+			</li>
+			<li>
+				<em>Image</em> to represent nodes with an image (from the workspace or from inside a plug-in).
+			</li>
+			<li>
+				<em>Custom Style</em> can be used when none of the predefined styles correspond to your need. Custom style are implemented in Java and use the 
+				<code>org.eclipse.sirius.diagram.ui.styleConfigurationProvider</code> extension point.
+			</li>
+		</ul>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Basic_Square.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Basic_Stroke.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Basic_Triangle.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Basic_Dot.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Basic_Ring.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Basic Shape Square</th>
+				<th>Basic Shape Stroke</th>
+				<th>Basic Shape Triangle</th>
+				<th>Basic Shape Dot</th>
+				<th>Basic Shape Ring</th>
+			</tr>
+		</table>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Square.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Diamond.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Ellipse.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Note.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Gauge.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Image.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Node_Style_Custom.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Square</th>
+				<th>Diamond</th>
+				<th>Ellipse</th>
+				<th>Note</th>
+				<th>Gauge</th>
+				<th>Image</th>
+				<th>Custom</th>
+			</tr>
+		</table>
+		<p>Most of the properties used to configure the various styles are self-explanatory. See the 
+			<a href="#styling">styles</a> section below for a general discussion. You can also refer to the tool-tips available directly in the editor on the &#8220;question mark&#8221; icon of each property.
+		</p>
+		<p>
+			<strong>Gauge Style.</strong> The gauge style is more complex than the others and deserves a specific description. It is used to represent nodes as a (set of) gauges, which can be used for example as progress indicators.
+		</p>
+		<p>	
+			<img border="0" src="images/styles/mini_Node_Gauge_Vertical.jpg"/>
+			<br/>	
+			<img border="0" src="images/styles/mini_Node_Gauge_Horizontal.jpg"/>
+			<br/>	
+			<img border="0" src="images/styles/mini_Node_Gauge_Square.jpg"/>
+		</p>
+		<p>In addition to the standard style properties for the label, size and colors, gauges have an 
+			<em>Alignment</em> attribute (in the 
+			<em>Advanced</em> category) which indicates how the individual gauges are layed out:
+		</p>
+		<ul>
+			<li>
+				<code>VERTICAL</code> The gauges are aligned vertically, from top to bottom.
+			</li>
+			<li>
+				<code>HORIZONTAL</code> The gauges are aligned horizontally, from left to right.
+			</li>
+			<li>
+				<code>SQUARE</code> The gauges are aligned in a square, which may not be complete. Gauges are added from left to right in lines, and lines added from top to bottom.
+			</li>
+		</ul>
+		<p>You can specify the gauge composite&#8217;s border color using a color sub-element.</p>
+		<p>Gauge composites need one or more 
+			<strong>Gauge Section</strong>, which represent an individual gauge. Each 
+			<em>Gauge Section</em> has a 
+			<em>Label</em>, a 
+			<em>Min</em> and a 
+			<em>Max Value Expression</em>, and a 
+			<em>Value Expression</em>. The size of the gauge section depends on where the 
+			<em>Value Expression</em> sits between the 
+			<em>Min</em> (the section is invisible) and the 
+			<em>Max</em> (the section occupies all the available space). You can specify each gauge section&#8217;s foreground and background colors using color sub-elements. 
+			<a href="../general/Colors.html#interpolated_colors">Interpolated colors</a> are particularly suited for gauge sections.
+		</p>
+		<h4 id="node_tools">Node Tools</h4>
+		<p>See the 
+			<a href="#tools">tools</a> section for a general presentation of how tools are defined. This section only presents tools which are specific to nodes.
+		</p>
+		<p>
+			<strong>Node Creation.</strong> The only type of tool which is really specific to node mappings is the 
+			<em>Node Creation</em> tool, used to create new nodes. These work like all the other creation tools. You simply specify the 
+			<em>Node Mappings</em> that this tool can create and specify the behavior of the tool inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>By default, your node creation tools will be available on all the graphical elements which can contain an instance of the 
+			<em>Node Mappings</em> you specified in the tool, and users will see a &#8220;forbidden&#8221; sign if they try to apply the tool on an incompatible type of element. You can specify a 
+			<em>Precondition</em> to forbid the application of the tool on some of the elements where it would normally be allowed. The precondition is evaluated in the context of the 
+			<em>view element</em> on which the user has put the mouse. If it returns a false value, the tool&#8217;s application will be forbidden. Symmetrically, you can specify 
+			<em>Extra Mappings</em> (
+			<em>Advanced</em> section) on which the tool should be applicable, even though these mapping can not contain nodes of the type you will create. In this case, the node created by the tool will actually appear elsewhere on the diagram, but it can often help usability to allow users to click on related elements.
+		</p>
+		<h3 id="containers">Containers</h3>
+		<p>A 
+			<em>Container</em> mapping is used to represent model elements graphically as containers, which can contain sub-elements (including other containers, recursively). A container can also have 
+			<em>bordered nodes</em>, which are like normal nodes but appear on the border of the container, for example to represent ports. 
+			<em>Container</em>  mappings can appear directly inside a layer description, in which case the container will appear directly on the diagram, or inside another container mapping. 
+		</p>
+		<p>
+			<img border="0" src="images/styles/Containers_on_diagram_or_another_container.png"/>
+		</p>
+		<p>The definition of a container mapping follows the general rules described 
+			<a href="#mappings">above</a> to determine the semantic elements for which a container should be created. All the properties available in the 
+			<em>Behavior</em> category of the 
+			<em>Container</em> mapping configuration allow you to see all the various tools, defined elsewhere in the VSM, which apply to this mapping.
+		</p>
+		<p>A container can contain 
+			<em>sub-containers</em>, 
+			<em>sub-nodes</em>, and 
+			<em>bordered nodes</em>, all of which are defined inside the container mapping (
+			<em>New Diagram Element &gt; Container</em>, 
+			<em>Sub-node</em> and 
+			<em>Bordered Node</em>, respectively). You can also 
+			<em>reuse</em> node and container mappings defined elsewhere in the VSM in any of these three roles using the corresponding 
+			<em>Reused X Mappings</em> properties in the 
+			<em>Import</em> category. The effect at runtime is the same as if you had created an equivalent mappings inside the container mapping.
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> Bordered Node Import, Sub-node import and container import.
+			<br/></div>
+		</p>
+		<p id="list_containers">
+			<strong>List Containers</strong> You can enable a special &#8220;list mode&#8221; for containers by setting the 
+			<em>Children Presentation</em> attribute to 
+			<em>List</em> in the mapping configuration. List containers are represented in a special way, in which only the labels of their direct sub-elements (nodes only) are taken into account and presented in a vertical list. When represented as a list, only some of the style attributes (label text, tool-tip, colors) of the container are taken into account. For the list items themselves, only the label text is used.
+		</p>
+		<p>
+			<img border="0" src="images/styles/List_container_with_items.png"/>
+		</p>
+		<p id="compartments">
+			<strong>Compartments</strong> You can enable a special &#8220;compartment mode&#8221; for containers by setting the 
+			<em>Children Presentation</em> attribute to 
+			<em>Horizontal Stack</em> or 
+			<em>Vertical Stack</em> in the mapping configuration. Region containers presents their children containers and lists as compartments, vertically or horizontally organized. They are sorted following the mapping order and the semantic candidates expression evaluation result of each mapping. The border style attributes of the Region&#8217;s styles are used to specify the compartments separators. The other style properties of Region container or Region mapping are used as usual.
+		</p>
+		<p>
+			<img border="0" src="images/styles/Containers_with_compartments.png"/>
+		</p>
+		<p>
+			<em>Warning:</em> The compartment feature has been introduced in Sirius 3.0.0. While working reliably, it has some limitations but you can rely on the improved VSM validation to ensure you are using it in supported modes. Known limitations:
+		</p>
+		<ul>
+			<li>Only the gradient and image style are supported for Region container and Region mappings.</li>
+			<li>The Show/Hide, Hide filter features are disabled on regions (hide filter can be created to the compartment content but not the compartment). The Show/Hide label feature is supported.</li>
+			<li>The move and drag and drop of regions are disabled. Reordering regions can be done by reordering their semantic elements.</li>
+			<li>The resize of compartments might evolve in future versions. The current behavior is to redistribute space between adjacent regions and to resize the first/last region when the region container is resized from top/bottom for a vertical stack and left/right for an horizontal one.</li>
+			<li>A compartment is always considered as auto-sized (except after creation time when it contains no region).</li>
+			<li>The capability to define complex or recursive stack of regions mixing both stack directions has been introduced in Sirius 3.1.0 as an 
+				<em>experimental</em> configuration. Some layout-related actions might produce unexpected result. The limitations only concerns the visual aspects, there is no risk of corrupting the underlying models.
+			</li>
+		</ul>
+		<h4 id="container_styles">Container Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including conditional styles. This section only presents the aspects which are specific to containers.
+		</p>
+		<p>For containers you can use the following styles:</p>
+		<ul>
+			<li>
+				<em>Gradient</em> to display containers as rectangles filled with a gradient between two colors (or a flat rectangle if both colors in the gradient are the same).
+			</li>
+			<li>
+				<em>Parallelogram</em> to represent containers as a parallelogram.
+			</li>
+			<li>
+				<em>Image</em> to use a custom image (from the workspace or from inside a plug-in).
+			</li>
+		</ul>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Container_Style_Gradient.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Container_Style_Parallelogram.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Container_Style_Image.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Gradient</th>
+				<th>Parallelogram</th>
+				<th>Image</th>
+			</tr>
+		</table>
+		<h5 id="DefaultSize">Default Size</h5>
+		<p>You can specify the default size of 
+			<em>Gradient</em> and 
+			<em>Parallelogram</em> styles at creation time by specifying the width and height computation expressions available in the Advanced tab. This default size will also be used to determine the container minimum size when its bounds are 
+			<em>auto-sized</em>.
+		</p>
+		<p>Most of the properties used to configure the various styles are self-explanatory. See the 
+			<a href="#styling">styles</a> section below for a general discussion. You can also refer to the tool-tips available directly in the editor on the &#8220;question mark&#8221; icon of each property.
+		</p>
+		<h6 id="compartments_layout">Specific compartments layout</h6>
+		<p>Due to layout specificity of compartments, there are specific rules for this kind of containers:</p>
+		<ul>
+			<li>It is recommended to set to &#8220;-1&#8221; the 
+				<code>Width Computation Expression</code> and 
+				<code>Height Computation Expression</code>. The size of the compartment is expected to be computed from their regions.
+			</li>
+			<li>For the same reason, the 
+				<code>Width Computation Expression</code> should be the same for each region of the same vertical compartment (same 
+				<code>Height Computation Expression</code> for horizontal compartment ). If they are not the same the maximum is used.
+			</li>
+			<li>When a 
+				<code>Width Computation Expression</code> and 
+				<code>Height Computation Expression</code> are defined for the compartments, they are used at the creation time. You have the same effect if the end-user creates a compartment by drawing a rectangle for creation (instead of just clicking on the diagram). This dimension is kept for the first region creation. After the first region creation, the compartment is considered as auto-sized. A second region creation resizes the compartment (in the direction of the stack of the compartment).
+			</li>
+		</ul>
+		<p>Examples of some layout results according to VSM configuration:</p>
+		<ul>
+			<li>1st example:
+				<ul>
+					<li>Compartment with horizontal stack and with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to 10.
+					</li>
+					<li>Regions with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to 5.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/compartmentsLayout-Creation1.png"/>
+			<br/>1- Creation of a compartment: The compartment has a size of 100x100 pixels. The result would be the same if the end-user drawn a rectangle of 100x100 pixels at the creation time.
+			<br/>2- Creation of a first region: The first region uses the free size of the compartment. The compartment keeps its size.
+			<br/>3- Creation of a second region: The second region uses the height of the first region (highest than the 50 pixels defined in the VSM) and has a width of 50 pixels. The compartment is increased in width.
+		</p>
+		<ul>
+			<li>2nd example:
+				<ul>
+					<li>Compartment with horizontal stack and with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to 10.
+					</li>
+					<li>Regions with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to 15.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/compartmentsLayout-Creation2.png"/>
+			<br/>The first and second steps are the same. But the third is different. The second region has a width of 150 pixels and also a height of 150 pixels (highest than the first one). The compartment is increased in both directions.
+		</p>
+		<ul>
+			<li>3rd example:
+				<ul>
+					<li>Compartment with horizontal stack and with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to -1.
+					</li>
+					<li>Regions with 
+						<code>Width Computation Expression</code> and 
+						<code>Height Computation Expression</code> equal to 5.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/compartmentsLayout-Creation3.png"/>
+			<br/>1- Creation of a compartment: The compartment is auto-sized and fits to the title.
+			<br/>2- Creation of a first region: The first region uses the width of the compartment (highest than the 50 pixels defined in the VSM) and has a height of 50 pixels. The compartment is increased in height.
+			<br/>3- Creation of a second region: The second region has a size of 50x50 pixels. The compartment is increased in both directions.
+		</p>
+		<h4 id="container_tools">Container Tools</h4>
+		<p>See the 
+			<a href="#tools">tools</a> section for a general presentation of how tools are defined. This section only presents tools which are specific to containers.
+		</p>
+		<p>
+			<strong>Container Creation.</strong> These tools are used to create new containers. They work like all the other creation tools. You simply specify the 
+			<em>Container Mappings</em> that this tool can create and specify the behavior of the tool inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>By default, your container creation tools will be available on all the graphical elements which can contain an instance of the 
+			<em>Container Mappings</em> you specified in the tool, and users will see a &#8220;forbidden&#8221; sign if they try to apply the tool on an incompatible type of element. You can specify a 
+			<em>Precondition</em> to forbid the application of the tool on some of the elements where it would normally be allowed. The precondition is evaluated in the context of the 
+			<em>view element</em> on which the user has put the mouse. If it returns a false value, the tool&#8217;s application will be forbidden. Symmetrically, you can specify 
+			<em>Extra Mappings</em> (
+			<em>Advanced</em> section) on which the tool should be applicable, even though these mapping can not contain containers of the type you will create. In this case, the container created by the tool will actually appear elsewhere on the diagram, but it can often help usability to allow users to click on related elements.
+		</p>
+		<p>
+			<strong>Container Drop</strong> You can associate a 
+			<em>Container Drop</em> description to your container mappings to react to drag&#8217;n&#8217;drop operations into the container. The 
+			<em>Drag Source</em> property indicates if you want to react to graphical elements from a Sirius representation, to semantic model elements dragged from another Eclipse view (for example from the 
+			<em>Model Explorer</em>), or both. The 
+			<em>Containers</em> property indicates for which drop kind of container mappings this tool applies. The 
+			<em>Mappings</em> property indicates what kinds of graphical elements can be dropped into the specified containers, when the 
+			<em>Drag Source</em> is 
+			<em>Representation</em> or 
+			<em>Both</em>. The body of the tool (the 
+			<a href="../general/Model_Operations.html">model operations</a> ) specify how to react when an element is dropped into a container.
+		</p>
+		<p>
+			<i>WARNING</i>: if you choose 
+			<em>Model</em> or 
+			<em>Both</em> as source, your tool must be prepared to accept any type of source element which can be present in the 
+			<em>Model Explorer</em> view, including elements which have no relation to the source mappings you specified for the tool. Use a precondition to check the nature of the element being dragged (available through the 
+			<code>element</code> variable) to disable the tool source elements your tool does not support.
+		</p>
+		<p>When drag and dropping workspace resources (files, folders...) from an Eclipse view, some conversions are performed to ease the operations specifications. Depending of the dropped resource, the 
+			<code>element</code> variable content in the root operation will be different:
+		</p>
+		<ul>
+			<li>Loadable model:  the model will be loaded and added to the semantic resources of the session. The root content of the model will be set as 
+				<code>element</code> variable value.
+			</li>
+			<li>File: a 
+				<code>DFile</code> instance will be created and set as 
+				<code>element</code> variable value.
+			</li>
+			<li>Folder: a 
+				<code>DFolder</code> instance will be created and set as 
+				<code>element</code> variable value. For each resource contained by the folder, a 
+				<code>DResource</code> instance will be created.
+			</li>
+			<li>Project: a 
+				<code>DProject</code> instance will be created and set as 
+				<code>element</code> variable value. For each resource contained by the folder, a 
+				<code>DResource</code> instance will be created.
+			</li>
+		</ul>
+		<p>
+			<code>DFile</code>, 
+			<code>DFolder</code>, 
+			<code>DProject</code> are instances of 
+			<code>DResource</code>. A 
+			<code>DResource</code> instance has a 
+			<strong>name</strong> and a 
+			<strong>path</strong>. The path is the absolute location of the resource.
+			<br/>
+			<code>DFolder</code>, 
+			<code>DProject</code> are instances of 
+			<code>DResourceContainer</code>. A 
+			<code>DResourceContainer</code> instance has 
+			<strong>members</strong>, which are 
+			<code>DResource</code> instances.
+		</p>
+		<h3 id="bordered_nodes">Bordered Nodes</h3>
+		<p>Bordered nodes are specified using normal 
+			<a href="#nodes">node mappings</a>. They can appear inside node mappings (include other node mappings which are bordered nodes) and container mappings. They can have the same styles and tools associated to them as normal node mappings (although they should generally be kept small to avoid weird graphical effects).
+		</p>
+		<h3 id="edges">Edges</h3>
+		<p>Edges are used to define connections between diagram elements. There are two kinds of edges, which are defined using different mappings:</p>
+		<ul>
+			<li>
+				<em>Relation-Based Edges</em> are used to represent a relation between model elements such as containment or reference (including computed references). An example in UML would be the inheritance relationship, which is represented by references between a class and its super-classes. Those would be modeled using a relation-based edge.
+			</li>
+			<li>
+				<em>Element-Based Edges</em> are used when a semantic model element (instead of simply a reference) exists to represent the relation itself. An example in UML would be an association between two classes 
+				<em>A</em> and 
+				<em>B</em>: it is not represented by a reference between 
+				<em>A</em> to 
+				<em>B</em>, but by an explicit 
+				<em>Association</em> model element which itself references 
+				<em>A</em> and 
+				<em>B</em>. Such an association would be modeled using a domain-based edge on the 
+				<em>Association</em> element.
+			</li>
+		</ul>
+		<h4 id="relation_based_edges">Relation-Based Edges</h4>
+		<p>To specify a 
+			<em>Relation-Based Edge</em>, you must fill the 
+			<em>Source Mapping</em> and 
+			<em>Target Mapping</em> properties. They indicate from what kind of graphical element the edges will start and to what kind of element they go. Both properties can contain several mappings, and some mappings can appear as both source and targets. Note that it is possible to have edges whose source 
+			<em>or</em> target is another edge, but not both.
+		</p>
+		<p>You must also specify the 
+			<em>Target Finder Expression</em>. It will be evaluated in the context of the semantic target element of a potential source (as defined by 
+			<em>Source Mappings</em>) and should return the semantic element(s) of the targets elements to connect with the source. The expression can return zero elements to indicate that  no edge starting from this element.
+		</p>
+		<p>An edge (instance of this mapping) will appear between each pair of graphical elements 
+			<em>E1</em> and 
+			<em>E2</em> on the diagram where:
+		</p>
+		<ul>
+			<li>
+				<em>E1</em>'s mapping is in the 
+				<em>Source Mappings</em>.
+			</li>
+			<li>
+				<em>E2</em>'s mapping is in the 
+				<em>Target Mappings</em>.
+			</li>
+			<li>The (optional) 
+				<em>Precondition Expression</em> (
+				<em>Advanced</em> category) returns true for the semantic element of 
+				<em>E1</em>.
+			</li>
+			<li>The semantic element of 
+				<em>E2</em> appears in the result of evaluating the 
+				<em>Target Finder Expression</em> in the context of 
+				<em>E1</em>'s semantic element.
+			</li>
+		</ul>
+		<p>Because a relation-based edge does not represent an actual semantic element but a relation between elements, its own semantic element is the same as its source&#8217;s.</p>
+		<p>
+			<strong>Paths.</strong> Edges only exist between one source and one target element. Sometimes such an edge is just one segment of a more complex 
+			<em>path</em> which traverses many elements. You can highlight such a complex path using the properties in the 
+			<em>Path</em> category. 
+			<em>Path Mappings</em> should be the list of mappings considered by the path, and the 
+			<em>Path Expression</em> should return the list of semantic elements the edge path should go through, in the order the should be traversed.
+		</p>
+		<h4 id="element_based_edges">Element-Based Edges</h4>
+		<p>
+			<em>Element-Based Edges</em> are configured much like nodes and containers. You must specify the 
+			<em>Domain Class</em>, 
+			<em>Semantic Candidate Expression</em> and (optionally) 
+			<em>Precondition Expression</em> to select the semantic elements the edges will represent. In addition, you must specify:
+		</p>
+		<ul>
+			<li>the 
+				<em>Source Mapping</em> and 
+				<em>Target Mapping</em> properties, which indicates from what kind of graphical element the edges will start and to what kind of element they go. Both properties can contain several mappings, and some mappings can appear as both source and targets. Note that it is possible to have edges whose source 
+				<em>or</em> target is another edge, but not both.
+			</li>
+			<li>the 
+				<em>Source Finder Expression</em> and 
+				<em>Target Finder Expression</em>, which will be evaluated in the context of the semantic element of the edge, should return the actual elements that the edge connects.
+			</li>
+		</ul>
+		<p>An edge (instance of this mapping) will appear between each pair of graphical elements 
+			<em>E1</em> and 
+			<em>E2</em> on the diagram where:
+		</p>
+		<ul>
+			<li>
+				<em>E1</em>'s mapping is in the 
+				<em>Source Mappings</em>.
+			</li>
+			<li>
+				<em>E2</em>'s mapping is in the 
+				<em>Target Mappings</em>.
+			</li>
+			<li>There is a semantic element, selected by the 
+				<em>Domain Class</em> and 
+				<em>Semantic Candidate Expression</em>, from which the 
+				<em>Source Finder Expression</em> returns 
+				<em>E1</em> and the 
+				<em>Target Finder Expression</em> returns 
+				<em>E2</em>.
+			</li>
+		</ul>
+		<p>
+			<strong>Paths.</strong> Edges only exist between one source and one target element. Sometimes such an edge is just one segment of a more complex 
+			<em>path</em> which traverses many elements. You can highlight such a complex path using the properties in the 
+			<em>Path</em> category. 
+			<em>Path Mappings</em> should be the list of mappings considered by the path, and the 
+			<em>Path Expression</em> should return the list of semantic elements the edge path should go through, in the order the should be traversed.
+		</p>
+		<h4 id="edges_styles">Edge Style</h4>
+		<p>Both types of edges (relation-based and element-based) share the same style type. It supports conditional style like for other mappings.</p>
+		<p>You can specify the line style (
+			<em>solid</em>, 
+			<em>dash</em>, 
+			<em>dot</em> or 
+			<em>dash-dot</em>), color, width (using the 
+			<em>Size Computation Expression</em> in the 
+			<em>Advanced Category</em>), and optional decorations (like arrowheads) to be put on the end-points of the edge.
+		</p>
+		<p>The 
+			<em>Routing Style</em> can be one of:
+		</p>
+		<ul>
+			<li>
+				<em>Straight</em>: the edge is drawn using straight line segments. When created, only one segment directly connects the source and target elements, except when the source and target are the same elements. End users can create and remove sub-segments, and move the bend-points.
+			</li>
+			<li>
+				<em>Manhattan</em>: the edge is drawn using only vertical and horizontal segments. Otherwise it is similar to 
+				<em>Straight</em>.
+			</li>
+			<li>
+				<em>Tree</em>: this style can be seen as a special case of 
+				<em>Manhattan</em>, with always two vertical segments and an horizontal one between them. If one graphical element serves as the source for several edges using this style, their first vertical segment (the stem of the tree) will be merged, and their horizontal segments will all appear as a single line.
+			</li>
+		</ul>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/styles/Edge_Style_Straight.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Edge_Style_Manhattan.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/styles/Edge_Style_Tree.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>Straight</th>
+				<th>Manhattan</th>
+				<th>Tree</th>
+			</tr>
+		</table>
+		<p>Note that end-users can change the routing style of the edges individually, independently of the default style you set in the VSM.</p>
+		<p>
+			<strong>Edge Labels.</strong> Edges can have from zero to three labels. By default they have a single which will be placed at its center. You can delete it and/or add labels to be shown at the beginning (near the source) or end (near the target) of the edge. In all cases, the configuration is 
+			<a href="#label_style">the same as for all labels</a>. Note that currently only the center label (if present) is editable if a 
+			<em>Direct Edit</em> tool is associated to the edge mapping.
+		</p>
+		<p>
+			<strong>Edge Folding.</strong> It can often be useful, from one end of the edge, to be able to hide the elements at the other end. Think for example when and edge is used to represent some kind of containment relationship between elements and you want to hide the &#8220;contents&#8221; of an element to concentrate on the rest of the diagram. You can allow end-users to do this be setting a 
+			<em>Folding Style</em> on an edge mapping (in the 
+			<em>Advanced</em> category). When the 
+			<em>Folding Style</em> is set to 
+			<em>Source</em> or 
+			<em>Target</em>, the element (node or container) at the source or target of the edge will have a small &#8220; - &#8221; sign in its top-left corner. If the user clicks on it, the edges instance of this mapping for which the element is a source (resp. target) will fold: the edges and the elements they are connected to at the other side will disappear from view. The behavior is recursive: if the elements hidden were connected to other elements using this kind edges, those too will be hidden. When an element has been folded, the &#8220; - &#8221; sign becomes a &#8220; + &#8221; sign which can be used to unfold the edges. This is useful when representing trees of elements: if you enable folding, users will be able with a single click to hide or reveal complete sub-hierarchies of elements.
+		</p>
+		<p>
+			<strong id="edgecentering">Edge Centering.</strong> The edge source and edge target are not systematically oriented toward the center of the node, depending on where the edge has been created or moved by the end user. You can specify that an edge end (the source, target or both) will always be centered. The 
+			<em>Centered Source Mappings</em> and the 
+			<em>Centered Target Mappings</em> (within the edge style description advanced properties tab) lets you select for which mapping the source or the target will be centered. The 
+			<em>Ends Centering</em> section (on the same advanced tab) allows you to generalize this behavior for any edge source/target mapping. Note that this behavior can be customized by the end user via the edge style 
+			<em>centered</em> attribute.
+		</p>
+		<p>
+			<img border="0" src="images/styles/Edge_Style_Centering.png"/> 
+			<br/>The first edge, the highest one, is oriented to the node&#8217;s center
+		</p>
+		<h4 id="bracket_edge_style">Bracket Edge Style</h4>
+		<p>The bracket edge figure is designed to be drawn from the middle of a node side to the middle of another node side. The user can move the main segment and rotate the figure (horizontal-&gt; vertical or vertical-&gt;horizontal).</p>
+		<p>	
+			<img border="0" src="images/styles/Edge_Style_bracketStyle.png"/>
+		</p>
+		<p>The optional decorations (like arrowheads) will be put on the end-points of the main segment.	</p>
+		<p>See the 
+			<a href="#edges_styles">Edge Style</a> section for the other properties.
+		</p>
+		<h4 id="edge_tools">Edge Tools</h4>
+		<p>See the 
+			<a href="#tools">tools</a> section for a general presentation of how tools are defined. This section only presents tools which are specific to edges.
+		</p>
+		<p>
+			<strong>Edge Creation.</strong> This tool is used to create new edges. They work like all the other creation tools. You simply specify the 
+			<em>Edge Mappings</em> that this tool can create and specify the behavior of the tool inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>. The body of the tool will be executed in the context of the semantic element of the source of the new edge.
+		</p>
+		<p>Because edges have two ends, their creation requires users to specify both the source and target elements. By default, the possible sources are all the instances of one of the 
+			<em>Source Mappings</em> specified for this kind of edge (and similarly for the possible targets). You can restrict this using the 
+			<em>Connection Start Precondition</em> (resp. 
+			<em>Connection Complete Precondition</em>) to forbid the use of the tool from (resp. to) some element. 
+		</p>
+		<p>
+			<em>Connection Start Precondition</em> expressions can use the following variables to allow/disallow first click for connection creation:
+		</p>
+		<ul>
+			<li>
+				<code>preSourceView</code>: the graphical element which is pointed on the first click.
+			</li>
+			<li>
+				<code>preSource</code>: the semantic element which is pointed on the first click.
+			</li>
+			<li>
+				<code>diagram</code>: the current Diagram.
+			</li>
+			<li>
+				<code>container</code>: the semantic element of the Diagram.
+			</li>
+		</ul>
+		<p>
+			<em>Connection Complete Precondition</em> expressions can use the following variables to allow/disallow second click for connection creation:
+		</p>
+		<ul>
+			<li>
+				<code>preSourceView</code>: the graphical element which is pointed on the first click.
+			</li>
+			<li>
+				<code>preSource</code>: the semantic element which is pointed on the first click.
+			</li>
+			<li>
+				<code>preTargetView</code>: the graphical element which is pointed on the second click.
+			</li>
+			<li>
+				<code>preTarget</code>: the semantic element which is pointed on the second click.
+			</li>
+			<li>
+				<code>diagram</code>: the current Diagram.
+			</li>
+			<li>
+				<code>container</code>: the semantic element of the Diagram.
+			</li>
+		</ul>
+		<p>On the opposite, you can specify 
+			<em>Extra Source Mappings</em> and 
+			<em>Extra Target Mappings</em> (
+			<em>Advanced</em> category)  which the user will be able to select as &#8220;virtual&#8221; source and targets, even though the real edge created by the tool will not be between these elements.
+		</p>
+		<p>
+			<strong>Reconnect Edge.</strong> The 
+			<em>Reconnect Edge</em> tool is used to allow end-users to change the source and/or target of an edge by moving the corresponding end onto another graphical element. If a tool is specified to handle the user&#8217;s reconnection attempt, it will be invoked with all the appropriate information so that it can execute the corresponding semantic change. In addition to the 
+			<em>Mappings</em> property, which indicate the types of edges supported by the tool, you must specify one 
+			<em>Reconnection Kind</em>: a tool can be written to only support reconnection of the source end, the target end, or of both. Tools that handle both cases are complex to write, so it is recommended if possible to write two separate tools: one which handle the source re-connections, and one for the target re-connections.
+		</p>
+		<p>The body of the tool is evaluated on the target semantic element of the edge that the user wants to reconnect, with the following variables available to describe the reconnection:</p>
+		<ul>
+			<li>
+				<code>source</code>: the semantic element which is pointed before the reconnect.
+			</li>
+			<li>
+				<code>target</code>: the semantic element which is pointed after the reconnect.
+			</li>
+			<li>
+				<code>sourceView</code> : the graphical element which is pointed before the reconnect.
+			</li>
+			<li>
+				<code>targetView</code> : the graphical element which is pointed after the reconnect.
+			</li>
+			<li>
+				<code>otherEnd</code> : the edge end (graphical element) that has not changed during the reconnection
+			</li>
+			<li>
+				<code>edgeView</code> : the Edge after the graphical reconnection
+			</li>
+			<li>
+				<code>diagram</code> : the current Diagram.
+			</li>
+			<li>
+				<code>element</code>: the semantic element of the current edge.
+			</li>
+		</ul>
+		<p>Here are illustration to show the values of this variables in a concrete case. Before the reconnection:</p>
+		<p>	
+			<img border="0" src="./images/references/reconnect/ReconnectTool_Before.png"/>
+		</p>
+		<p>After the reconnection:</p>
+		<p>	
+			<img border="0" src="./images/references/reconnect/ReconnectTool_After.png"/>
+		</p>
+		<ul>
+			<li>The 
+				<code>sourceView</code> is the graphical node &#8216;A&#8217;.
+			</li>
+			<li>The 
+				<code>targetView</code> is the graphical node &#8216;B&#8217;.
+			</li>
+			<li>The 
+				<code>otherEnd</code> is the graphical node &#8216;C&#8217;, that has not changed during the reconnection.
+			</li>
+			<li>
+				<code>edgeView.sourceNode</code> is the graphical node &#8216;C&#8217;.
+			</li>
+			<li>
+				<code>edgeView.targetNode</code> is the graphical node &#8216;B&#8217;.
+			</li>
+		</ul>
+		<p>For the semantic, we will consider that we represent &#8220;Box&#8221; and the link means &#8220;is contained in&#8221;:</p>
+		<ul>
+			<li>the 
+				<code>source</code> is the box &#8216;A&#8217;.
+			</li>
+			<li>the 
+				<code>target</code> is the box &#8216;B&#8217;.
+			</li>
+			<li>
+				<code>element</code> is the link &#8220;is contained&#8221; between &#8216;C&#8217; and &#8216;A&#8217;.
+			</li>
+		</ul>
+		<h3 id="decorations">Decorations</h3>
+		<p>Decorations can be used to add small graphical annotations to the elements of a diagram. They are defined directly inside a layer, and they can be either 
+			<em>Mapping Based Decorations</em>, 
+			<em>Semantic Based Decorations</em> or 
+			<em>Generic Decorations</em>.
+		</p>
+		<p>
+			<strong>Mapping Based Decorations</strong> have a list of 
+			<em>Mappings</em> to which they may apply.
+			<br/> 
+			<img border="0" src="./images/mappingBasedDecoration.png"/>
+		</p>
+		<p>
+			<strong>Semantic Based Decoration</strong> have a 
+			<em>Domain Class</em> and will apply to all graphical elements which have an instance of this class as their semantic element, whatever are the mapping(s) used to represent them.
+			<br/> 
+			<img border="0" src="./images/semanticBasedDecoration.png"/>
+		</p>
+		<p>
+			<strong>Generic Decoration</strong> is only based on the 
+			<em>Precondition Expression</em> to know if it applies on the current graphical Element.
+		</p>
+		<p>The 
+			<em>Precondition Expression</em> is evaluated in the context of a candidate semantic element which is the semantic element of the current graphical element (that is 
+			<em>DSemanticDecorator.target</em>). If the expression returns true, the decorator will be shown.
+		</p>
+		<h4 id="Decorationdisplay">Decoration display</h4>
+		<p>The 
+			<em>Decoration Description</em> has a 
+			<em>Position</em> which indicates where the decorator should be placed. The position can be chosen among the four corners (NORTH_WEST, NORTH_EAST, SOUTH_WEST and SOUTH_EAST), the middle of each bounding box sides (NORTH, SOUTH, WEST and EAST) and the CENTER positions. 
+		</p>
+		<img align="center" border="0" src="./images/decoration_positions.png"/>
+		<p>Many decorations can be specified at the same 
+			<em>Position</em>. To manage that, the decorations are displayed from their defined position along the border of the bounding box according to the 
+			<em>Distribution Direction</em>.
+		</p>
+		<ul>
+			<li>For corner decorations, it is possible to choose between vertical or horizontal direction.</li>
+			<li>For NORTH, SOUTH and CENTER positions, the direction is only horizontal from the left to right.</li>
+			<li>For WEST and EAST positions, the direction is only vertical from top to bottom.</li>
+		</ul>
+		<p>Decorations example: 
+			<img align="center" border="0" src="./images/decoration_example.png"/>
+		</p>
+		<p>By default the margin between the decoration and the border of the figure is 2 pixels.
+			<br/>When a node contains border nodes, the node decorations are shifted from the border to avoid overlap with border node
+			<br/>Decorations example with border nodes: 
+			<img align="center" border="0" src="./images/decoration_borderNode.png"/>
+		</p>
+		<p>The decoration icon is defined with 
+			<em>Image Expression</em> which is an InterpretedExpression. 
+			<em>Image Expression</em> may be:
+		</p>
+		<ul>
+			<li>a path to an image which can be absolute or relative to the workspace. A workspace path example: 
+				<em>/org.eclipse.sirius.tests.sample.component.design/images/square16x16.png</em>
+			</li>
+			<li>an expression that gives a path to an image</li>
+			<li>an expression that provides an instance of 
+				<code>org.eclipse.swt.graphics.Image</code>. Provider will have to define a cache of image to optimize memory consumption and performance. For now, there is no mechanism to release the cache.
+			</li>
+			<li>an expression that provides an instance of 
+				<code>org.eclipse.draw2d.IFigure</code>. The figure life cycle is managed by Sirius.
+			</li>
+		</ul>
+		<p>The 
+			<em>Decoration Description</em> has a 
+			<em>TooltipExpression</em> which may be:
+		</p>
+		<ul>
+			<li>a fixed tooltip string</li>
+			<li>an expression that provides a tooltip String</li>
+			<li>an expression that provides an instance of 
+				<code>org.eclipse.draw2d.IFigure</code>. The figure life cycle is managed by Sirius.
+			</li>
+		</ul>
+		<p>Decoration tooltip example: 
+			<img align="center" border="0" src="./images/decoration_tooltip_example.png"/>
+		</p>
+		<p>Sometimes, according to the graphical element size, the decorations are represented with a 
+			<em>list decoration</em> which is a 16x16 pixels frame containing three dots. The tooltip of a 
+			<em>list decoration</em> displays as lines, the contained decorations with its tooltip. 
+			<br/>Sometimes, the graphical element size can be too small to display all decorations without overlapping. In this condition, decorations will be gathered into one decoration called 
+			<em>list decoration</em>. This 
+			<em>list decoration</em> is represented with a 16x16 pixels frame containing three dots. The tooltip of a 
+			<em>list decoration</em> displays, as lines, the contained decorations with its tooltip.
+		</p>
+		<p>List decoration example: 
+			<img align="center" border="0" src="./images/decoration_group_example.png"/>
+		</p>
+		<p>Tooltip example on list decoration: 
+			<img align="center" border="0" src="./images/decoration_group_tooltip_example.png"/>
+		</p>
+		<h4 id="Decorationdisplayupdate">Decoration display update</h4>
+		<p>The decorations can be manually and automatically refreshed.</p>
+		<ul>
+			<li>Manually, when the user clicks on the refresh button in the diagram tool bar.</li>
+			<li>Automatically, according to semantic changes when:
+				<ul>
+					<li>the 
+						<em>target semantic element</em> of the 
+						<code>DDiagramElement</code> (
+						<code>DSemanticDecorator_Target</code> feature) is changed,
+					</li>
+					<li>the 
+						<em>semantic elements</em> of the 
+						<code>DDiagramElement</code> (
+						<code>DRepresentationElement_SemanticElements</code> feature) are changed. They are defined with 
+						<em>Associated Elements Expression</em> on the mapping. It means that a specifier that defined decorations can not add new &#8220;semantic element&#8221;, dedicated to decorations, that would be listened to for the automatic refresh.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h2 id="styling">Styling</h2>
+		<p>Styles define the graphical appearance of diagram elements. Sirius supports a rich set of possible styles, including conditional styles which can dynamically change depending on the current state of the underlying model elements. Each mapping must define at least one style do be visible on the diagram.</p>
+		<h3 id="conditional_styles">Conditional Styles</h3>
+		<p>Conditional styles make it possible to support different graphical aspects for a single mapping. The actual style used to render an element is determined dynamically depending on the current state of the models elements.</p>
+		<p>To use conditional style, you must first create a non-conditional style, which will be the default. You can then add one or several conditional styles as siblings to the default style. Each conditional style is associated to a condition specified as a predicate. If there are conditional styles on a mapping, their conditions are tested in their order of appearance in the mapping description. The first one for which the condition is 
+			<strong>true</strong> is selected. If none of the conditional styles condition is true, the default style is used instead.
+		</p>
+		<ul>
+			<li>NOTE : There is an exception to the rule of Conditional Styles:</li>
+		</ul>
+		<p>if a user customized a Node with a WorkspaceImage style (through the &#8220;Set style to workspace image&#8221; action), then if a new style is computed through the VSM (e.g. through a Conditional Style appliance), this new style will not override the WorkspaceImage style to preserve this last customization (See 
+			<a href="../../user/diagrams/Diagrams.html#styleCustomizations">
+				<em>Style Customizations</em>
+			</a> ).
+		</p>
+		<h3 id="label_style">Label Properties</h3>
+		<p>One of the responsibility of styles is to describe labels which will be displayed and how they will be formated. The following properties are available :</p>
+		<ul>
+			<li>
+				<em>Label Expression</em> is used to compute the text of the label describing the element. It is evaluated in the context of the semantic target element.
+			</li>
+			<li>
+				<em>Label Position</em> is used to set the position of the label relative to nodes (this property is not available for containers and edges). The label can be put on the 
+				<em>border</em> of the node (outside), where it can be freely moved around the node&#8217;s border, or in the 
+				<em>node</em> itself.
+			</li>
+			<li>
+				<em>Label Size</em> indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Label Format</em> is used to specify the font style attributes (
+				<em>Bold</em> and/or 
+				<em>Italic</em> and/or 
+				<em>Underline</em> and/or 
+				<em>Strike through</em>).
+			</li>
+			<li>
+				<em>Label Alignment</em> is used for labels positioned inside node to specify their alignment (note that not all alignment values are supported for all styles). For nodes, this attribute only applies when 
+				<strong>Label position</strong> is set to 
+				<strong>node</strong> (otherwise, the label is freely movable by the user). For containers, it only applies to the container&#8217;s label itself, not its content. This attribute does not apply to edges (again, their label is freely movable by users) and list items.
+			</li>
+			<li>
+				<em>Label border style</em> (only available for a 
+				<em>Gradient container style</em>): the specifier can choose a label border style among a list. As a result a border will be drawn or not around the label, this might impact the children content pane configuration.
+			</li>
+			<li>
+				<em>Show icon</em> indicates whether or not the element&#8217;s icon should be made visible. If set, the icon used is the one associated with the type of the target element, and is rendered on the left of the label. Note that end-user will always be able to hide such icons by using the 
+				<em>Label icons</em>  preferences (
+				<em>Window</em>/ 
+				<em>Preferences</em>/ 
+				<em>Sirius</em>/ 
+				<em>Sirius Diagram</em>/ 
+				<em>Appearance</em>).
+			</li>
+			<li>
+				<em>Hide label by default</em> (not available for edges) is used to configure the label visibility when an element is created.
+			</li>
+		</ul>
+		<p>While not strictly part of the label properties, a 
+			<em>Tooltip Expression</em> can be set for most style, and is used to compute the text of the optional tool-tip shown when the user leaves the mouse on an element. It can be seen as an alternate 
+			<em>Label Expression</em> which is not visible by default, and can be used to show additional details on an element only when the user requests them, to avoid visual clutter on the diagram.
+		</p>
+		<h3 id="size">Size Properties</h3>
+		<p>Most styles give you some control on the size of the graphical elements. The properties described below are not available for all styles, but when they are they have the same meaning (unless specified for special cases):</p>
+		<ul>
+			<li>
+				<em>Allow resizing</em>: You can decide if end-users are allowed to resize graphical elements 
+				<em>Horizontally</em> and/or 
+				<em>Vertically</em>. Most styles allow resizing on both directions by default.
+			</li>
+			<li>Initial 
+				<em>Width</em> and 
+				<em>Height</em> can be specified explicitly. A value of 0 indicates no explicit width or height. The initial value will be taken from the style&#8217;s default or from the 
+				<em>Size Computation Expression</em> if specified.
+			</li>
+			<li>
+				<em>Size Computation Expression</em>: An expression used to dynamically compute the size of a graphical element. It is evaluated in the context of the target element, and should return an integer.
+			</li>
+			<li>
+				<em>Border Size Computation Expression</em>: An expression which is used to dynamically compute the size of the border of graphical element. It is evaluated in the context of the target element, and should return the border size 
+				<em>in pixels</em>.
+			</li>
+		</ul>
+		<h3 id="colors">Colors</h3>
+		<p>Whenever you have to specify colors for a style, you can use either one of the pre-defined system colors or one which you have defined yourself in a 
+			<em>Users Color Palette</em>. The palette is created directly inside the 
+			<em>Viewpoint</em> element, and its colors can be used by any representation, not just diagram. See 
+			<a href="../general/Colors.html">the general section on colors</a> for more details.
+		</p>
+		<h3 id="authorizedsides">Authorized Sides</h3>
+		<p>By default, border node can be located on any side of its parent. It is possible to restrict a border node authorized sides. Thus the end user will not have the possibility to create or to move a border node on a forbidden side. Authorized sides can be specified in the advanced tab of the border node style:
+			<br/>
+			<img border="0" src="images/styles/authorizedSides.png"/>
+		</p>
+		<h2 id="tools">Tools</h2>
+		<p>Tools are used to define the behavior of your modeler. Some tools will appear in the diagram&#8217;s palette (e.g. a tool to create a new node), while others are automatically invoked when the user performs certain operations (e.g. a delete tool which is triggered when the user deletes an element from the diagram).</p>
+		<h3 id="tools_organization">Tools Organization</h3>
+		<p>Tools are defined in 
+			<em>Tool Sections</em>, which appear directly inside layers. If a tool is defined inside an additional layer, it will be enabled only when the corresponding layer is enabled.
+		</p>
+		<p>The top-level 
+			<em>Tool Sections</em> inside a layer are simply used to separate tools definition from mapping definitions and have no impact on how the tools are presented. However, if you create sub-sections inside those top-level section (
+			<em>New Tool... &gt; Section</em>), and if those sections contain tools which appear in the palette, then the sub-sections will be used to group the corresponding tools in expansible sections in the palette. You can also create 
+			<em>Groups</em> (
+			<em>New Tools... &gt; Group</em>), which behave like combo-boxes in the palette: only one of the tools defined inside the group is active (and visible) at a time.
+		</p>
+		<p>Tool sections can have 
+			<em>Reused Tools</em>, which are defined elsewhere (including in another layer, even from a different representation). They will appear and behave as if they were defined inside the section which reuses them.
+		</p>
+		<p>The 
+			<em>Group Extension</em> elements (defined inside a tool section) allow you to add tools in a existing 
+			<em>Group</em> defined elsewhere. It can be used for example to merge tools defined in an additional layer into a group of tools defined in the default layer. You must select the existing 
+			<em>Group</em> to extend, and any tool declared in a group extension will be added in the targeted group by the &#8216;group&#8217; attribute.
+		</p>
+		<p>Note that the Tool Section label and Tool label are 
+			<a href="../general/Specifying_Viewpoints.html#translatable_messages">
+				<em>Translatable Messages</em>
+			</a> and can therefore be localized.
+		</p>
+		<p>
+			<i>WARNING</i> : It was possible to define a ToolSection directly under a DiagramDescription, outside a layer. Defining tool section outside a layer is discouraged, that&#8217;s why this action has been deleted. The tool sections created before are still present but you should move it into the default layer since it is likely to be deleted in the future.
+		</p>
+		<h3 id="tools_specification">Tools Specification</h3>
+		<p>
+			<a href="../general/ToolsSpecification.html">Refer to Tools specification</a>
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> Study the exact semantic of this and complete the description.
+			<br/></div>
+		</p>
+		<h3 id="tools_reference">Tools Reference</h3>
+		<p>In this section we describe each kind of tool available on a diagram.</p>
+		<h4 id="node_creation">Node Creation</h4>
+		<p>See the description in the 
+			<a href="#node_tools">node-specific tools section</a>.
+		</p>
+		<h4 id="container_creation">Container Creation</h4>
+		<p>See the description in the 
+			<a href="#container_tools">container-specific tools section</a>.
+		</p>
+		<h4 id="edge_creation">Edge Creation</h4>
+		<p>See the description in the 
+			<a href="#edge_tools">edge-specific tools section</a>.
+		</p>
+		<h4 id="container_drop">Container Drop</h4>
+		<p>See the description in the 
+			<a href="#container_tools">container-specific tools section</a>.
+		</p>
+		<h4 id="reconnect_edge">Reconnect Edge</h4>
+		<p>See the description in the 
+			<a href="#edge_tools">edge-specific tools section</a>.
+		</p>
+		<h4 id="paste_description">Paste</h4>
+		<p>The paste tool aims to define operations to paste the given copied semantic element, accessible through the 
+			<em>copiedElement</em> variable, into the semantic paste receiver, accessible through the 
+			<em>container</em> variable. The 
+			<em>copiedView</em> and 
+			<em>containerView</em> variables reference the corresponding graphical element. The 
+			<em>Containers</em> property indicates the mappings to which this tool apply.
+		</p>
+		<p>Its semantic target is the copied semantic element. If the copied element was a non domain based element (e.g. relation edge), the semantic element is the original except if it is targeted by a domain based element also selected. When the semantic target is not copied, the tool receive a null copied element.</p>
+		<p>
+			<strong>Warning</strong>: The generic behavior is used only when there is no tool defined on the paste receiver. Otherwise the first tool with a precondition evaluated as true will be chosen and if all defined tools have a false precondition, paste action will be disabled.
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> Description not clear at all.
+			<br/></div>
+		</p>
+		<h4 id="delete_tool">Delete Element</h4>
+		<p>If you do not associate a 
+			<em>Delete</em> tool to a mapping, the default delete behavior when the user deletes a graphical element is to remove the target semantic element and all the associated semantic elements from the semantic model. If you want a different behavior or if you want to forbid the deletion of some elements, you must set an explicit 
+			<em>Delete</em> tool. Delete tools are invoked when the user select the 
+			<em>Delete from model</em> action (from the context menu, from the tab-bar or using the 
+			<em>Delete</em> key). The 
+			<em>element</em> variable will be set to the main semantic target element being deleted (excluding any associated semantic elements) while the 
+			<em>elementView</em> and 
+			<em>containerView</em> tell you which graphical view is being deleted and in which context it is.
+		</p>
+		<p>If you want to completely disable deletion for some elements, you can either create a 
+			<em>Delete</em> tool which does nothing for these elements or, if possible, setup the tool&#8217;s 
+			<em>Precondition</em> to return 
+			<em>false</em> for these elements. Setting a precondition is usually preferred as it will mark the 
+			<em>Delete</em> action as disabled in the UI (tab-bar and context menu) while a tool which simply does nothing can still be invoked by users, but with no effect. Note however that the 
+			<em>Precondition</em> will be evaluated each time the user selects and element to decide whether or not the delete action should be enabled in the UI. A precondition which is complex to evaluate can have a negative impact on the perceived performance of the modeler.
+		</p>
+		<h4 id="direct_edit">Direct Edit Label</h4>
+		<p>The 
+			<em>Direct Edit Label</em> tool is used to allow users to directly edit the label of a representation element. It specifies how to interpret the new label value, and which changes to apply to the model element. Users can invoke it using the 
+			<em>F2</em> shortcut, through a slow double-click, or directly by starting to type some text when a label is selected.
+		</p>
+		<p>If you want to display a different label during the edition, you can use the 
+			<code>input label expression</code>. This expression is evaluated during the invocation of the direct edit and displayed to the end-user instead of the standard label (defined in the style of the mapping).
+			<br/>For example, you can display a class with a stereotype, 
+			<code>&lt;&lt;utility&gt;&gt; Math</code>, and display only the class name, 
+			<code>Math</code>, during the edition.
+		</p>
+		<p>Inside a 
+			<em>Direct Edit Label</em> tool, you 
+			<em>must</em> specify an 
+			<em>Edit Mask Variable</em> element. The mask is used to parse the new label&#8217;s value as entered by the user, and to select part of this label as input variables to the editing action&#8217;s body. The mask can contain substrings of the form <code>{N}</code> where 
+			<code>N</code> is a number. The parts of the new label&#8217;s value which corresponds to these substring will be available as variables name 
+			<code>argN</code> (strings) in the body of the direct edit action. The default mask is <code>{0}</code>, which means the whole text entered by the user will be available through the variable 
+			<code>arg0</code>.
+		</p>
+		<p>
+			<em>Note:</em> Edges can have up to three different labels (one in the center and one at each extremity), but currently if a 
+			<em>Direct Edit</em> tool is associated to an 
+			<em>Edge</em> mapping, only the center label (if it exists) can be edited. This restriction will probably be lifted in future versions.
+		</p>
+		<h4 id="selection_wizard">Selection Wizard</h4>
+		<p>This tool can be used to open a wizard dialog asking the user to select one or several model elements. The body of the tool is then executed in the context of the element selected by the user.</p>
+		<p>When the tool is selected, the user must first select a diagram element as the tool&#8217;s target. Then a dialog box opens with a list of candidate elements to select. The list is computed from the target using expressions you specify in the tool&#8217;s description.</p>
+		<p>The 
+			<em>Window Title</em>, 
+			<em>Icon Path</em>, 
+			<em>Windows Image Path</em> and 
+			<em>Message</em> can be used to customize the look of the selection window.
+		</p>
+		<p>The 
+			<em>Candidates Expression</em> should return a list of elements from which the user can select the variable&#8217;s value. By default these candidates are presented as a list. You can also enable the 
+			<em>Tree</em> mode to display elements as a tree. In that case, you must specify a 
+			<em>Root Expression</em> that will provide elements to be displayed as first level of the tree item in the dialog and a 
+			<em>Children Expression</em>, which will be evaluated recursively on each candidate, from the root elements, to build a tree of possible values. Note that 
+			<em>Root Expression</em> and 
+			<em>Children Expression</em> provides elements that must be included in 
+			<em>Candidates Expression</em> elements.
+			<br/>Finally, you can set the 
+			<em>Multiple</em> flag to allow users to select several of the candidates instead of a single one.
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> What is the context where the tool&#8217;s body is executed if several elements are selected?
+			<br/></div>
+		</p>
+		<p>
+			<img border="0" src="images/styles/Selection_Tool.png"/>
+		</p>
+		<p>Note that the 
+			<em>Window Title</em> label and 
+			<em>Message</em> label are 
+			<a href="../general/Specifying_Viewpoints.html#translatable_messages">
+				<em>Translatable Messages</em>
+			</a> and can therefore be localized.
+		</p>
+		<h4 id="pane_based_selection_wizard">Pane-Based Selection Wizard</h4>
+		<p>The 
+			<em>Pane-Based Selection Wizard</em> is very similar to the 
+			<a href="#selection_wizard">Selection Wizard</a>. It differs only in the presentation of the selection window. The pane-based wizard offers two panels: on the left are all the candidates, which corresponds to the contents of the basic 
+			<em>Selection Wizard</em>. On the right is the current selection. The user has buttons to add or remove candidates from the left panel into the right one. The 
+			<em>Pre Selected Candidates Expression</em> can be used to define the initial content of the right-side panel.
+		</p>
+		<p><div style="display: none">
+			<br/>
+			<strong>TODO</strong> What is the context where the tool&#8217;s body is executed if several elements are selected?
+			<br/></div>
+		</p>
+		<p>
+			<img border="0" src="images/styles/Pane-Based_Selection_Tool.png"/>
+		</p>
+		<p>Note that the 
+			<em>Window Title</em> label, 
+			<em>Message</em> label, 
+			<em>Choice of Values Message</em> label and 
+			<em>Selected Values Message</em> labels are 
+			<a href="../general/Specifying_Viewpoints.html#translatable_messages">
+				<em>Translatable Messages</em>
+			</a> and can therefore be localized.
+		</p>
+		<h4 id="representation_creation">Representation Creation</h4>
+		<p>Each dialect supported by Sirius defines a tool which can be used to create a new representation using this dialect. They are (using the default supported dialects): 
+			<em>Diagram Creation</em> description, 
+			<em>Table Creation</em> description and 
+			<em>Tree Creation</em> description.
+		</p>
+		<p>These tools (one for each kind of representation supported by Sirius) can be used to create (and open) a new representation from an existing diagram element. They will be available to end-users in the 
+			<em>Navigate</em> context menu on compatible diagram elements. To configure the tool, simply select in the 
+			<em>Mappings</em> property which kinds of elements the tool should appear on (you can be more precise using the 
+			<em>Precondition</em> expression if necessary), and select the representation which should be created using the 
+			<em>Representation Description</em> property (in practice, one of 
+			<em>Diagram Description</em>, 
+			<em>Table Description</em> or 
+			<em>Tree Description</em> depending on the tool). Normally, the new representation will be created on the semantic element represented by the diagram element on which the user invoked the tool. Sometimes you want the tool to appear on one element, but create a representation on another one. In this case, use the 
+			<em>Browse expression</em> (in the 
+			<em>Advanced</em> category) to navigate from the element selected to the one one which the new representation should actually be created. The 
+			<em>Title Expression</em> (
+			<em>Advanced</em> category) can be used to set the title of the newly created representation. Finally, any operation you specify in the body of the tool will be executed when the tool is invoked; you can use it to initialize the content of the model represented. 
+		</p>
+		<h4 id="representation_navigation">Representation Navigation</h4>
+		<p>Each dialect supported by Sirius defines a tool which can be used to navigate to existing representation of this dialect. They are (using the default supported dialects): 
+			<em>Diagram Navigation</em> description, 
+			<em>Table Navigation</em> description and 
+			<em>Tree Navigation</em> description.
+		</p>
+		<p>These tools are very similar to the 
+			<a href="#representation_creation">representation creation tools</a>. The only differences is that they allow users to navigate to existing representation instead of creating new ones. If such a tool exists, the 
+			<em>Navigate</em> context menu on an element will contains an entry for each corresponding representation which already exists on the element selected (or reachable from the selected element using the 
+			<em>Browse expression</em>). You can specify a 
+			<em>Navigation name expression</em> (
+			<em>Advanced</em> category) to be used in the menu entry instead of using the title of the existing representation. This can be useful to make it more explicit what the relationship is between the current element and the target tree.
+		</p>
+		<h4 id="double_click_tool">Double-Click</h4>
+		<p>This tool is used to trigger operations when the user double-clicks on an element. The 
+			<em>Mappings</em> property indicate for what kinds of element this tool is applicable.  
+		</p>
+		<p>Inside the body of the tool, the 
+			<em>elementView</em> variable refers to the graphical element the user double-clicked on, while the 
+			<em>element</em> variable represents its semantic target element.
+		</p>
+		<h4 id="generic_tool">Generic Tool</h4>
+		<p>This generic tool is used to provide a palette entry which can execute any code describe in the internal tool language, including for example invoking external Java actions.</p>
+		<p>Inside the body of the tool, the 
+			<em>elementView</em> variable refers to the graphical element the user invoked the tool on, while the 
+			<em>element</em> variable represents its semantic target element.
+		</p>
+		<h4 id="popup_menu">Popup Menu</h4>
+		<p>This tool can be used to define an entry in the context menu which can contain 
+			<a href="#operation_action">
+				<em>Operation Actions</em>
+			</a> and 
+			<a href="#external_java_action">
+				<em>External Java Action</em>
+			</a> tools. Which ones are visible when the menu is opened depend on the preconditions of these actions, which can thus be activated or not depending on the currently selected element.
+		</p>
+		<h4 id="operation_action">Operation Action</h4>
+		<p>This tool can be used to define an operation which will appear as an entry in the context menu (or in a sub-menu if defined inside a 
+			<em>Popup Menu</em> element). When invoked, the body of the action is executed with the 
+			<em>views</em> variable referencing all the representation elements which were selected on the diagram.
+		</p>
+		<h4 id="external_java_action">External Java Action</h4>
+		<p>The 
+			<em>External Java Action</em> tool simply creates a menu entry in the context menu which directly invokes any 
+			<a href="../general/Model_Operations.html#external_java_action">External Java Action</a> you can define.
+		</p>
+		<h4 id="request_description">Request</h4>
+		<p>This tool is for advanced uses only. It requires understanding and extending GMF, the graphical framework used by Sirius to display diagrams. A 
+			<em>Request</em> description tool will contribute an item in the palette, and when invoked on a graphical element it will send a GMF request to the corresponding edit part. The type of the request to send is specified as a fixed string in the 
+			<em>Type</em> property. The target edit part should have an edit policy capable of understanding and reacting to the request.
+		</p>
+		<p><div style="display: none">
+			<br/>h4(#behavior_tool). Behavior Tool
+			<br/>
+			<strong>TODO</strong> Understand what this does exactly, and decide whether we want to keep it or not. Document it if we keep it.
+			<br/></div>
+		</p>
+		<h2 id="filters">Filters</h2>
+		<p>A diagram can define any number of filters, which can be enabled or disabled dynamically by the user to show or hide some elements of a diagram. Filters differ from layers on three main points:</p>
+		<ul>
+			<li>they are more fine-grained, they can selectively hide or show elements depending on their individual characteristics, whereas layers activate or deactivate whole mapping types.</li>
+			<li>they are purely graphical: even if some representation elements are hidden from the user&#8217;s view, they still exist;</li>
+			<li>they have no links with tools, they can not show or hide tools. </li>
+		</ul>
+		<p>To add a filter to a diagram, create a 
+			<em>Composite Filter</em> inside the 
+			<em>Diagram Description</em> element, specify its 
+			<em>Name</em> (a fixed string), and add one or several 
+			<em>Mapping Filter</em> or 
+			<em>Variable Filter</em> elements inside of it.
+		</p>
+		<h3 id="mapping_filter">Mapping Filter</h3>
+		<p>A mapping filter applies to all the elements instance of some mappings, and can filter some of them according to configurable conditions.</p>
+		<p>The 
+			<em>Filter Kind</em> attribute of a 
+			<em>Mapping Filter</em> can be 
+			<code>HIDE</code>, which will completely remove the element from view, or 
+			<code>COLLAPSE</code> which will minimize its size to a small transparent square of 4-by-4 pixels. The collapse mode is useful because the edges which use the filtered element as a source or target are still visible when the element is collapsed, while they disappear when the element is hidden.
+		</p>
+		<p>The 
+			<em>Mappings</em>  property indicates the list of mappings to which the filter will apply.
+		</p>
+		<p>The 
+			<em>Semantic Condition Expression</em> will be evaluated in the context of the target semantic elements of each instances of the specified mapping. It should return 
+			<strong>true</strong> if the element should be kept visible, and 
+			<strong>false</strong> if it should be hidden/collapsed.
+		</p>
+		<p>The 
+			<em>View Condition Expression</em> is similar to the 
+			<em>Semantic Condition Expression</em>, but is evaluated on the context of the 
+			<em>view element</em> of each instance of the specified mapping. The view element is the model element used by Sirius to represent the graphical element. Using these expressions require some knowledge of the structure of the view model used by Sirius.
+		</p>
+		<p>Both expressions are optional. If none is specified, the filter will have no effect. If both are specified, only the elements for which both expressions return 
+			<strong>false</strong> will be hidden/collapsed.
+		</p>
+		<p>The expressions of all active filters are evaluated whenever the diagram is refreshed (in the default 
+			<em>Auto-refresh</em> mode, whenever a change occurs in the semantic model), not just when the user enables the filter. This means that the active filters can have a big impact on performance if they perform complex tests, so keep this in mind when writing the condition expressions.
+		</p>
+		<h3 id="variable_filter">Variable Filter</h3>
+		<p>A 
+			<em>Variable Filter</em> is similar to a 
+			<em>Mapping Filter</em>, except that instead of using a list of mappings to select the candidate elements to filter, all represented elements are candidates but can be filtered with a Semantic Condition Expression.
+			<br/>In that expression, the specifier can use variables that are defined in the variable filter.
+		</p>
+		<ul>
+			<li>Select Model Element Variable : it opens a dialog box from which the user can select a collection of EObjects. The configuration of the dialog box uses the same properties and semantic as the 
+				<a href="#selection_wizard">Selection Wizard</a> tool. Refer to its documentation for the details. 
+			</li>
+			<li>Typed Variable : see 
+				<a href="#filter_with_typed_variable">Filter with Typed Variable</a> 
+			</li>
+		</ul>
+		<h4 id="filter_with_typed_variable">Filter with Typed Variable</h4>
+		<p>A Typed Variable is a variable which value type is a 
+			<em>EDataType</em> as chosen by the specifier and which value is filled by the user when applying the variable filter.
+			<br/>An interpreted expression allows defining the default value.
+		</p>
+		<p>
+			<img border="0" src="images/typedVariable_PropertyView.png"/>
+		</p>
+		<p>When the user applies a variable filter with typed variables, a dialog box is displayed to allow user entering the values. 
+			<br/>This dialog box is prompted after all 
+			<em>Select Model Element</em> wizard have been prompted.
+			<br/>It contains as many line as number of typed variables under the variable filter.
+			<br/>The user documentation is displayed as tooltip on question mark.
+			<br/>The default value is the result of the interpreted expression defined on VSM.
+		</p>
+		<p>
+			<img border="0" src="images/dialog_TypedVariableValue.png"/>
+		</p>
+		<p>
+			<strong>EDataType class instantiation</strong>
+		</p>
+		<p>Note that whatever the type of variable is, the field is a text field.</p>
+		<p>In order that the EDataType class is instantiable, the value given by the user should follow rules which depend on how it is triggered by EMF mechanism.
+			<br/>If the EFactory of the EDataType is not overloaded, the class corresponding to the EDataType must have a constructor with a String parameter. At instantiation, the string argument will be the string input by the user. This string argument is translated into the right data in the class constructor for example.
+			<br/>What is done in the constructor described above can also be done overloading the EDataType class EFactory.
+		</p>
+		<p>Example:
+			<br/>If your class represents a point coordinates with two fields x and y of type int, the string input by the user could be 
+			<em lang="integer">,[integer]</em>. This kind of information could be given to the user through the 
+			<em>User documentation</em>
+		</p>
+		<h2 id="validation">Validation Rules</h2>
+		<p>A diagram description can define custom validation rules which will only be applied when launching a validation on an instance of this diagram (using the 
+			<em>Validate</em> operation in the context menu). To define validation rules you must first create a 
+			<em>Validation</em> element inside the diagram, and then add one or more 
+			<em>Semantic Validation Rule</em> or 
+			<em>View Validation Rule</em>. Both kinds of rules are similar, but semantic rules check the structure of the underlying semantic model which view validation rules can check the structure of the representation itself. When a rule is violated, a marker will appear on the diagram on the problematic elements and in the 
+			<em>Problems</em> view.
+		</p>
+		<p>Each rule has a 
+			<em>Level</em>, which represents its severity when it is violated. It can be 
+			<em>Information</em>, 
+			<em>Warning</em> or 
+			<em>Error</em>. It also has a computed 
+			<em>Message</em> expression (evaluated in the context of the checked element) to provide the user an explanation of the problem detected. Semantic validation rules must specify 
+			<em>Target Class</em>, and will be checked on all the instances of that class in the semantic model. View validation rules have instead of a list of 
+			<em>Targets</em> which are the mappings it applies to.
+		</p>
+		<p>Inside a rule you must define one or more 
+			<em>Audit</em>, which perform the actual checks using an 
+			<em>Audit Expression</em>. The expression will be evaluated on each (semantic or graphical) element to check, and must return 
+			<em>false</em> if the rule is violated. If a rule contains several audits, it is triggered if at least one of them detects an issue.
+		</p>
+		<p>You may also define one or more 
+			<em>Fixes</em> inside a rule. When a rule is violated, if it defines fixes they will be available to the end-users in the context menu of the corresponding marker. Each fix has a name and a body. The body is defined in the same way as the body of a tool, using any of the available 
+			<a href="../general/Model_Operations.html">model operations</a>. It should perform any required change in the model to fix the issue detected by the validation rule, if possible.
+		</p>
+		<h2 id="extensibility">Diagram Extensibility Features</h2>
+		<p>Sirius has specific support for extending and refining diagram descriptions and mappings without modifying the original. The extensions are applied transparently when the viewpoint they are defined in are enabled, and removed when the viewpoint is disabled.</p>
+		<p>For example, if a base viewpoint 
+			<em>V1</em> defines a diagram description 
+			<em>D</em>, you can define a separate viewpoint 
+			<em>V2</em> (maybe even from inside a different plug-in, you do not need access to the source of 
+			<em>V1</em>) and in 
+			<em>V2</em> define an extension 
+			<em>DE</em> to 
+			<em>D</em>. When users enable only 
+			<em>V1</em>, they see 
+			<em>D</em> as defined in 
+			<em>V1</em>. When they enable both 
+			<em>V1</em> and 
+			<em>V2</em>, 
+			<em>D</em> is automatically extended by 
+			<em>DE</em>.
+		</p>
+		<p>Note that a given diagram type can be extended by multiple extensions at the same time. However if several extensions try to redefine elements defined in the base diagram (instead of just adding new elements), the result is not specified.</p>
+		<h3 id="diagram_extension">Diagram Extensions</h3>
+		<p>A 
+			<em>Diagram Extension</em> is defined directly inside a 
+			<em>Viewpoint</em> element, and it must specify precisely which diagram description it extends using the 
+			<em>Viewpoint URI</em> and 
+			<em>Representation Name</em> properties (the 
+			<em>Name</em> property is the name of the extension itself).
+		</p>
+		<p>The 
+			<em>Viewpoint URI</em> indicates in which viewpoint the extended diagram is defined. It has the following syntax: 
+			<code>viewpoint:/pluginId/ViewpointName</code>, where 
+			<code>pluginId</code> is the identifier of the Eclipse plug-in in which the viewpoint is defined, and 
+			<code>ViewpointName</code> is the name of the viewpoint. Note that the name must be unique among all the viewpoints defined in all the VSMs contributed by that plug-in.
+		</p>
+		<p>The 
+			<em>Representation Name</em> is simply the identifier (
+			<em>Id</em> field) of the diagram to extend, which is defined inside the specified viewpoint.
+		</p>
+		<p>A 
+			<em>Diagram Extension</em> can specify the 
+			<em>Metamodels</em> of the semantic elements it represents if it supports types of elements which were not represented in the extended diagram. Inside a 
+			<em>Diagram Extension</em>, you can define 
+			<a href="#validation">validation rules</a>, 
+			<a href="#filters">filters</a> and additional 
+			<a href="#layers">layers</a>. When the extension is enabled (i.e. when both the viewpoint it is defined in and the one it extends are enabled), the elements defined in the extension will be merged (added) into the base diagram&#8217;s definition as if they had been defined directly in the base diagram.
+		</p>
+		<p>The simplest use case of a diagram extension is to simply 
+			<em>augment</em> the base diagram with new graphical elements, tools, filters and validation rules. However you can also use the notion of 
+			<em>Mapping Import</em> to 
+			<em>modify</em> the definition of some of the base diagram&#8217;s mappings. 
+			<em>Mapping Imports</em> are actually independent of diagram extensions, and can be used inside a normal diagram description as their semantic is defined in terms of layers activation, but their main use case is when using diagram extensions.
+		</p>
+		<p>You can use regular expression in 
+			<em>Viewpoint URI</em> and 
+			<em>Representation Name</em> fields. This allows to extend several diagrams with one single 
+			<em>Diagram Extension</em>. You should use regular expressions only to define a 
+			<em>Diagram Extension</em> that contains only 
+			<a href="#customization">style customization</a>.
+			<br/>These fields are considered as regular expressions if they contain at least one of these characters : &#8220;*&#8221;, &#8220;[&#8221;, &#8220;]&#8221;, &#8220;(&#8221;, &#8220;)&#8221; or &#8220;?&#8221;.
+		</p>
+		<h3 id="mapping_imports">Mapping Imports</h3>
+		<p>A mapping import is used to 
+			<em>specialize</em> (modify) a mapping defined somewhere else (in an other layer, an other graphical representation or an other viewpoint). This feature is only available for diagram kind representations.
+		</p>
+		<p>For example, if a layer 
+			<em>L1</em> defines a mapping 
+			<em>M1</em> and an other layer 
+			<em>L2</em> defines a mapping import 
+			<em>M2</em> which imports 
+			<em>M1</em>, then 
+			<em>M2</em> may override/overload some of the features of 
+			<em>M1</em> like a more specific &#8220;Semantic Candidate Expression&#8221; or a conditional style taking into account other specific aspects. When only 
+			<em>L1</em> is activated the normal definition of 
+			<em>M1</em> is applied. If 
+			<em>L2</em> is also activated, 
+			<em>M2</em> is applied instead of 
+			<em>M1</em>, the overloaded features in 
+			<em>M2</em> replace the ones of 
+			<em>M1</em> and  the new defined features or sub-elements are added.
+		</p>
+		<p>You can define 
+			<em>Node Mapping Imports</em>, 
+			<em>Container Mapping Imports</em> or 
+			<em>Edge Mapping Imports</em>. They all behave in the same way. For each one you must specify the 
+			<em>Imported Mapping</em> (typically from another layer defined in a diagram you are extending or in the same diagram). Mapping imports have all the properties of normal mappings, but when you set an explicit value for a property in a mapping import:
+		</p>
+		<ul>
+			<li>if it is an attribute (for example the 
+				<em>Semantic Candidates Expression</em>), the value defined in the mapping import will override the one defined in the imported mapping.
+			</li>
+			<li>if it is a reference (for example the 
+				<em>Reused Bordered Node Mappings</em> on a 
+				<em>Node Mapping Import</em>), the values defined in the mapping import will be 
+				<em>added</em> to the ones defined in the imported mapping.
+			</li>
+		</ul>
+		<p>Two parameters which are specific to import mappings can change this last behavior:</p>
+		<ul>
+			<li>If the 
+				<em>Inherits Ancestor Filters</em> flag is set, the 
+				<a href="#mapping_filter">mapping filters</a> which apply to the imported mapping will also apply to the import itself. However if you do 
+				<strong>not</strong> want to inherit these filters, you can un-check the 
+				<em>Inherits Ancestor Filters</em> flag. In that case only the mapping filters which explicitly target the import mapping will apply to it.
+			</li>
+			<li>If the 
+				<em>Hide Sub-Mappings</em> flag is set, then when the import mapping is active, only the sub-mappings it defines explicitly (including bordered node mappings) are taken into account. This is different from the standard behavior in which both the sub-mappings defined in the imported mapping and in the import mapping are used. For example, this means that if the imported mapping defines a bordered node mapping, a mapping import can 
+				<em>hide</em> these bordered nodes by using this flag and simply not define any bordered node mapping of its own.
+			</li>
+		</ul>
+		<h2 id="customization">Diagram Styles Customization</h2>
+		<p>Diagram elements support conditional styles, which can be used to completely change the appearance of an element depending on some arbitrary condition. However, defining a complete conditional style can be cumbersome when you just want to customize a specific aspect of the element&#8217;s style (for example a single color). A more fine grained customization of styles is possible using 
+			<em>Style Customization</em> elements.
+		</p>
+		<p>To use this feature, you must first create a 
+			<em>Style Customizations</em> element inside a layer (from the 
+			<em>New Customization...</em> context sub-menu). Only one such element can exist in a layer, and it serves as a container for all style customizations the layer defines. Inside a 
+			<em>Style Customizations</em> you can define any number of individual 
+			<em>Style Customization</em> elements, each of which re-groups a set of actual customizations which can be either an 
+			<em>Property Customization (by expression)</em> or a 
+			<em>Property Customization (by selection)</em>. Both kinds work on the same principle, and you must define:
+		</p>
+		<ul>
+			<li>The style elements to customize, using the 
+				<em>Applied On</em> attribute. You can specify multiple styles if the customization should apply to different style elements or to different styles for a given element (e.g. the default and some or all of the conditional styles).
+			</li>
+			<li>The feature to customize, using the 
+				<em>Property Name</em> field (you can use completion with 
+				<em>Ctrl+Space</em> to see the list of possible values depending on which element(s) you selected in 
+				<em>Applied On</em>).
+			</li>
+			<li>And finally the value to set for that feature. For references (
+				<em>Property Customization (by selection)</em>), you must select the actual value from the available choices in the combo box. For attributes (
+				<em>Property Customization (by expression)</em>), the value is computed using an interpreted expression evaluated in the context of the semantic element whose style is being customized.
+			</li>
+			<li>The 
+				<strong>Apply on all</strong> option offers the possibility to customize the feature for all styles available in the diagram. That option avoids you to make an exhaustive list of all styles to customize. You can also make your customizations available for several representations by using a regular expression in Viewpoint URI and Representation Name fields (see 
+				<a href="#diagram_extension">Diagram Extension Description</a> for more details).
+			</li>
+		</ul>
+		<p>A 
+			<em>Style Customization</em> can define a predicate expression to control whether or not it should apply. If defined, the expression is evaluated in the context of a semantic element to determine whether or not the customizations should be applied. If no expression is defined, the customizations will apply. If a 
+			<em>Style Customization</em> applies to a given element, the 
+			<em>base style</em> that the element would normally have will be modified by applying all the 
+			<em>Property Customization</em> (by expression and by reference) defined in the 
+			<em>Style Customization</em> , if they are compatible with that base style.
+		</p>
+		<p>A 
+			<em>Style Customizations</em> group can also contain 
+			<em>Style Customization Reuse</em> elements. These can be used to reuse customizations defined elsewhere in a different context (specified using the 
+			<em>Reuse</em> property), and apply them to other elements (specified using the 
+			<em>Applied On</em> property). They will behave as if they had been defined locally inside a 
+			<em>Style Customization</em> with no precondition.
+		</p>
+		<h3 id="enum_customization">Style Customization of an Enumerator property </h3>
+		<p>To customize a property of type Enumerator, the value expression must return an instance of Enumerator. Here is some examples of value expression:</p>
+		<ul>
+			<li>Examples for sourceArrow property (of kind 
+				<code>EdgeArrows</code>):
+				<ul>
+					<li>
+						<code>aql:diagram::EdgeArrows::FillDiamond</code>
+					</li>
+					<li>
+						<code>aql:'FillDiamond'</code> or 
+						<code>FillDiamond</code> also works but it is not recommended to use the literal value of an instance of Enumerator.
+					</li>
+				</ul>
+			</li>
+			<li>Examples for labelFormat property (of kind 
+				<code>EList&lt;FontFormat&gt;</code>):
+				<ul>
+					<li>
+						<code>aql:viewpoint::FontFormat::bold</code> to set a label in bold
+					</li>
+					<li>
+						<code>aql:OrderedSet{viewpoint::FontFormat::bold, viewpoint::FontFormat::italic}</code> to set a label in bold and italic
+					</li>
+					<li>
+						<code>service:fontFormatBold()</code> with a service like
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<pre>public FontFormat fontFormatBold(EObject any) {
+        return FontFormat.BOLD_LITERAL;
+    }
+</pre>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation1.png b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation1.png
new file mode 100644
index 0000000..97a9a90
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation2.png b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation2.png
new file mode 100644
index 0000000..261014a
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation2.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation3.png b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation3.png
new file mode 100644
index 0000000..4cf6f91
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/compartmentsLayout-Creation3.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_borderNode.png b/doc/6.0.x/specifier/diagrams/images/decoration_borderNode.png
new file mode 100644
index 0000000..94e7aa9
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_borderNode.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_example.png b/doc/6.0.x/specifier/diagrams/images/decoration_example.png
new file mode 100644
index 0000000..860c703
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_example.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_group_example.png b/doc/6.0.x/specifier/diagrams/images/decoration_group_example.png
new file mode 100644
index 0000000..6b95ad1
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_group_example.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_group_tooltip_example.png b/doc/6.0.x/specifier/diagrams/images/decoration_group_tooltip_example.png
new file mode 100644
index 0000000..2c3d82b
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_group_tooltip_example.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_positions.png b/doc/6.0.x/specifier/diagrams/images/decoration_positions.png
new file mode 100644
index 0000000..c933b69
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_positions.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/decoration_tooltip_example.png b/doc/6.0.x/specifier/diagrams/images/decoration_tooltip_example.png
new file mode 100644
index 0000000..868b351
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/decoration_tooltip_example.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/dialog_TypedVariableValue.png b/doc/6.0.x/specifier/diagrams/images/dialog_TypedVariableValue.png
new file mode 100644
index 0000000..9c22f7e
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/dialog_TypedVariableValue.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/mappingBasedDecoration.png b/doc/6.0.x/specifier/diagrams/images/mappingBasedDecoration.png
new file mode 100644
index 0000000..58935f4
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/mappingBasedDecoration.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_After.png b/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_After.png
new file mode 100644
index 0000000..8e3b1d1
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_After.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_Before.png b/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_Before.png
new file mode 100644
index 0000000..f497672
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/references/reconnect/ReconnectTool_Before.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/semanticBasedDecoration.png b/doc/6.0.x/specifier/diagrams/images/semanticBasedDecoration.png
new file mode 100644
index 0000000..46c845b
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/semanticBasedDecoration.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Gradient.png b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Gradient.png
new file mode 100644
index 0000000..d08c3da
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Gradient.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Image.png b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Image.png
new file mode 100644
index 0000000..7f399bf
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Image.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Parallelogram.png b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Parallelogram.png
new file mode 100644
index 0000000..36af4e5
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Container_Style_Parallelogram.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Containers_on_diagram_or_another_container.png b/doc/6.0.x/specifier/diagrams/images/styles/Containers_on_diagram_or_another_container.png
new file mode 100644
index 0000000..596e867
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Containers_on_diagram_or_another_container.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Containers_with_compartments.png b/doc/6.0.x/specifier/diagrams/images/styles/Containers_with_compartments.png
new file mode 100644
index 0000000..e831e29
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Containers_with_compartments.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Centering.png b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Centering.png
new file mode 100644
index 0000000..47ea6ed
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Centering.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Manhattan.png b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Manhattan.png
new file mode 100644
index 0000000..a079f4f
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Manhattan.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Straight.png b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Straight.png
new file mode 100644
index 0000000..7a7f657
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Straight.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Tree.png b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Tree.png
new file mode 100644
index 0000000..3cdfdc5
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_Tree.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_bracketStyle.png b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_bracketStyle.png
new file mode 100644
index 0000000..584ef20
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Edge_Style_bracketStyle.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Bordered_Node.png b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Bordered_Node.png
new file mode 100644
index 0000000..9defb26
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Bordered_Node.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Container.png b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Container.png
new file mode 100644
index 0000000..a22fdca
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Container.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_List_Container.png b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_List_Container.png
new file mode 100644
index 0000000..890dd2b
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_List_Container.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Node.png b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Node.png
new file mode 100644
index 0000000..f83d839
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Graphical_Vocabulary_Node.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/List_container_with_items.png b/doc/6.0.x/specifier/diagrams/images/styles/List_container_with_items.png
new file mode 100644
index 0000000..bd2918a
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/List_container_with_items.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Dot.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Dot.png
new file mode 100644
index 0000000..9b4b8e2
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Dot.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Ring.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Ring.png
new file mode 100644
index 0000000..59a61d1
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Ring.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Square.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Square.png
new file mode 100644
index 0000000..154a111
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Square.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Stroke.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Stroke.png
new file mode 100644
index 0000000..a2bd611
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Stroke.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Triangle.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Triangle.png
new file mode 100644
index 0000000..0d916ed
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Basic_Triangle.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Custom.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Custom.png
new file mode 100644
index 0000000..67147a4
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Custom.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Diamond.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Diamond.png
new file mode 100644
index 0000000..f05cfd5
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Diamond.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Ellipse.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Ellipse.png
new file mode 100644
index 0000000..317acca
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Ellipse.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Gauge.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Gauge.png
new file mode 100644
index 0000000..a83278d
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Gauge.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Image.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Image.png
new file mode 100644
index 0000000..108574f
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Image.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Note.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Note.png
new file mode 100644
index 0000000..ed55ba0
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Note.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Square.png b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Square.png
new file mode 100644
index 0000000..c18323f
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Node_Style_Square.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Pane-Based_Selection_Tool.png b/doc/6.0.x/specifier/diagrams/images/styles/Pane-Based_Selection_Tool.png
new file mode 100644
index 0000000..40da8b4
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Pane-Based_Selection_Tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/Selection_Tool.png b/doc/6.0.x/specifier/diagrams/images/styles/Selection_Tool.png
new file mode 100644
index 0000000..3a329fe
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/Selection_Tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/authorizedSides.png b/doc/6.0.x/specifier/diagrams/images/styles/authorizedSides.png
new file mode 100644
index 0000000..03d963f
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/authorizedSides.png
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Horizontal.jpg b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Horizontal.jpg
new file mode 100644
index 0000000..8d247b2
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Horizontal.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Square.jpg b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Square.jpg
new file mode 100644
index 0000000..fb29daa
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Square.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Vertical.jpg b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Vertical.jpg
new file mode 100644
index 0000000..fd1882a
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/styles/mini_Node_Gauge_Vertical.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/diagrams/images/typedVariable_PropertyView.png b/doc/6.0.x/specifier/diagrams/images/typedVariable_PropertyView.png
new file mode 100644
index 0000000..d5ccc16
--- /dev/null
+++ b/doc/6.0.x/specifier/diagrams/images/typedVariable_PropertyView.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/Colors.html b/doc/6.0.x/specifier/general/Colors.html
new file mode 100644
index 0000000..e35cc0a
--- /dev/null
+++ b/doc/6.0.x/specifier/general/Colors.html
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Colors</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="DefiningColorPalettes">Defining Color Palettes</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#DefiningColorPalettes">Defining Color Palettes</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#system_colors">System Colors</a>
+					</li>
+					<li>
+						<a href="#fixed_colors">User Fixed Colors</a>
+					</li>
+					<li>
+						<a href="#computed_colors">Computed Colors</a>
+					</li>
+					<li>
+						<a href="#interpolated_colors">Interpolated Colors</a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Whenever you have to specify colors for a style, in any kind of representation supported by Sirius, you can use either one of the pre-defined system colors or one which you have defined yourself in a 
+			<em>Users Color Palette</em>. The palette is created directly inside the 
+			<em>Viewpoint</em> element, and its colors can be used by any representation.
+		</p>
+		<p>You can define three different kind of colors inside a palette:</p>
+		<ul>
+			<li>
+				<em>User Fixed Colors</em>
+			</li>
+			<li>
+				<em>Computed Colors</em>
+			</li>
+			<li>
+				<em>Interpolated Colors</em>
+			</li>
+		</ul>
+		<p>All have a name, which should be unique. It is useful to give semantic names to the colors (i.e. &#8220;Software System&#8221; instead of &#8220;Navy Blue&#8221;) so that they can be easily used consistently across all your representations. This way if you decide to change to color used for some kind of element you can be sure the new color will be applied everywhere.</p>
+		<h2 id="system_colors">System Colors</h2>
+		<p>System colors are not defined in your palette, but are always available.</p>
+		<p>	
+			<img border="0" src="images/standard_colors.png"/>
+		</p>
+		<h2 id="fixed_colors">User Fixed Colors</h2>
+		<p>User Fixed Colors are the simplest: they are simply defined by fixed integer values for their 
+			<em>Red</em>, 
+			<em>Green</em> and 
+			<em>Blue</em> components. All components values must be between 0 and 255. You can either specify them numerically or using a color wheel.
+		</p>
+		<h2 id="computed_colors">Computed Colors</h2>
+		<p>Computed color have RGB components values which are dynamically computed. You must specify one expression for each of the 
+			<em>Red</em>, 
+			<em>Green</em> and 
+			<em>Blue</em> components. They will be evaluated in the context of the semantic target element of the graphical element where the color is used. The expressions should return a number between 0 and 255.
+		</p>
+		<h2 id="interpolated_colors">Interpolated Colors</h2>
+		<p>This element is used to specify a custom color which create dynamically a color between two or more 
+			<em>Color Steps</em>. Those 
+			<em>Color Steps</em> are defined as children of the 
+			<em>Interpolated Color</em>.
+		</p>
+		<p>Each 
+			<em>Color Step</em> associates a color (from the palette) with a numerical 
+			<em>Associated Value</em> (which can be computed). The successive color steps in an interpolated color should have increasing associated values.
+		</p>
+		<p>The 
+			<em>Interpolated Color</em> itself has a 
+			<em>Color Value Computation Expression</em>, which should return a numeric value.
+		</p>
+		<ul>
+			<li>If the value is below or equal the value associated with the first color step, the final color is the one of the first color step.</li>
+			<li>If the value is above or equal the value associated with the last color step, the final color is the one of the last color step.</li>
+			<li>If the value is between the associated values of two successive color steps 
+				<em>S1</em> and 
+				<em>S2</em>, the final color is interpolated between the colors of 
+				<em>S1</em> and 
+				<em>S2</em>. Each of the RGB components is linearly interpolated between the ones of 
+				<em>S1</em> and 
+				<em>S2</em> according to the distance between the associated values.
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/general/Model_Operations.html b/doc/6.0.x/specifier/general/Model_Operations.html
new file mode 100644
index 0000000..598893f
--- /dev/null
+++ b/doc/6.0.x/specifier/general/Model_Operations.html
@@ -0,0 +1,437 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Model_Operations</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingModelOperations">Specifying Model Operations</h1>
+		<h2 id="introduction">Introduction</h2>
+		<p>Most modelers created with Sirius are not just used to view models, but also to edit them. The edition behavior is specified through different kinds of tools (e.g. 
+			<em>Direct Edit</em>, 
+			<em>Creation Tool</em>, etc.) which depend on the dialect. The behavior of each tool of each dialect is specified inside the VSM using a small 
+			<em>Domain Specific Language</em> of model operations. This document describes all the model operations supported by this language. Unless otherwise specified, model operations can be used/composed for any tool of any dialect.
+		</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingModelOperations">Specifying Model Operations</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#flow">Flow Control Operations</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#begin">Begin</a>
+							</li>
+							<li>
+								<a href="#goto">Change Context</a>
+							</li>
+							<li>
+								<a href="#if">If</a>
+							</li>
+							<li>
+								<a href="#switch">Switch/Case</a>
+							</li>
+							<li>
+								<a href="#for">For</a>
+							</li>
+							<li>
+								<a href="#let">Let</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#model_change">Model Change Operations</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#create_instance">Create Instance</a>
+							</li>
+							<li>
+								<a href="#set">Set</a>
+							</li>
+							<li>
+								<a href="#unset">Unset</a>
+							</li>
+							<li>
+								<a href="#remove">Remove</a>
+							</li>
+							<li>
+								<a href="#move">Move</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#representations">Representations Operations</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#create_view">Create View</a>
+							</li>
+							<li>
+								<a href="#created_edge_view">Create Edge View</a>
+							</li>
+							<li>
+								<a href="#delete_view">Delete View</a>
+							</li>
+							<li>
+								<a href="#navigation">Navigation</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#dialogandwizard">Dialog &amp; Wizard</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#dialog">Open Dialog</a>
+							</li>
+							<li>
+								<a href="#wizard">Open Wizard</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#extensions">Java Extensions</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#external_java_action">External Java Action</a>
+							</li>
+							<li>
+								<a href="#external_java_action_call">External Java Action Call</a>
+							</li>
+							<li>
+								<a href="#standard_java_actions">Standard Java Actions</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="flow">Flow Control Operations</h2>
+		<h3 id="begin">Begin</h3>
+		<p>This element has no property. It only serves as an entry point to the specification of a tool&#8217;s behavior. Note that a 
+			<em>Begin</em> element can only contain a single operation. It is recommended to begin a tool&#8217;s specification by creating a no-op 
+			<a href="#goto">
+				<em>Change Context</em>
+			</a> operation directly inside the 
+			<em>Begin</em>, as a 
+			<em>Change Context</em> can contain multiple operations.
+		</p>
+		<h3 id="goto">Change Context</h3>
+		<p>Every model operation is executed in the context of a specific model element (the equivalent of 
+			<code>this</code> or 
+			<code>self</code> in a programming language). Usually, at the beginning of a tool, the context is the semantic element to which the tool is applied (the actual details can vary from tool to tool, refer to their documentation). The 
+			<em>Change Context</em> operation changes the context to a new element and then executes any sub-operations it contains in sequence (in the order of definition).
+		</p>
+		<p>The new context element to go to is specified by the 
+			<em>Browse Expression</em> property of the 
+			<em>Change Context</em> operation. It is executed in the context element of the 
+			<em>Change Context</em> operation itself, and should return another model element (which will become the context for the sub-operations). If the expression does not return any element, it is not an error, but the sub-operations are not executed. If the expression returns several elements, only the first one is retained and used as the context for the sub-operations.
+		</p>
+		<p>
+			<em>Tip:</em> Using a no-op 
+			<em>Change Context</em> (with a browse expression like 
+			<code>aql:self</code>  which does not actually change the context) can be useful to group multiple operations into a single &#8220;block&#8221;, especially in contexts where only one model operation is supported (e.g. inside a 
+			<em>Begin</em> element).
+		</p>
+		<h3 id="if">If</h3>
+		<p>The 
+			<em>If</em> operation is used for condition execution. It first evaluates its 
+			<em>Condition Expression</em> in the current context, and if the result of this expression (interpreted as a boolean) is true then it executes any sub-operations it contains in sequence (in the order of definition). If the expression returns a false value, 
+			<em>If</em> does nothing.
+		</p>
+		<p>
+			<em>Note:</em> &#8220;else&#8221; and &#8220;else if&#8221; constructs are not supported directly, but the same effect can be achieved using the 
+			<a href="#switch">
+				<em>Switch</em>
+			</a> operation with the appropriate 
+			<em>Cases</em>.
+		</p>
+		<h3 id="switch">Switch/Case</h3>
+		<p>A 
+			<em>Switch</em> operation is used for branching. It is a generalization of the 
+			<em>If</em> constructs which supports multiple conditions. The 
+			<em>Switch</em> operation itself has not property; it serves only as a container for one or more 
+			<em>Case</em> elements, and an optional 
+			<em>Default</em> element. Each 
+			<em>Case</em> element has a 
+			<em>Condition Expression</em>, and may contain sub-operations. The 
+			<em>Default</em> element has no property but may contain sub-operations.
+		</p>
+		<p>When a 
+			<em>Switch</em> is executed, the 
+			<em>Condition Expressions</em> or each of its 
+			<em>Case</em> elements is evaluated (in the current context) until one returns a true value. If one is found, the sub-operations of the 
+			<em>Case</em> element are executed in sequence, and the rest of the 
+			<em>Switch</em> is ignored (the remaining conditions, if any, are not tested). If none of the 
+			<em>Cases</em> has an expression which returns true, then the sub-operations of the 
+			<em>Default</em> element, if any, are executed in sequence.
+		</p>
+		<p>A combination of 
+			<em>Switch/Case/Default</em> is equivalent to 
+			<code>if (...) { ... } elsif (...) { ... } else { ... }</code> in a programming language.
+		</p>
+		<h3 id="for">For</h3>
+		<p>The 
+			<em>For</em> element is used to loop over collections of model elements and execute some operations on all of them. The 
+			<em>Expression</em> of the 
+			<em>For</em> element is executed in the current context, and should return a collection of model elements. The 
+			<em>Iterator name</em> property is a fixed string (
+			<code>i</code> by default) which give the name of the variable used for the iteration.
+		</p>
+		<p>After evaluating the 
+			<em>Expression</em>, each of the element in the returned collection will be bound in turn to a variable named as specified in 
+			<em>Iterator name</em> before the sub-operations of the 
+			<em>For</em> element are executed in sequence (once for each of the returned element). Inside the sub-operations, you can access the current element of the iteration using the variable named in 
+			<em>Iterator name</em>. The actual syntax will vary depending on the query language you use.
+		</p>
+		<h3 id="let">Let</h3>
+		<p>The 
+			<em>Let</em> operation is used in order to create a new variable which can be used by child model operations. The 
+			<em>Variable name</em> is a fixed string used to access the variable in child model operation. The 
+			<em>Value expression</em> is executed in order to set the value of the variable. The 
+			<em>Let</em> operation is similar to a 
+			<em>For</em> operation with an expression returning only one element for the iteration. If the 
+			<em>Variable name</em> is &#8220;self&#8221;, the behavior of the 
+			<em>Let</em> will be the same as the behavior of a 
+			<em>Change Context</em>. It is not recommended to use a 
+			<em>Let</em> with the 
+			<em>Variable name</em> &#8220;self&#8221;, prefer the 
+			<em>Change Context</em> for a better readability of your odesign.
+		</p>
+		<h2 id="model_change">Model Change Operations</h2>
+		<h3 id="create_instance">Create Instance</h3>
+		<p>The 
+			<em>Create Instance</em> operation is used to create new semantic elements to be added into the user&#8217;s model. You must specify : 
+		</p>
+		<ol>
+			<li>the 
+				<em>Type Name</em> (using the same syntax as for 
+				<em>Domain Class</em> properties) of the new object to create
+			</li>
+			<li>the 
+				<em>Reference Name</em> through which the created element will be attached to the current context. 
+			</li>
+		</ol>
+		<p>When the 
+			<em>Create Instance</em> operation is executed, say in the context of semantic element 
+			<em>S</em>, a new instance of the specified type name is created and then added to 
+			<em>S</em>'s reference named in 
+			<em>Reference Name</em>. The reference name must correspond to a valid containment reference for the context element of the operation, otherwise the newly created object will not be properly integrated into the semantic model.
+		</p>
+		<p>The 
+			<em>Variable Name</em> property can be set to any valid variable name (
+			<code>instance</code> by default). The named variable is assigned with the newly created object, so that it can be accessed from the remaining operations in the tool. 
+		</p>
+		<p>Inside the 
+			<em>Create Instance</em> element you can add sub-operations, which will be executed in sequence in the context of the newly created element. This is useful to correctly initialize the new object&#8217;s properties.
+		</p>
+		<h3 id="set">Set</h3>
+		<p>The 
+			<em>Set</em> operation is used to set the value of a feature (attribute or reference) of the current element. When executed, it evaluates the 
+			<em>Value Expression</em> in the current context element. The expression&#8217;s result is then 
+			<em>set</em> as the new value of the feature named in 
+			<em>Feature Name</em> of the current context element. The value returned by the expression must be type-compatible with the named feature.
+		</p>
+		<p>Inside the 
+			<em>Set</em> element you can add sub-operations, which will be executed in sequence in the same context.
+		</p>
+		<h3 id="unset">Unset</h3>
+		<p>The 
+			<em>Unset</em> operation is used to remove elements from a feature (attribute or reference) of the current element. When executed, it evaluates the 
+			<em>Element Expression</em> in the current context element, which may return one or more elements. Each of the returned elements are then removed from the feature named in 
+			<em>Feature Name</em> of the current context element. It is not an error if some of the returned elements are not actually part of the specified feature, they are simply ignored.
+		</p>
+		<p>Inside the 
+			<em>Unset</em> element you can add sub-operations, which will be executed in sequence in the same context.
+		</p>
+		<h3 id="remove">Remove</h3>
+		<p>The 
+			<em>Remove</em> operation is used to remove the current element from its parent element. It takes no parameter. When executed, it simply removes the element from its containing feature. 
+		</p>
+		<h3 id="move">Move</h3>
+		<p>The 
+			<em>Move</em> operation is used to move the current element from its current parent into a new one. The 
+			<em>New Container Expression</em> is evaluated in the current context and should return the (single) element in which to move. The 
+			<em>Feature Name</em> indicates the containment feature of the new parent in which to add the current element.
+		</p>
+		<h2 id="representations">Representations Operations</h2>
+		<h3 id="create_view">Create View</h3>
+		<p>This operation is specific to diagrams. It can be used to explicitly create a view (graphical representation) of the current element, which is mostly useful when using unsynchronized diagrams and/or mappings.</p>
+		<p>The 
+			<em>Container View Expression</em> is evaluated in the context of the current semantic element, and should return the view (
+			<code>DDiagram</code>, 
+			<code>DNode</code> or 
+			<code>DNodeContainer</code>) in which the new view should appear. The 
+			<em>Mapping</em> indicates the kind of view to create. If the container view expression returns an element which can contain a view for the current semantic element and specified mapping (and does not already contain one), the view will be created, even if the diagram and/or mapping is not synchronized.
+		</p>
+		<p>Note that because the 
+			<em>Container View Expression</em> is evaluated in the context of a semantic element and must return a view, you must use the cross-referencer to navigate from the semantic model to the view model. Using the Acceleo 3 language you can use  the 
+			<code>eInverse()</code> service to find which elements point to the current one and then select only those which do it  through a reference named 
+			<code>target</code> (the views in Sirius diagrams reference their target semantic element through this reference).
+		</p>
+		<p>The 
+			<em>Variable Name</em> property can be set to any valid variable name (
+			<code>createdView</code> by default). The named variable is assigned with the newly created view, so that it can be accessed from the remaining operations in the tool.
+		</p>
+		<h3 id="created_edge_view">Create Edge View</h3>
+		<p>This operation is specific to diagrams. It can be used to explicitly create an edge view (graphical representation) of the current element, which is mostly useful when using unsynchronized diagrams and/or mappings.</p>
+		<p>It works similarly to the 
+			<a href="#create_view">
+				<em>Create View</em>
+			</a> operation, except that in addition to the 
+			<em>Container View Expression</em>, you must also provide a 
+			<em>Source Expression</em> and a 
+			<em>Target Expression</em>, which should return the semantic elements between which the edge should be created, if source and target views are found regarding the selected edge mapping properties. 
+		</p>
+		<h3 id="delete_view">Delete View</h3>
+		<p>This operation is specific to diagrams. It can be used to explicitly remove a view (graphical representation) from the diagram, without deleting the corresponding semantic element. It is mostly useful when using unsynchronized diagrams and/or mappings.</p>
+		<p>It has no parameter and works similarly to the 
+			<em>Remove</em> operation; you must already be in the context of the view element you want to delete.
+		</p>
+		<h3 id="navigation">Navigation</h3>
+		<p>This operation is specific to diagrams. It can be used to navigate to another diagram representing the current element. The 
+			<em>Diagram Description</em> indicates the type of diagram to open, and the 
+			<em>Create if not existent</em> flag indicates whether a new diagram of the specified type should be created on the current element if none exists.
+		</p>
+		<p>The operation does nothing if the current element is not compatible with the specified diagram type or if there is no existing diagram and the 
+			<em>Create if not existent</em> flag is not set.
+		</p>
+		<h2 id="dialogandwizard">Dialog &amp; Wizard</h2>
+		<p>
+			<strong>Warning:</strong> The model operations below are provided by the Sirius properties view plugins. To make sure those operations will be available to the end user, you should add the following plugins in your modeler dependencies:
+		</p>
+		<ul>
+			<li>org.eclipse.sirius.properties</li>
+			<li>org.eclipse.sirius.ui.properties</li>
+		</ul>
+		<p>If those plugins are missing at runtime, Open Dialog and Open Wizard operations will not be executable.</p>
+		<h3 id="dialog">Open Dialog</h3>
+		<p>The 
+			<em>Open Dialog</em> model operation is used in order to open a new dialog where the end user will be able to see and manipulate some pieces of information. You can change the title of the dialog with the 
+			<em>Title expression</em>. This expression must return a string. You can specify one 
+			<em>Page</em> with various 
+			<em>Groups</em> to specify the content of the dialog. You can leverage existing 
+			<em>Pages</em> and 
+			<em>Groups</em> from existing definition of your 
+			<em>Properties View</em>.
+		</p>
+		<p>A dialog can contain multiple buttons. If you do not specify any button, two will be created by default. The first one, with the label &#8220;Cancel&#8221;, will close the dialog and rollback any changes made during the execution of the model operation chain. The second one, with the label &#8220;OK&#8221;, will close the dialog and execute the child model operations of the dialog.   </p>
+		<p>You can create 
+			<em>Dialog Buttons</em> in a dialog in order to specify the behavior of the buttons. If at least one 
+			<em>Dialog Button</em> is specified, the default behavior previously described will not be used anymore. For each 
+			<em>Dialog Button</em> description, a button will be added in the user interface of the dialog. The label of the button can be specified with the 
+			<em>Label expression</em> which must return a string. The 
+			<em>Is Enabled expression</em> is used to determine if the button must be activated or not. This can be used to prevent the end user from finishing an action. This expression must return a boolean. An 
+			<em>Initial Operation</em> is available on a 
+			<em>Dialog Button</em> in order to specify the behavior to execute when the user will click on the button.
+		</p>
+		<p>The specifier can indicate that a 
+			<em>Dialog Button</em> should be considered by default with the 
+			<em>default</em> boolean. When a 
+			<em>Dialog Button</em> should be used by 
+			<em>default</em>, it is focused by default when the dialog is opened. A 
+			<em>Dialog Button</em> can also close the dialog by using the property 
+			<em>Close Dialog On Click</em>. By specifying 
+			<em>false</em> as the value for 
+			<em>Close Dialog On Click</em> and by using an 
+			<em>Initial Operation</em> on the button, a specifier can easily create a button to restore a default value. Finally, a boolean is available in order to 
+			<em>Rollback Changes On Close</em>. By setting this value to true, when the button will be pressed, it will have the same behavior as a regular cancel button by rollbacking the whole model operation chain.
+		</p>
+		<h3 id="wizard">Open Wizard</h3>
+		<p>The 
+			<em>Open Wizard</em> model operation is used in order to open a new wizard to let the end user specify some information using multiple 
+			<em>Pages</em>. You can configure the title of the window by returning a string with the 
+			<em>Window Title</em> expression. You can also configure the title and description of the wizard with the 
+			<em>Title</em> and 
+			<em>Description</em> expressions. Both expressions should also return a string. You can prevent the end user from finishing early the wizard and from switching to another page by returning false for the 
+			<em>Is Page Complete</em> expression. A wizard can be closed only if all 
+			<em>Pages</em> are completed.
+		</p>
+		<p>The wizard can also contain various 
+			<em>Pages</em> and 
+			<em>Groups</em> using the 
+			<em>Properties View</em> domain specific langage available in Sirius. You can leverage existing 
+			<em>Pages</em> and 
+			<em>Groups</em> from existing definition of your 
+			<em>Properties View</em>. A wizard can also contain an 
+			<em>Initial Operation</em> used to define the child model operations to execute when the user will finish the wizard. 
+		</p>
+		<h2 id="extensions">Java Extensions</h2>
+		<p>Beyond the operations which are described above, you can also execute arbitrary Java code in the context of a tool by providing an 
+			<em>External Java Action</em> and invoking it with the corresponding operation.
+		</p>
+		<h3 id="external_java_action">External Java Action</h3>
+		<p>When used as a model operation (instead of as a full-blown tool), you only have to specify the 
+			<em>Java Action Id</em>. It should correspond to an extension of the 
+			<code>org.eclipse.sirius.externalJavaAction</code> extension point which registers a class implementing 
+			<code>org.eclipse.sirius.tools.api.ui.IExternalJavaAction</code> to be executed. You may also create 
+			<em>External Java Action Parameter</em> elements inside the 
+			<em>External Java Action</em> element. Each one has a fixed 
+			<em>Key</em> and a computed 
+			<em>Value</em>, which will be evaluated before the operation is executed and made available to the Java class through the 
+			<code>parameters</code> argument of the 
+			<code>execute()</code> method.
+		</p>
+		<p>As the External Java Action uses the Eclipse extension point mechanism, it means you cannot use it in development mode (when the 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Model</em>
+			</a> you are working on is in the workspace).
+		</p>
+		<h3 id="external_java_action_call">External Java Action Call</h3>
+		<p>
+			<em>External Java Action Call</em> is simply a convenience operation to invoke an 
+			<em>External Java Action</em> defined elsewhere in the VSM, with potentially different parameters.
+		</p>
+		<h3 id="standard_java_actions">Standard Java Actions</h3>
+		<p>The following External Java Actions are available in standard and can be used in 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Models</em>
+			</a>. Note that if you want to create your own actions, you can implement 
+			<code>org.eclipse.sirius.tools.api.ui.IExternalJavaAction</code> directly or inherit from 
+			<code>org.eclipse.sirius.business.api.action.AbstractExternalJavaAction</code> which provides some helper methods.
+		</p>
+		<h4 id="org.eclipse.sirius.business.api.action.moveElement">org.eclipse.sirius.business.api.action.moveElement</h4>
+		<p>This external Java action can be used to move an element to a different position inside a many-valued EReference.</p>
+		<p>Action parameters:</p>
+		<ul>
+			<li>
+				<code>referenceOwner</code> (an EObject): the owner of the EReference to edit.
+			</li>
+			<li>
+				<code>referenceName</code> (a string): the name of the EReference of the owner object to edit. This must be a many-valued, changeable reference.
+			</li>
+			<li>
+				<code>element</code> (an EObject): the element to move inside the list. It is an error if the specified element is not in the list.
+			</li>
+			<li>
+				<code>predecessor</code>: the element of the list right before which element must be moved, i.e. after the operation, predecessor will be the direct predecessor of element in the list. May be null to indicate that element should be moved at the front of the list. If not null, it is an error if predecessor is not in the list.
+			</li>
+		</ul>
+		<h4 id="org.eclipse.sirius.business.api.action.printVariables">org.eclipse.sirius.business.api.action.printVariables</h4>
+		<p>This external Java action is designed to help debugging 
+			<em>Viewpoint Specification Models</em> by printing (in standard output)
+			<br/>all the variables accessible to model operations at the invocation point.
+		</p>
+		<p>Action parameters:</p>
+		<ul>
+			<li>
+				<code>title</code>: an optional string header to print before the list of variables, for example to distinguish different uses of this action in the same VSM.
+			</li>
+			<li>
+				<code>enabled</code>: an optional boolean (defaults to true) to indicate if the action should be executed or not. This is useful to quickly enable/disable an action with minimal editing of the VSM.
+			</li>
+		</ul>
+		<h4 id="org.eclipse.sirius.ui.business.api.action.openHelpSection">org.eclipse.sirius.ui.business.api.action.openHelpSection</h4>
+		<p>This external Java action can be used to open the Eclipse Help system (or actually any web page) on a specific section from inside a tool (typically a popup menu).</p>
+		<p>Action parameters:</p>
+		<ul>
+			<li>
+				<code>href</code>: the URL of the help resource. To open an Eclipse Help section, use an URI of the form 
+				<code>/com.example.pluginName/path/to/document.html#sectionId</code>
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/general/Specifying_Viewpoints.html b/doc/6.0.x/specifier/general/Specifying_Viewpoints.html
new file mode 100644
index 0000000..56d15d0
--- /dev/null
+++ b/doc/6.0.x/specifier/general/Specifying_Viewpoints.html
@@ -0,0 +1,532 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Specifying_Viewpoints</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingViewpoints">Specifying Viewpoints</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingViewpoints">Specifying Viewpoints</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#concepts">Philosophy and Concepts</a>
+					</li>
+					<li>
+						<a href="#vsp">Viewpoint Specification Projects</a>
+					</li>
+					<li>
+						<a href="#vsm">Viewpoint Specification Models</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#vsm_organization">Organization</a>
+							</li>
+							<li>
+								<a href="#common_attributes">Common attributes</a>
+							</li>
+							<li>
+								<a href="#type_names">Type Names</a>
+							</li>
+							<li>
+								<a href="#interpreted_expressions">Interpreted Expressions</a>
+							</li>
+							<li>
+								<a href="#feature_name">Feature Name</a>
+							</li>
+							<li>
+								<a href="#translatable_messages">Translatable Messages</a>
+							</li>
+							<li>
+								<a href="#model_operations">Model Operations</a>
+							</li>
+							<li>
+								<a href="#quick_outline">Quick Outline</a>
+							</li>
+							<li>
+								<a href="#validation">VSM Validation</a>
+							</li>
+							<li>
+								<a href="#dynamic">Dynamic Development</a>
+							</li>
+							<li>
+								<a href="#migration">Migration from Previous Versions</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<p><div style="display: none">
+			<br/>  TODO Add a few screenshots to make the document less dry.
+			<br/></div>
+		</p>
+		<p>This document gives a general overview of how viewpoints are specified, tested and deployed.</p>
+		<h2 id="introduction">Introduction</h2>
+		<p>
+			<em>Sirius</em> is a modeling tool which has been originally created in the context of complex systems modeling. The complexity of those systems makes necessary the collaboration of people with different concerns. For the same domain and on the same data, there are different levels of analysis, different roles and different concerns possible. Each of these correspond to a different 
+			<em>viewpoint</em> on the same 
+			<em>domain  model</em>, and Sirius (the system) gives you all the tools to specify the viewpoints which are relevant to your business domain, whatever it is.
+		</p>
+		<p>More pragmatically, Sirius assumes that you 
+			<em>domain model</em> is defined using 
+			<em>EMF</em> (Eclipse Modeling Framework), which is an industry standard with a rich eco-system. Many existing standards like UML (for software systems) or TOGAF (for Enterprise Architecture) have an implementation based on EMF. You can also easily define your own 
+			<em>Domain-Specific Model</em> (sometimes called 
+			<em>Domain-Specific Language</em>) to more precisely suit your specific needs and avoid unnecessary complexities. While this part (the domain specification) is not strictly in the scope of Sirius, the system provides a graphical modeler to ease the creation of your own 
+			<em>DSM</em> (Domain-Specific Model).
+		</p>
+		<p>Given such a domain model, which defines concepts and their relations in the abstract, Sirius will allow you to easily specify 
+			<em>concrete representations</em> of these models. Representations can be diagrams, tables, matrices (cross-tables) or hierarchies (trees). You can define as many of them as you need, some more detailed than others, some customized for certain tasks or roles (e.g. initial design, review, certification, etc.). These representations are not just static: provided you specify the appropriate tools (see below), they can be complete modeling environments where users can create, modify and validate their designs. Representations can be logically organized in 
+			<em>viewpoints</em>, and end-users can enable or disable viewpoints at will to work on the same model through different, but logically consistent, points of view.
+		</p>
+		<p>The main strengths of the Sirius platform can be summarized as is:</p>
+		<ul>
+			<li>it is based on an open and widely used 
+				<em>industry standard</em> (the Eclipse Modeling Framework);
+			</li>
+			<li>it can 
+				<em>adapt itself</em> to any EMF-compatible DSM: it can use standards like UML if they suit your needs, but it does not force you to do so, and you can easily create your own DSM which can thus be simpler and better suited to your specific needs;
+			</li>
+			<li>it provides a 
+				<em>strong separation</em> between the semantic models it manipulates, where your business value resides, and the representation models (which deal with, for example, the size and location of graphical shapes on a diagram). This means your domain models have no adherence to Sirius itself, and can be manipulate with any of the other tools in the EMF eco-system (e.g. Acceleo to generate source code or other textual artifacts);
+			</li>
+			<li>it allows you to define many 
+				<em>different representations</em> on your domain models: diagrams, tables, trees, showing different levels of details and offering different edition capabilities depending on their usage;
+			</li>
+			<li>it is 
+				<em>easy to use</em> and supports 
+				<em>very fast</em> development. Once you become familiar with the tool, you will be able to get a simple diagram in a matter of minutes, a prototype suited for a client demonstration in a few hours, and a fully-functional and customized modeler in a few days of work;
+			</li>
+			<li>it is 
+				<em>extensible</em>: by integrating in the Eclipse platform and offering open APIs, you can extend and integrate your Sirius modelers with other tools to provide a fully-customized modeling workbench to your users.
+			</li>
+		</ul>
+		<h2 id="concepts">Philosophy and Concepts</h2>
+		<p>As explained in introduction, 
+			<em>Sirius</em> allows you to specify dedicated representations and associated tooling. As a 
+			<em>specifier</em>, your role will be to configure the generic Sirius platform to provide these representations to your users. This is done by creating and configuring a 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Model</em>
+			</a> which describes the structure, appearance and behavior of your modelers. This document does not deal with the definition of your domain model; you can use a standard one like UML, SysML, BPMN or TOGAF, or create a custom one. The only assumptions Sirius makes is that your model is based on EMF.
+		</p>
+		<p>The main concepts you will work with as a specifier are:</p>
+		<ul>
+			<li>
+				<strong>Viewpoint</strong> A viewpoint is one of the core elements that a specifier defines: it is a logical set of 
+				<strong>representation specifications</strong> and 
+				<strong>representation extension specifications</strong>.
+			</li>
+			<li>
+				<strong>Representation</strong> A 
+				<em>representation</em> is a group of 
+				<strong>graphical construction which represent domain data</strong>. A representation describes the structure, appearance and behavior of your modelers. By default, Sirius supports four kinds of representations (called 
+				<em>dialects</em>): diagrams, tables, matrices (aka cross-tables), and trees. All follow the same basic principles in their definitions.
+			</li>
+			<li>
+				<strong>Mapping</strong> A 
+				<em>mapping</em> identifies a sub-set of the semantic model&#8217;s element that should appear in a representation and indicates how they should be represented. Each dialect offers different kinds of mappings. For example, diagrams provide 
+				<em>container mappings</em>, which can be used to represent semantic elements with graphical containers, where other elements (specified by other mappings) can appear. A mapping exists inside the 
+				<em>Viewpoint Specification Model</em>, but on a concrete representation it will produce 
+				<em>instances</em>. If you specify a container mapping to represent, say, divisions in an enterprise, and the model of your enterprise contains four divisions, a concrete diagram will show four containers, each an instance of the same mapping, but associated to a different semantic element.
+			</li>
+			<li>
+				<strong>Style</strong> Each mapping can have one or several 
+				<em>styles</em> associated to it, which are used to configure the visual appearance of the elements they represent. For example, for diagram elements this would include their shape and colors.
+			</li>
+			<li>
+				<strong>Tool</strong> Without tools, your representations would be only visualizations, with no edition capabilities. While this can be sometimes useful, most representations will allow users to create, edit and delete elements. Tools are associated to mappings to describe their behaviors. Each kind of user interaction supported by 
+				<em>Sirius</em> (e.g. creation or deletion, label editing, edge reconnection...) is specified by a different kind of tool, but they all follow the same principles in their definition. 
+			</li>
+		</ul>
+		<h2 id="vsp">Viewpoint Specification Projects</h2>
+		<p>Note: When working as a Sirius specifier, it is recommended to use the 
+			<em>Sirius</em> perspective, which provides some additional shortcuts and views. The 
+			<em>Modeling</em> perspective is simpler and oriented towards end-users.
+		</p>
+		<p>Viewpoints are specified as models (see below) inside 
+			<em>Viewpoint Specification Projects</em>. These 
+			<a href="../../Glossary.html#VSP">
+				<em>VSPs</em>
+			</a> are normal Eclipse plug-in project, which happen to contain one or several 
+			<code>*.odesign</code> files (the extension used for 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Models</em>
+			</a> ). You can create such a project using the supplied wizard: 
+			<em>New &gt; Viewpoint Specification Project</em>.
+		</p>
+		<p>By convention, the VSM (or VSMs) defined in your project are stored inside a 
+			<code>description</code> folder. If you want to place them in a different location, make sure to add this location into the plug-in&#8217;s 
+			<code>build.properties</code> so that it is included in the deployed version.
+		</p>
+		<p>The VSM name is given according to the project name defined when using the previous wizard. If the project name is suffixed with &#8220;design&#8221;, the VSM name is provided by the last word before this suffix. Otherwise, the VSM name is given by the last word of the project name.</p>
+		<p>Other than that, the project is a normal Java plug-in project. You can add 
+			<a href="Writing_Queries.html#service_methods">service classes</a> into it if the query language you use support it, and any other Java code, including Eclipse views, actions, etc. 
+		</p>
+		<p>Note that it is recommended to add your domain meta-model(s) plug-ins as dependencies of the project. Java services and some features of query language (like the use of type literals in AQL filter() operations) might require them. </p>
+		<p>
+			<strong>Important:</strong> Any VSM you place in the Eclipse workspace will be immediately available for use and testing, with no deployment. This is to facilitate dynamic and iterative development of viewpoints. However, when you 
+			<strong>deploy</strong> your VSMs, they 
+			<strong>must</strong> be part of a 
+			<em>VSP</em>, and they 
+			<strong>must</strong> be registered in the plug-in&#8217;s activator class. The activator generated by the 
+			<em>VSP</em> wizard is properly configured, but if you rename your 
+			<em>VSM</em> or add new ones, be sure to edit the activator class so that all your 
+			<em>VSMs</em> are correctly registered inside the Sirius platform when deployed.
+		</p>
+		<h2 id="vsm">Viewpoint Specification Models</h2>
+		<p>The core part of a 
+			<em>VSP</em> is the 
+			<em>Viewpoint Specification Model</em> (or models) it contains. These are stored in 
+			<code>*.odesign</code> files, usually in the 
+			<code>description</code> folder of the project. A 
+			<em>VSM</em> specifies a set of 
+			<em>Viewpoints</em> and their representations (diagrams, trees...).
+		</p>
+		<p>To edit a 
+			<em>VSM</em>, simply double-click on it, and a tree editor will open. The editor follows the conventions of standard EMF editors: selecting an element will show its properties in the 
+			<em>Properties</em> view, where you can edit them. To create new elements, simply right-click on its parent and choose from one one the 
+			<em>New XXX</em> menus. To delete an element and all its sub-elements, simply select it and hit the 
+			<em>Delete</em> key or right-click and choose 
+			<em>Delete</em>.
+		</p>
+		<h3 id="vsm_organization">Organization</h3>
+		<p>The top-level element of a 
+			<em>VSM</em> is a 
+			<em>Group</em> element. It has no specific semantics and serves only as a container for the other elements. Note however that once you define its 
+			<em>Name</em>, you should never change it as it becomes part of the identification of all the elements inside the 
+			<em>VSM</em>. If you change it, any concrete representations created using that 
+			<em>VSM</em> will be broken.
+		</p>
+		<p>Inside a 
+			<em>Group</em>, you can create an optional 
+			<em>User Colors Palette</em>, with shared 
+			<a href="Colors.html">color definitions</a>; this is useful to define a uniform color palette for all your viewpoints and representations. You can also, and more importantly, define 
+			<em>Viewpoint</em> elements.
+		</p>
+		<p>Besides its 
+			<em>Id</em> and 
+			<em>Label</em> (see below), a 
+			<em>Viewpoint</em> can be associated to one or more 
+			<em>Model File Extensions</em>, separated by space. This can be used to restrict the availability of the viewpoint only to modeling projects which contain semantic models of the specified types. For example, to make your viewpoint available to UML and SysML models, you can specify 
+			<code>uml sysml</code> (note that the syntax specifies only the file extension, 
+			<code>uml</code>, not a pattern like 
+			<code>*.uml</code>). You can use a star, 
+			<code>*</code>, to make your viewpoint available for 
+			<strong>all</strong> models, but it is normally prefered be as specific as possible so as not to interfere with unrelated models and projects.
+		</p>
+		<p>Inside a 
+			<em>Viewpoint</em> element, you can create:
+		</p>
+		<ul>
+			<li>
+				<em>Representation Descriptions</em>, for 
+				<a href="../diagrams/Diagrams.html">diagrams</a>, 
+				<a href="../sequences/Sequence%20Diagrams.html">sequence diagrams</a>, 
+				<a href="../tables/Tables.html">tables and cross-tables</a>, and 
+				<a href="../trees/Trees.html">trees</a>.
+			</li>
+			<li>
+				<em>Representation Extensions</em>, currently supported only for 
+				<a href="../diagrams/Diagrams.html#diagram_extension">diagrams</a>.
+			</li>
+			<li>
+				<a href="../diagrams/Diagrams.html#validation">
+					<em>Validation Rules</em>
+				</a>, which will apply to all representations defined inside this viewpoint.
+			</li>
+			<li>And finally 
+				<em>Java Extensions</em>. These refer (through its fully qualified name), to a Java class defined in the 
+				<em>Viewpoint Specification Project</em> which defines 
+				<a href="Writing_Queries.html#service_methods">service methods</a> and make these services available inside all the representations defined in the viewpoint. If you 
+				<a href="Writing_Queries.html#acceleo">use Acceleo 3 to write your expressions</a>, you can also use these elements to declare Acceleo modules in the project that define MTL queries you want to use in your expressions.
+			</li>
+		</ul>
+		<p>To discover all elements in the 
+			<em>VSM</em>, it is possible to use the button <img src="images/specifier-guide/expandall.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/>, at the top right corner of the editor to expand the 
+			<em>VSM</em> tree. Obviously, it is possible to collapse this tree by using the button <img src="images/specifier-guide/collapseall.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/>, at the top right corner of the editor.
+		</p>
+		<h3 id="common_attributes">Common attributes</h3>
+		<p>Many of the elements used to specify viewpoint share some common configuration attributes. They are described in general terms in this section, and referenced from the specific element&#8217;s sections which used them (sometimes with additional details only relevant for this element).</p>
+		<p><img src="images/common_attributes.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/></p>
+		<ul>
+			<li>
+				<em>Id</em>: The mandatory identifier of the element. This identifier is mostly visible to the specifier in the description editor. It must be unique in the context of the viewpoint it is part of. The 
+				<em>Id</em> is used internally to identify the element, and must be kept stable across different versions of the VSM (or it will make representations created with the old 
+				<em>Id</em> unusable).
+			</li>
+			<li>
+				<em>Label</em>: The label of the element. It&#8217;s used to display this element to the end-user. By default, if this label is blank, the 
+				<em>Id</em> is used to display this element to the end user. It can be changed with no impact on existing representation files.
+			</li>
+		</ul>
+		<p><img src="images/documentation_attributes.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/></p>
+		<ul>
+			<li>
+				<em>Documentation</em>: All the elements in a description file contain a 
+				<strong>Documentation</strong> attribute available in the 
+				<strong>Documentation</strong> category. This attribute can be used by the specifier to add comments and documentation to these elements. The content of this attribute is not visible to the end users of the viewpoints.
+			</li>
+			<li>
+				<em>End-user documentation</em>: This attribute describes this element for the end-user. It&#8217;s available in the 
+				<strong>Documentation</strong> category. This attribute can be used by the specifier to add comments and documentation to these elements bounds for the end-user.
+			</li>
+		</ul>
+		<p><img src="images/tricks.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> 
+			<em>use the <img src="images/questionMarque.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> icon to access the available fields tooltips.</em>
+		</p>
+		<h3 id="type_names">Type Names</h3>
+		<p>Some 
+			<em>VSM</em> elements will need you to specify one or more 
+			<em>Type Names</em> to configure them, usually types from the semantic domain model being represented (for example the 
+			<em>Domain Class</em> for mapping definitions). You can easily identify 
+			<em>Type Name</em> fields by their green background in the 
+			<em>Properties</em> sheet of an element.
+		</p>
+		<p>
+			<img border="0" src="images/domain_class.png"/>
+			<br/>The syntax for type names are the following:
+		</p>
+		<ul>
+			<li>
+				<strong>minimal syntax:</strong> it is the basic name, like 
+				<code>Class</code>,
+			</li>
+			<li>
+				<strong>AQL/OCL syntax:</strong> a qualified name using name of the EMF EPackage which defines the type with the separator 
+				<code>::</code> like  
+				<code>uml::Class</code>. It is the default and 
+				<strong>recommended</strong> syntax, consistent with how qualified type names are written in AQL
+			</li>
+			<li>
+				<strong>legacy qualified name like syntax:</strong> it is a qualified name using name of the EMF EPackage which defines the type, like 
+				<code>uml.Class</code>.
+			</li>
+			<li>
+				<strong>fully qualified URI</strong>: like 
+				<code>http://www.eclipse.org/uml2/3.0.0/UML#//Class</code>.
+			</li>
+		</ul>
+		<p>Auto-completion is available in these fields using the 
+			<em>Ctrl+Space</em> shortcut. It is recommended to explicitly associate a meta-model (or more) to your representations definitions to allow for smarter completion. Otherwise by default it will include all types from any EMF meta-model available.
+		</p>
+		<h3 id="interpreted_expressions">Interpreted Expressions</h3>
+		<p>Many 
+			<em>VSM</em> elements require you to specify 
+			<em>Interpreted Expressions</em> to configure them. These can be queries to select elements (as in mappings for example), or more general expressions to compute value (like the text to use for the elements' labels).
+		</p>
+		<p>You can easily identify 
+			<em>Interpreted Expressions</em> by their yellow background in the 
+			<em>Properties</em> sheet of an element. For all such field, you can use any of the supported languages to write the expression. Refer to the 
+			<a href="Writing_Queries.html">queries documentation</a> for more details.
+		</p>
+		<p>
+			<img border="0" src="images/interpreted_expressions.png"/>
+		</p>
+		<p>Also, by clicking on the button next to the text field, you can open a dialog with a bigger text area (providing auto-completion too) to type your expression more comfortably. Note that you can add line feeds or tabulations if you want, since they are removed when clicking on the &#8220;OK&#8221; button.</p>
+		<p>
+			<img border="0" src="images/textAreaDialog.png"/>
+		</p>
+		<h3 id="feature_name">Feature Name</h3>
+		<p>Some 
+			<em>VSM</em> elements will need you to specify a 
+			<em>Feature Name</em> (or 
+			<em>Reference Name</em> on 
+			<em>Create Instance</em>) to configure them (Create Instance, Set, Unset, etc.). You can easily identify 
+			<em>Feature Name</em> fields by their light green background in the 
+			<em>Properties</em> sheet of an element.
+		</p>
+		<p>
+			<img border="0" src="images/featureName.png"/>
+		</p>
+		<p>Auto-completion is available in these fields using the 
+			<em>Ctrl+Space</em> shortcut except if the current element type cannot be inferred, usually in the case of a generic tool where the target element will be known only at runtime.
+			<br/>Note that for 
+			<em>Create Instance</em>  
+			<em>Reference Name</em> field, the completion will display only features that have a type consistent with the one specified in the 
+			<em>Type Name</em> field. If no type is specified, all available features will be displayed. In the same way, if a valid 
+			<em>Reference Name</em> is set, the completion for the 
+			<em>Type Name</em> field will display only types consistent with the feature type.
+		</p>
+		<h3 id="translatable_messages">Translatable Messages</h3>
+		<p>Many 
+			<em>VSM</em> elements provide text fields that will be displayed when end-users reference the 
+			<em>VSM</em> in a modeling project (Viewpoint name, tools...). Starting from Sirius 4.0, the value shown to the end users can be localized according to the user&#8217;s language.  Fields which support this feature are called 
+			<em>Translatable</em> 
+			<em>Messages</em> and can be easily identified by their blue background in the 
+			<em>Properties</em> sheet of an element. 
+		</p>
+		<p>
+			<img border="0" src="images/common_attributes.png"/>
+		</p>
+		<p>Note that on the previous screenshot, the text in the label field is grayish because no label have been set and the ID is used instead.</p>
+		<p>This feature is available for almost every 
+			<em>VSM</em> elements defined in the VSMs which are visible to the end-user of the modeler, like viewpoint and tools names, can now be internationalized, but not to interpreted expressions. Note also that this feature is only available to modelers which are deployed as proper Eclipse plug-ins; it will not work for plain VSMs defined directly in the runtime workspace.
+		</p>
+		<p>To make use of this feature in your modeler, simply replace the names with a 
+			<em>translation key</em> reference of the form 
+			<code>%myUniqueKey</code>  in the VSM, and define the value in the 
+			<em>Viewpoint Specification Project</em>'s 
+			<code>plugin.properties</code> (for the default value), or 
+			<code>plugin_XX.properties</code> for locale 
+			<code>XX</code>. Note that the key chosen must be globally unique in the context of a whole 
+			<em>Viewpoint Specification Project</em>.
+		</p>
+		<p>
+			<img border="0" src="images/translatable_message1.png"/>
+		</p>
+		<p>The key must be added to the 
+			<code>plugin.properties</code> file for each language with the translated message. The default properties file is named 
+			<code>plugin.properties</code> and the localized version are identified with a postfixed with the corresponding language code (e.g. for US english 
+			<code>plugin_en_US.properties</code>, for french 
+			<code>plugin_fr.properties</code>).  The underlying mechanism is the same as for Eclipse/OSGi plug-ins, so translations can even be contributed by physically separate plug-in fragments. For the message values to be found at runtime, do not forget to:
+		</p>
+		<ul>
+			<li>include all the 
+				<code>plugin*.properties</code> files in the binary build (i.e. check them in the plug-in&#8217;s 
+				<code>build.properties</code> file);
+			</li>
+			<li>set the 
+				<code>Bundle-Localization: plugin</code> header in your project&#8217;s 
+				<code>MANIFEST.MF</code>.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/translatable_message2.png"/>
+		</p>
+		<p>An Eclipse with localization in english will get the localized messages from 
+			<code>plugin_en.properties</code>, while an Eclipse with localization in french will get the localized messages from 
+			<code>plugin_fr.properties</code>.
+		</p>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/translatable_message4.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/translatable_message3.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>English locale</th>
+				<th>French locale (with corresponding translation in 
+					<code>plugin_fr.properties</code>
+				</th>
+			</tr>
+		</table>
+		<p>Note that an Eclipse with localization in a language that has no dedicated properties file, will get the localized message from the default 
+			<code>plugin.properties</code>.
+		</p>
+		<p>If the ID is not found in the localized properties file or if there is no properties file, the ID will be directly displayed.</p>
+		<p>
+			<img border="0" src="images/translatable_message5.png"/>
+		</p>
+		<p>As the internationalization is optional, if a 
+			<em>Translatable</em> 
+			<em>Message</em> does not start with a 
+			<em>%</em> it will be directly displayed without consideration of the localization.
+		</p>
+		<p>
+			<img border="0" src="images/translatable_message6.png"/>
+		</p>
+		<p>It is still possible to display a non localized label starting with a 
+			<em>%</em> however the character needs to be doubled.
+		</p>
+		<p>
+			<img border="0" src="images/translatable_message8.png"/>
+			<br/>
+			<img border="0" src="images/translatable_message9.png"/>
+		</p>
+		<p>
+			<em>Warning</em>: 
+			<em>Translatable</em> 
+			<em>Messages</em> concern only labels set in the 
+			<em>VSM</em> that are displayed to the end-users. Sirius is prepared for internationalization but is only available in English. Therefore, the 
+			<em>VSM</em> labels can be available in another language but the labels coming from Sirius will stay in English. Moreover, some labels come from some other frameworks (such as EMF or GMF) and if the localization feature (if existing) is not installed, then the labels will stay in English.  
+		</p>
+		<h3 id="model_operations">Model Operations</h3>
+		<p>Whenever a 
+			<em>VSM</em> requires you to specify a behavior, for example inside any 
+			<em>Tool</em> definition, you can use any of the available 
+			<em>Model Operations</em> to do so. Refer to the 
+			<a href="Model_Operations.html">Model Operations documentation</a> for more details.
+		</p>
+		<h3 id="quick_outline">Quick Outline</h3>
+		<p>When defining your 
+			<em>VSM</em>, a quick outline is available with the shortcut 
+			<code>Ctrl</code> + 
+			<code>O</code>. This allows you to rapidly search text in the displayed name or the contained String attributes of your 
+			<em>VSM</em> elements.
+		</p>
+		<p>The star, 
+			<code>*</code>, is a joker character, allowing you to search with more complicated patterns. Regarding this, an element is found if there is a word in its name or one of its attributes that match with the text in the filter, so if you want to search within words too, add 
+			<code>*</code> at the start of your pattern. Also, you can navigate along the matching elements with 
+			<code>↑</code> and 
+			<code>↓</code>, and go to the selected element in your 
+			<em>VSM</em> with 
+			<code>Enter</code>.
+		</p>
+		<p>
+			<img border="0" src="images/quick_outline.png"/>
+		</p>
+		<h3 id="validation">VSM Validation</h3>
+		<p>It is possible to validate your 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Model</em>
+			</a> , to check that your Representations, Mappings and Tools are correctly specified. It will help you to find missing element or erroneous one (e.g. missing required expression).
+		</p>
+		<p>To validate your VSM, open your 
+			<code>odesign</code> file, right-click on the top-level 
+			<em>Group</em> element and select 
+			<em>Viewpoint specification Editor &gt; Validate</em>. A dialog Box will appear and indicate if the validation succeeded. If not, it will give you details about the detected problems (click on the &#8216;details&#8217; button of the dialog box). If problems are detected, they will also be added to the Eclipse 
+			<em>Problems</em> view. Double-clicking on one of these problems will select the concerned element in the 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Model</em>
+			</a> editor.
+		</p>
+		<p>You can also validate one specific element by right-clicking on it in the 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Models</em>
+			</a> and launching the validation process. All the children of the selected element will be validated too. This fine-grained validation is useful to localize issues in the Specification Model, especially when it contains a lot of elements.
+		</p>
+		<p>It is also possible to use the button <img src="images/specifier-guide/complete_task.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/>, at the top right corner of the editor to launch the validation. This icon changes (<img src="images/specifier-guide/validate_model.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/>) when we change the VSM to encourage the user to validate the VSM before saving.</p>
+		<h3 id="dynamic">Dynamic Development</h3>
+		<p>Sirius supports dynamic development of your 
+			<em>VSM</em> with no need for deployment of your project to test it. If the domain model definition (the EMF meta-model plug-in) is installed in your development environment, and as long as your VSM does not use advanced features which require a deployment (like the definition of new 
+			<em>External Java Actions</em> for example), you can test your representations while you are developing them. It is the recommended way to work, especially in the initial development phases, to easily experiment different approaches and see the results immediately.
+		</p>
+		<p>To do this, simply create a modeling project in your development environment, alongside the Viewpoint Specification Project, and add a sample domain model to it. When you open the 
+			<em>Viewpoints Selection</em> dialog on the sample project, you will see that all the viewpoints which are being developed in the same workspace are also made available, in addition to the ones installed as plug-ins. Select the ones you want and create sample representations.
+		</p>
+		<p>Keep both your representations and the VSM that define them open at the same time. Whenever you change some definition or add new elements into your VSM, simply save it. Sirius will automatically detect the change, reload the new definition and apply it to your existing representations. This way you can develop your representations iteratively, for example starting from an empty diagram and adding more elements, styles and tools while and testing them immediately.</p>
+		<p><div style="display: none">
+			<br/>  TODO Add a screenshot with both a VSM (on the left) and the corresponding diagram (on the right) opened at the same time. Make sure the &#8220;Model Explorer&#8221; is also visible to show both the VSP and the Modeling project they correspond to.
+			<br/></div>
+		</p>
+		<p>Note that Sirius does its best to take into account any change in the VSM, even for existing and opened representations. Sometimes, if the changes are too complex or in some corner cases not yet supported, you may need to close and reopen your representation, or in extreme case delete it and create a new one, in order to take the VSM changes into account properly.</p>
+		<h4 id="reloadVSM">Reload installed VSM</h4>
+		<p>Even though having your VSP in the runtime environment workspace is the best way to do dynamic development of your VSM, if your VSP is in the installed runtime plug-ins (that is the VSP plug-in is in the development environment workspace), you have the ability the reload it from your runtime to take external changes into account.
+			<br/>This is done with the 
+			<em>Reload installed VSM</em> action from the main Eclipse tool bar. 
+			<br/>Click on 
+			<em>Reload installed VSM</em> will have automatically effects in opened representations(depending on refresh options).
+		</p>
+		<p>
+			<em>Limitations</em>:
+		</p>
+		<ul>
+			<li>The action is available only if specifier plug-ins are installed.</li>
+			<li>The action is available only if the Eclipse Runtime is a started from PDE (that is, is not a stand alone application).</li>
+			<li>Only the VSM is reloaded. The Java classes that may have been changed in the VSP are updated as normal Java classes managed in debug mode.</li>
+			<li>If you delete the VSP in the host Eclipse, you may encounter unexpected exceptions.</li>
+		</ul>
+		<h3 id="migration">Migration from Previous Versions</h3>
+		<p>The 
+			<em>Viewpoint Specification Model</em> can evolve between two versions of Sirius. The migration process is done automatically. That means all VSM are migrated at loading time without any action from the user. While a VSM is not saved, the automatic migration will be replayed at the next opening.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/general/ToolsSpecification.html b/doc/6.0.x/specifier/general/ToolsSpecification.html
new file mode 100644
index 0000000..bc453af
--- /dev/null
+++ b/doc/6.0.x/specifier/general/ToolsSpecification.html
@@ -0,0 +1,123 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>ToolsSpecification</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h3 id="ToolsSpecification">Tools Specification</h3>
+		<p>All tools are specified in roughly the same way. Like most elements inside the VSM, they have an 
+			<em>Id</em> and a 
+			<em>Label</em>. For elements which will appear to the end-user (in the palette or in menus), make sure the 
+			<em>Label</em> is meaningful to them.
+		</p>
+		<p>
+			<strong>Tools Applicability</strong>. Most tools apply to a set of 
+			<em>Mappings</em>, sometimes only on certain kinds of mappings (e.g. 
+			<em>Container Drop</em> description only makes sense for container mappings). For tools which create new elements, the 
+			<em>Mappings</em> correspond to the kinds of elements the tool will create. For other tools, it corresponds to the kinds of element the tool can be applied to.
+		</p>
+		<p>Many tools also support the notion of 
+			<em>Extra Mappings</em>. If these are specified, they indicate other kinds of elements than the primary ones on which the tool can be applied.
+		</p>
+		<p>The 
+			<em>Precondition</em> of a tool definition can be used to restrict its applicability to only some instances of the 
+			<em>Mappings</em> (and 
+			<em>Extra Mappings</em>) associated with the tool. When the user tries to invoke the tool on an element, the expression will be evaluated in the context of that element' semantic target, and the tool will be applicable only if the expression returns true. Otherwise the user will have a feedback (typically a change in the mouse cursor&#8217;s shape) to indicate the tool can not be applied on this element.
+		</p>
+		<p>
+			<strong>Force Refresh.</strong> Tools have a 
+			<em>Force Refresh</em> flag. As most tools only perform a local change in the underlying model, by default Sirius will try to optimize its refresh operation (which synchronizes the graphical view with the state of the underlying semantic model) by only refreshing elements of the mappings explicitly associated with the tool. If you know your tool will have side-effects which can change other parts of the diagram, set the 
+			<em>Force Refresh</em> flag to force Sirius to perform a complete refresh of the whole diagram after the tool is executed. This ensures a perfect synchronization of the graphical representation with the state of the underlying model, possibly at the cost of performance and reactivity on big diagrams. The refresh will be effective only on the current diagram and not on all opened diagrams.
+		</p>
+		<p>
+			<strong>Selection after tool execution.</strong> The 
+			<em>Elements to select</em> and 
+			<em>Inverse Selection Order</em> flags can be used to defined what is selected in the active editor after tool execution. 
+			<br/>By default, only the top level created elements are selected.
+		</p>
+		<ul>
+			<li>
+				<code>Elements to select</code>: Expression to list the elements to select after tool execution. There are four possibilities for the list of elements returned by this expression. In any case, if the default list of elements is not empty, the list of elements returned is filtered with the default selected elements. In case of creation tool, the default list contains newly created elements so, the returned list can contain at most that elements.
+				<ul>
+					<li>Empty expression: The default behavior is applied: if graphical elements has been created, these elements will be selected(excluding the sub elements), else, the selection is unchanged.</li>
+					<li>List of 
+						<code>DRepresentationElement</code>: All this graphical elements will be selected after the execution of the tool.
+					</li>
+					<li>List of semantic elements: All 
+						<code>EObject</code> that are not a 
+						<code>DRepresentationElement</code> are considered as semantic elements. All graphical elements corresponding to these semantic elements will be selected after the execution of the tool.
+					</li>
+					<li>Empty list: Nothing is selected after the execution of the tool.</li>
+					<li>List with only the 
+						<code>DRepresentation</code>: It will be considered as empty list.
+					</li>
+					<li>List with a mix of 
+						<code>DRepresentationElement</code> and non 
+						<code>DRepresentationElement</code> is forbidden. A such list will be considered as empty list.
+					</li>
+				</ul>
+			</li>
+			<li>
+				<code>Inverse Selection Order</code> : By default, false, the elements are selected in the order of the list or the default list if existing. It is possible to inverse this order by setting this property to true. To be more precise, the meaning of this property depends on the value of elementsToSelectExpression:
+				<ul>
+					<li>List of 
+						<code>DRepresentationElement</code>: The elements are selected in order of the list (first element is selected in first, second element is selected in second, and so on). The last graphical element of the list will be the primary selection. If 
+						<code>inverseSelectionOrder</code> is true, the order is reverted.
+					</li>
+					<li>List of semantic elements: The elements are selected in order of the list (the graphical element corresponding to the first semantic element is selected in first, the graphical element corresponding to second semantic element is selected in second, and so on). And if several graphical elements correspond to the same semantic element, they are selected on their default order. The last element is the primary selection. If 
+						<code>inverseSelectionOrder</code> is true, the order is reverted (the order of the list AND the order of several graphical elements corresponding to the same semantic element).
+					</li>
+					<li>Empty list or list with only the 
+						<code>DRepresentation</code>: The 
+						<code>inverseSelectionOrder</code> is ignored in this context.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<strong>Tools' Body and Variables.</strong> The actual effect of a tool is defined inside its 
+			<em>body</em>, which is usually represented by a 
+			<em>Begin</em> element (the starting point of the tool&#8217;s execution). You can use any of the available 
+			<a href="../general/Model_Operations.html">model operations</a> to specify the behavior of your tools, including, if necessary, operations which invoke complex algorithms written in Java. Inside the tools&#8217;body, you have access to 
+			<em>variables</em>, which are specific to each kind of tools and give you all the necessary information on how the tool was invoked, on which elements, etc. How you access these variables from the expressions inside the tool&#8217;s body depend on the query language you use for the expressions.
+		</p>
+		<p>
+			<strong>Static Variables.</strong> The static variables defined by each tool are visible directly inside the tool&#8217;s element in the VSM. The exact set of variables available will depend on each tool, but typically you will have access to both 
+			<em>semantic variables</em> which reference semantic elements and 
+			<em>view variables</em> which reference graphical elements. As an example, in a 
+			<em>Node Creation Tool</em>, you have both a 
+			<em>container</em> and a 
+			<em>containerView</em> variable. 
+			<em>containerView</em> will point to the graphical element on which the user invoked the node creation tool (for example a container view) while 
+			<em>container</em> will point to that view&#8217;s target semantic element. Usually the tools use only the semantic variables, but you may want to use the view variables if the same semantic elements can be represented in different ways on your diagram and you want your tool to behave differently depending on which of these representations the user targeted.
+		</p>
+		<p>
+			<strong>User-Defined Variables.</strong> In addition to the static variables which are pre-defined by Sirius for each kind of tool, you can define your own, which will also be available inside the tool&#8217;s body. These user variables are defined as sub-elements of the static variables using the 
+			<em>New Variable...</em> context menu. There are two kinds:
+		</p>
+		<ul>
+			<li>
+				<em>Expression Variables</em> have a name and a 
+				<em>Computation Expression</em>. When the tool is invoked, the computation expression will be evaluated in the context or the parent variable&#8217;s value (i.e. the static variable inside which the 
+				<em>Expression Variable</em> is defined).
+			</li>
+			<li>
+				<em>Select Model Element Variables</em> will open a dialog box when the tool is invoked, from which the user can manually select model elements from a list you can configure. The element or elements selected by the user will become the value of the variable. To configure the dialog box, you must set a 
+				<em>Message</em> and a 
+				<em>Candidates Expression</em> (evaluated in the context of the parent variable&#8217;s value). The candidates expression should return a list of elements from which the user can select the variable&#8217;s value. By default these candidates are presented as a list. You can also enable the 
+				<em>Tree</em> mode, and specify a 
+				<em>Children Expression</em>, which will be evaluated recursively on each candidate to build a tree of possible values. Finally, you can set the 
+				<em>Multiple</em> flag to allow users to select several of the candidates instead of a single one.
+			</li>
+		</ul>
+		<p>
+			<strong>Tool Filters.</strong> Tool filters can be specified inside a tool to hide a tool in the diagram palette depending on dynamic conditions. The 
+			<em>Elements To Listen</em> is evaluated in the context of the diagram&#8217;s semantic element, and should return a set of semantic elements. The 
+			<em>Precondition</em> is re-evaluated in the context of the diagram whenever a change occurs on 
+			<em>Elements To Listen</em>.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/general/Writing_Queries.html b/doc/6.0.x/specifier/general/Writing_Queries.html
new file mode 100644
index 0000000..1e9501a
--- /dev/null
+++ b/doc/6.0.x/specifier/general/Writing_Queries.html
@@ -0,0 +1,570 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Writing_Queries</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="WritingQueriesandInterpretedExpressions">Writing Queries and Interpreted Expressions</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#WritingQueriesandInterpretedExpressions">Writing Queries and Interpreted Expressions</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#general">General Rules</a>
+					</li>
+					<li>
+						<a href="#specialized">Using the Specialized interpreters</a>
+					</li>
+					<li>
+						<a href="#aql">Using AQL</a>
+					</li>
+					<li>
+						<a href="#acceleo">Using Acceleo</a>
+					</li>
+					<li>
+						<a href="#ocl">Using Raw OCL</a>
+					</li>
+					<li>
+						<a href="#custom">Providing a Custom Language</a>
+					</li>
+					<li>
+						<a href="#service_methods">Writing Java Services</a>
+					</li>
+					<li>
+						<a href="#service_navigation">Accessing Java service implementations from interpreted expression or Java extension</a>
+					</li>
+					<li>
+						<a href="#standard_services">Standard Services</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#editing_domain_services">Editing Domain Services and EMF Edit Integration</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Many parts of a 
+			<em>VSM</em> require you to provide 
+			<em>interpreted expressions</em>, which will be evaluated at runtime to provide a behavior specific to your domain and representations. Some of these expressions return model elements (in which case we call them 
+			<em>queries</em>), while others simply produce text (for example the expressions used for labels), but the principles stay the same.
+		</p>
+		<p>Sirius does not force the use of a specific language to write these queries. Currently, three different languages are provided by default, and if you have specific needs, you can extend the system and  
+			<a href="#custom">provide your own</a>. You can use several different languages inside the same VSM (but only one in each expression).
+		</p>
+		<p>Whatever the language(s) you use, because they are all optional from Sirius&#8217;s point of view, make sure the Viewpoint Specification Project which contains your VSMs explicitly depends on the Sirius plug-in which provides supports for these languages. Otherwise when you modelers are deployed to end-users you can not be sure the proper support will be available. The 
+			<em>Viewpoint Specification Projects</em> which are created using the standard wizard are pre-configured to use AQL (
+			<em>Acceleo Query Language</em>), which is the recommended language as of Sirius 3.1. See the sections below for each of the standard languages for the name of the Sirius support plug-ins to depend on if you use the language.
+		</p>
+		<h2 id="general">General Rules</h2>
+		<p>Some general rules are independent of the language details.</p>
+		<p>
+			<strong>Auto-completion.</strong> First, in the 
+			<em>VSM</em> editor, any field in the property view which has a yellow background is an interpreted expression.  In these fields, auto-completion can be triggered by hitting 
+			<em>Ctrl+Space</em>. 
+		</p>
+		<p>
+			<img border="0" src="images/emptyFieldAutoCompletion.jpg"/>
+		</p>
+		<p>The completion will correspond to the empty expression for the installed query language (e.g. 
+			<b>aql:</b> for AQL). It will also place the cursor at the expected place where it is ready to start typing the expression.
+		</p>
+		<p>
+			<img border="0" src="images/emptyExpressionCursor.jpg"/>
+		</p>
+		<p>When hitting auto-completion on an empty expression, the first completion proposal will correspond to the variables which are available in the expression&#8217;s context, and the rest correspond to all the features, services, etc. which are available on the current element.</p>
+		<p>
+			<img border="0" src="images/emptyExpressionAutoCompletion.jpg"/>
+		</p>
+		<p>Sometimes Sirius is not able to statically determine the precise type of the model elements on which an expression will be evaluated. In that case, it assumes a plain 
+			<em>EObject</em>. This means you will not get completion proposals specific to your custom types, and that if you use features or services which are not available on 
+			<em>EObject</em>, the VSM&#8217;s validation will fail. To prevent this, if you know the precise type of the elements and the language supports it, add a cast operation to tell Sirius the actual type (e.g. <code>aql:filter(packageName::ExpectedType).theRestOfTheExpression</code> if using AQL for example.
+		</p>
+		<p>
+			<strong>The Interpreter view.</strong> The 
+			<em>Interpreter</em> view can be used to develop complex expressions interactively. The view can work in either the native 
+			<em>Acceleo</em> mode (corresponding to Acceleo 3/MTL) or in the 
+			<em>Sirius</em> mode. In the 
+			<em>Sirius</em> mode, you can use any of the languages supported by Sirius, but you lose the benefits of syntax coloring.
+		</p>
+		<p>To use the 
+			<em>Interpreter</em> view, simply open a Sirius representation, select and element in it (for example a shape on a diagram), and type some expression in the view&#8217;s upper text field. The result of the expression (a set of model elements or a string) will appear in the lower part of the view. If you select a different element, the result will automatically be re-evaluated in the context of the new element.
+		</p>
+		<p>
+			<img border="0" src="images/viewpoint_interpreter.png"/>
+		</p>
+		<p>
+			<em>Warning:</em> When using the 
+			<em>Interpreter</em> view from an element selected in a Sirius representation, the context of the expression is 
+			<strong>not</strong> the 
+			<em>semantic</em> element, but the 
+			<em>view</em> model element used internally by Sirius. To access the semantic element you must use the view&#8217;s 
+			<code>target</code> reference. More concretely, imagine you have a Sirius diagram representing UML classes with nodes. If you select a class and enter <code>aql:self</code> in the interpreter view, the result will not be a UML 
+			<code>Class</code> element, but a 
+			<code>DNode</code> (the type used internally by Sirius to represent graphical nodes). To get the UML class, you must enter <code>aql:self.target</code> (or the equivalent in other languages). Keep this in mind when using the 
+			<em>Interpreter</em> view to develop expressions you want to use inside a VSM: most expressions defined in the VSM will be evaluated in the context of a semantic element, so you will need to add/remove 
+			<code>target</code> references when switching between the two.
+		</p>
+		<p>
+			<strong>Determinism.</strong> In general, you should try to ensure that your queries are deterministic, i.e. from the same input model they should always return the same result, and in the same order (if returning collections of elements). Otherwise, each time a representation is refreshed it might become dirty (as Sirius will see the order difference as a change) or even visually unstable (i.e. elements shown in a different order). There are several things to be aware of in order to ensure determinism in your queries:
+		</p>
+		<ul>
+			<li>At the meta-model level, if you control it, make sure any derived feature always return its values in the same order. If you do not control the meta-model and it has unordered references which can cause problems (UML is an example), you can impose your own ordering by sorting the elements whenever they are used in a Sirius query.</li>
+			<li>At the Sirius query level, make sure you call only operations which are deterministic in the query language(s) you use. Unfortunately, this information is not often documented in the query languages semantics, so some trial and error experimentation is required for now. </li>
+			<li>At the service level, if you create your own 
+				<a href="#service_methods">Java services</a>, make sure to use data structures which ensure a fixed iteration order, like 
+				<code>LinkedHashSet</code> instead of 
+				<code>HashSet</code> for example.
+			</li>
+		</ul>
+		<h2 id="specialized">Using the Specialized interpreters</h2>
+		<p>Sirius provides several specialized interpreters to handle more efficiently some forms of simple expressions which can occur very often in a typical VSM. Each interpreter focuses on a very limited case, and none supports complex expressions. This allows them to be very fast, but it requires that you use them explicitly when possible. All these interpreters are available by default in Sirius, you do not need to declare additional dependencies in your VSM project to be able to use them.</p>
+		<ul>
+			<li>
+				<strong>
+					<code>var:</code>
+				</strong> This interpreter can only do direct access to the value of a named variable. For example, instead of <code>aql:containerView</code> (using AQL), the equivalent using the specialized interpreter would be 
+				<code>var:containerView</code>. As a special case, the pseudo-variable 
+				<code>self</code> is available to access the current element (the evaluation context): 
+				<code>var:self</code> is equivalent to <code>aql:self</code> in AQL.
+			</li>
+			<li>
+				<strong>
+					<code>feature:</code>
+				</strong> This interpreter can only do direct access to a named feature of the current element. For example, instead of <code>aql:self.name</code>, the equivalent using this interpreter would be 
+				<code>feature:name</code>. Note that if your metamodel generated code was generated with feature delegation set to Reflective, the feature interpreter will return the raw value of the attribute (as seen by 
+				<code>eGet</code>), bypassing any custom getter implementation you provided. This interpreter also supports the following pseudo-features:
+				<ul>
+					<li>
+						<code>feature:eContainer</code> returns the container of the current element (or 
+						<code>null</code> if there is none). This is equivalent to <code>aql:self.eContainer()</code>.
+					</li>
+					<li>
+						<code>feature:eContents</code> returns the direct contents of the current element (or an empty collection if there is none). This is equivalent to <code>aql:self.eContents()</code>.
+					</li>
+					<li>
+						<code>feature:eAllContents</code> returns all the elements directly and indirectly contained inside the current element (or an empty collection if there is none). This is equivalent to <code>aql:self.eAllContents()</code>.
+					</li>
+					<li>
+						<code>feature:eCrossReferences</code> returns all the model elements which are directly referenced by the current element (or an empty collection if there is none). This is equivalent to <code>[self.eCrossReferences()/] using Acceleo 3/MTL</code>.
+					</li>
+				</ul>
+			</li>
+			<li>
+				<strong>
+					<code>service:</code>
+				</strong> This interpreter can be used to directly invoke a service method (i.e. a Java method that follows conventions for 
+				<a href="#service_methods">service methods</a> ) on the current element. For example, assuming the service class 
+				<a href="#ecore_services">
+					<code>EcoreServices</code>
+				</a> has been correctly registered in the VSM, the expression 
+				<code>service:getEClasses</code> (note the absence of parenthesis) will invoke the 
+				<code>getEClasses</code> on the current element if it is an instance of 
+				<code>EPackage</code>.
+				<ul>
+					<li>The service interpreter supports parameters, but only variables can be used as parameter (no literals or complex expressions), for example: 
+						<code>service:serviceName(view, diagram)</code>.
+					</li>
+					<li>You can use the service interpreter not only on the current context by using a variable name before calling the service, for example: 
+						<code>service:myVariableName.serviceName</code>.
+					</li>
+					<li>For efficiency reasons, if multiple services match the expression, the first one found is used. There is no real polymorphism management.</li>
+				</ul>
+			</li>
+		</ul>
+		<h2 id="aql">Using AQL</h2>
+		<p>Starting from Sirius 3.1, 
+			<em>AQL</em> (Acceleo Query Language, first introduced in Sirius 3.0) is the recommended language to write queries/interpreted expressions. AQL is similar to Acceleo 3/MTL, but simpler and provides much better performance in the Sirius context. AQL expressions start with the 
+			<code>aql:</code> prefix and have a syntax similar to Acceleo (without the enclosing 
+			<code>[../]</code> brackets). The main differences between the two languages are:
+		</p>
+		<ul>
+			<li>Feature access must 
+				<strong>always</strong> explicitly specify the target object, even if the target is 
+				<code>self</code>. This means an Acceleo expression like <code>[name/]</code> which accesses the 
+				<code>name</code> attribute of the current element translates in AQL as 
+				<code>aql:self.name</code>. The expression 
+				<code>aql:name</code> with no explicit receiver will always be interpreted as an access to the 
+				<code>name</code> variable, and may result in an error if the variable in question is not defined. 
+			</li>
+			<li>&#8220;Lambda&#8221; expressions must always declare their parameters and use them explicitly. Again, there is no implicit 
+				<code>self</code> in such a context. For example: <code>[self.eContents()&#45;&gt;select(name.startsWith(&apos;A&apos;))/]</code> becomes <code>aql:self.eContents()&#45;&gt;select(i | i.name.startsWith(&apos;A&apos;))</code> with an explicit declaration and usage of 
+				<code>i</code> in AQL.
+			</li>
+			<li>AQL is more persmissive in terms of missing/empty intermediate results in complex expressions: 
+				<code>aql:self.anEmptyReference.somethingElse</code> will not result in an error as the equivalent Acceleo (or OCL) expression would, but simply return an empty result.
+			</li>
+			<li>AQL provides different services/methods by default compared to Acceleo. In general the set of default services in AQL is better suited to the typically use cases encountered in Sirius.</li>
+		</ul>
+		<p>See <a href="https://www.eclipse.org/acceleo/documentation/aql.html" target="_blank">the AQL documentation</a> for more details about the language itself, the full list of standard services, and the differences with Acceleo/MTL.</p>
+		<p>
+			<em>Note:</em> Viewpoint Specification Projects created with the default wizard will be already setup to use it. Otherwise you need to add a dependency to the 
+			<code>org.eclipse.sirius.common.acceleo.aql</code> plug-in to ensure AQL support will be available wherever your modelers are used. When 
+			<strong>developing</strong> new VSMs which use AQL, it is recommended to have the  
+			<code>org.eclipse.sirius.common.acceleo.aql.ide</code> plug-in installed as it provides specification-time features like expression completion. However, 
+			<code>org.eclipse.sirius.common.acceleo.aql.ide</code> is not needed at runtime for the resulting modelers to function.
+		</p>
+		<p>
+			<em>Note:</em> Several services like olcIsKindOf() or filter() use type literals and will require to explicitly reference the known meta-models as dependencies to work. It is recommended to add the corresponding meta-models plug-ins to the dependencies of the Viewpoint Specific Project.
+		</p>
+		<h2 id="acceleo">Using Acceleo</h2>
+		<p>Acceleo 3 implements the MTL standard, and provides a query language similar to OCL (with some extensions). It provides relatively good static validation and auto-completion when editing your expressions, but AQL is even better, and faster. For new modelers, prefer AQL over Acceleo/MTL. If you have existing modelers which use Acceleo/MTL, converting them to use AQL is relatively straightforward, see <a href="https://www.eclipse.org/acceleo/documentation/aql.html#MigratingfromMTLqueries" target="_blank">the AQL documentation</a> for details.</p>
+		<p>Acceleo expressions are enclosed in brackets: <code>[theExpression/]</code>. Inside the brackets you can write any valid Acceleo expression, including using 
+			<code>if</code> and 
+			<code>let</code> statements, for example. See <a href="https://wiki.eclipse.org/Acceleo" target="_blank">the Acceleo documentation</a> for the exact syntax and semantics of the language.
+		</p>
+		<p>Note that  Acceleo expressions used inside VSMs 
+			<strong>must</strong> be enclosed inside a single bracket. It is not currently possible to mix Acceleo expressions and fixed text (like 
+			<code>"prefix[someExpression/]suffix"</code>). Instead, you can use Acceleo&#8217;s string manipulation operations to obtain the same result: <code>[&apos;prefix&apos; + someExpression + &apos;suffix&apos;/]</code>). Related to this, auto-completion only works if you are inside a well-formed bracket (i.e. <code>[&lt;cursor&gt;/]</code>); if you have simply opened the bracket but not closed it (i.e. <code>[&lt;cursor&gt;</code>), completion will not be available.
+		</p>
+		<p>Acceleo expressions can transparently invoke methods from Java classes which follow the 
+			<a href="#service_methods">service methods</a> conventions and have been properly declared in the VSM. Note that currently this only works if the Java service class is in the same project as the 
+			<em>VSM</em>. You can also invoke Acceleo 
+			<em>queries</em> defined in 
+			<code>.mtl</code> files in your Viewpoint Specification Project. For this to work, your Viewpoint Specification Project should be an Acceleo Generator project, you can convert the project with the 
+			<em>Configure &gt; Toggle Acceleo Nature</em> contextual menu. If you want to use queries from 
+			<code>.mtl</code> files in you Sirius project, the parent 
+			<em>Viewpoint</em> element must have a 
+			<em>Java Extension</em> element which references the MTL file, using the 
+			<code>com::example::domain::design::module</code> syntax (note that the qualified name does not contain the 
+			<code>.mtl</code> or 
+			<code>.emtl</code> file extension). Also make sure to read <a href="http://www.obeonetwork.com/page/building-an-acceleo-generator"  target="_blank">http://www.obeonetwork.com/page/building-an-acceleo-generator</a> to ensure the project is built correctly, or the queries defined in the 
+			<code>.mtl</code> files may not be available when the project is deployed as a plug-in.
+		</p>
+		<p>
+			<em>Note:</em> due to an incompatible change in serialization format in EMF 2.9, if you use external 
+			<code>.mtl</code> files in your modeler definitions and build your modeler plug-ins using EMF 2.9 or later, the resulting modeler will not work with previous versions of EMF (as the resulting 
+			<code>.emtl</code> files will not load correctly with EMF 2.8 and earlier). For reference, EMF 2.9 corresponds to Eclipse 4.3 (Kepler). 
+		</p>
+		<p>Acceleo is very precise (and  very demanding) about the types of elements your queries are executed on. This generally means you get good auto-completion and useful validation and diagnostics. However sometimes Sirius is not able to statically determine the precise type of the model elements on which an expression will be evaluated. In that case, it assumes a plain 
+			<em>EObject</em>. If you know the actual type which will be used, prefix your expression with 
+			<code>filter(ExpectedType)</code> to help Sirius. Note that if the actual type at runtime is not compatible with 
+			<code>ExpectedType</code>, the rest of your expression will silently be ignored.
+		</p>
+		<p>In the context of Sirius, you have access to a special feature which can be used to follow &#8220;back-links&#8221; or &#8220;cross-references&#8221;. From a given model element, this allows you to easily (and efficiently) find all the elements which refer to it in the scope of the models and representations in the same modeling project. This feature is available through the 
+			<code>eInverse()</code> method, which can be used on any model element inside an Acceleo expression.
+		</p>
+		<p>Note that in most cases, expressions in Sirius are evaluated in a context where 
+			<em>variables</em> are defined. For example, most expressions inside tool definitions have access to variables telling them which elements the tool has been applied on. In some cases, the names of these variable can conflict with names of features in your meta-model. The evaluation rules of Acceleo (OCL actually) give precedence to variables, so it is recommended to always prefix accesses to your meta-model features with 
+			<code>self</code> (or another expression) to avoid ambiguity. As a concrete example, say you have an expression 
+			<code>"[target/]"</code> that you expect to access the 
+			<code>target</code> feature of one of your object. If evaluated in a context where a 
+			<code>target</code> variable exist, the value of the expression will be the value of the variable, 
+			<em>not</em> the value of the object&#8217;s property. To avoid ambiguity, always use expressions of the form 
+			<code>"[self.target/]"</code> in such cases.
+		</p>
+		<p>
+			<em>Note:</em> Due to internal changes in the Eclipse Equinox runtime, starting with Eclipse Luna (4.4) it is impossible to evaluate Java services from an Acceleo 3 expression if the Java service is defined directly in the workspace. This only affect specifiers (not end-users). When developing modelers which use Acceleo expressions and rely on Java services, you must launch an Eclipse runtime from your development environement to test the resulting modeler in a context where the service is available as part of a deployed plug-in. Starting with Sirius 3.0 you can also use the AQL language instead, which has a syntax very similar to Acceleo 3/MTL, but does not have this limitation regarding services in the workspace.
+		</p>
+		<h2 id="ocl">Using Raw OCL</h2>
+		<p>Sirius also supports raw OCL expressions, but this support is deprecated and will be removed in future versions. OCL expressions must be prefixed with 
+			<code>ocl:</code>. If you use it your Sirius project must declare a dependency to the 
+			<code>org.eclipse.sirius.common.ocl</code> plug-in to ensure OCL support will be available wherever your modelers are used.
+		</p>
+		<p>It is highly recommended that you use Acceleo, which implemented the MTL standard and is a super-set of the OCL language, instead of raw OCL.</p>
+		<h2 id="custom">Providing a Custom Language</h2>
+		<p>Sirius allows you to provide your own language implementations, if you have very specific needs or want to reuse an existing custom language. Note that Sirius must be able to syntactically and unambiguously determine from an expression which language it is written in (to send it to the appropriate interpreter). The simplest way to achieve this is to define a prefix (like 
+			<code>ocl:</code> for OCL) so that expressions written in your language can be distinguished from expressions written in any of the others.
+		</p>
+		<p>To provide your custom language, you must 
+			<em>at least</em> implement the 
+			<code>org.eclipse.sirius.common.expressionInterpreter</code> extension point, and provide an implementation of the 
+			<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreter</code> interface. The example below shows how the Acceleo interpreter is registered. The 
+			<code>AcceleoMTLInterpreterProvider</code> is the one which implements the 
+			<code>IInterpreter</code> interface.
+		</p>
+		<pre><code>   &lt;extension point="org.eclipse.sirius.common.expressionInterpreter"
+              id="org.eclipse.sirius.common.acceleo.mtl.AcceleoMTLInterpreter"&gt;
+      &lt;expressionInterpreterProvider
+            interpreterProviderClass="org.eclipse.sirius.common.acceleo.mtl.business.internal.interpreter.AcceleoMTLInterpreterProvider" /&gt;
+   &lt;/extension&gt;
+</code></pre>
+		<p>You can also optionally provide support for auto-completion for your language by implementing the 
+			<code>org.eclipse.sirius.common.proposalProvider</code> extension point and providing an implementation of 
+			<code>org.eclipse.sirius.common.tools.api.contentassist.IProposalProvider</code> interface. For example, here is how the completion support for Acceleo is registered (
+			<code>AcceleoProposalProvider</code> is the class which implements the 
+			<code>IProposalProvider</code> interface):
+		</p>
+		<pre><code>   &lt;extension point="org.eclipse.sirius.common.proposalProvider"&gt;
+      &lt;proposalProvider
+            class="org.eclipse.sirius.common.acceleo.mtl.ide.AcceleoProposalProvider"
+            interpreter="org.eclipse.sirius.common.acceleo.mtl.AcceleoMTLInterpreter" /&gt;
+   &lt;/extension&gt;
+</code></pre>
+		<h2 id="service_methods">Writing Java Services</h2>
+		<p>Query languages may support the notion of 
+			<em>Java services</em>, which are methods written in Java that can be transparently invoked from interpreted expressions in Sirius. Acceleo 3 includes this support. All you need to do is to create a Java class whose methods follow some conventions (described below) in your Viewpoint Specification Project, and declare the class (using its fully qualified Java name) in the VSM. You can then use the services defined in that class in any of you interpreted expressions written in either Acceleo or another language which supports services (refer to the query language&#8217;s documentation for details).
+		</p>
+		<p>A service is simply a public Java methods which follows some conventions:</p>
+		<ul>
+			<li>The class containing the method must be public and have a default constructor which takes no argument.</li>
+			<li>The class can contain many public methods (static or not), each of which will be visible as a service if they follow the right conventions.</li>
+			<li>A service method must take at least one parameter, which should be an EMF type (i.e. 
+				<code>EObject</code> or a sub-type of 
+				<code>EObject</code>).
+			</li>
+			<li>A service method may take more parameters, which can be:
+				<ul>
+					<li>strings</li>
+					<li>numbers</li>
+					<li>EMF types (i.e. 
+						<code>EObject</code> or a sub-type)
+					</li>
+					<li>Java collections of EMF types (note that array types are 
+						<strong>not</strong> supported).
+					</li>
+				</ul>
+			</li>
+			<li>A service method may return a value, which can have the same kinds of types as parameters.</li>
+		</ul>
+		<p>
+			<strong>WARNING:</strong> AQL only supports Sequences and Set as collection types. As a result, to get the full benefit from the AQL validation, it is recommended to write services that return a List or a Set as collection type.
+		</p>
+		<p>Here is an example of a Java service:</p>
+		<pre><code id="ecore_services">public class EObjectServices {
+    public List&lt;EClass&gt; getEClasses(EPackage ePackage) {
+        List&lt;EClass&gt; eClasses = new ArrayList&lt;EClass&gt;();
+        // The service code. 
+        return eClasses;
+    }
+}
+</code></pre>
+		<p>After defining a service, you have to register it in your VSM with a Java extension:</p>
+		<p>
+			<img border="0" src="images/serviceVsmRegistration.png"/>
+		</p>
+		<p>Then you can invoke it in the expressions of languages which support it  like this: <code>[aFamily.getFamiliesContainingParents()/]</code>. (using Acceleo syntax) The invocation looks as if the service was a normal feature of the 
+			<code>Family</code> type. When the service is invoked, the model element on which it is invoked is used as the first argument to the Java method. If arguments are passed in the expression, they are mapped to the second, third, etc. parameters of the Java method, assuming the types are compatible. The result of evaluating a service invocation is the result of the Java method.
+		</p>
+		<p>
+			<em>Warning:</em> Java service methods should be stateless. There is no guarantee that two successive invocations of the same service method on two model elements (or even on the same one) will use the same instance of the service class.
+		</p>
+		<p>
+			<em>Warning:</em> There are currently some limitations on the use of Java services from Acceleo:
+		</p>
+		<ul>
+			<li>primitive types can not be used as arguments or return types for service methods invoked from Acceleo 3 expressions. The workaround is to use the corresponding wrapper type (e.g. 
+				<code>Integer</code> instead of 
+				<code>int</code>).
+			</li>
+			<li>service methods invoked from Acceleo 3 expressions can not return 
+				<code>void</code>. You can return any value instead, for example target argument (the service method&#8217;s first parameter). 
+			</li>
+		</ul>
+		<h2 id="service_navigation">Accessing Java service implementations from interpreted expression or Java extension</h2>
+		<p>If you want to see the service implementation(s) used in an interpreted expression in the Java editor, you just have to put your cursor on the service and press the 
+			<strong>F3</strong> keyboard key. Three scenarios can occur after hitting F3:
+		</p>
+		<ul>
+			<li>Nothing happens if your service does not exist in any services class defined in the VSM or if the expression is not complete (missing parenthesis and parameters).</li>
+			<li>If only one implementation matches your service, it is open directly in Java editor.</li>
+			<li>If many implementations match your service call, a wizard is opened and allows you to choose the Java class containing the service implementation you wish to see:</li>
+		</ul>
+		<p>
+			<img border="0" src="images/serviceNavigation.png"/>
+		</p>
+		<p>
+			<em>Warning:</em> This functionnality works only with 
+			<code>service:</code> and 
+			<code>aql:</code> interpreters, not with the Acceleo 3/MTL 
+			<code>[/]</code> interpreter.
+		</p>
+		<p>You also can open the service class specified in a Java extension by a double click on it in the VSM. It will open a Java editor if the qualified name corresponds to an existing implementation. </p>
+		<h2 id="standard_services">Standard Services</h2>
+		<p>Sirius provides some standard services that can be used from any VSM simply by adding the appropriate reference (as a 
+			<em>Java Extension</em>) to the implementation class&#8217;s fully qualified name. When using such a service class, make sure your 
+			<em>Viewpoint Specification Project</em> has a dependency towards the Sirius plug-in which provides said class.
+		</p>
+		<h3 id="editing_domain_services">Editing Domain Services and EMF Edit Integration</h3>
+		<p>Starting from Sirius 4.0, the 
+			<code>org.eclipse.sirius.ext.emf.edit</code> plug-in provides the 
+			<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices</code> service class which can be referenced from any VSM (once properly declared). This class provides a large set of methods which give access to many useful features of the 
+			<em>EMF Edit</em> framework, in particular all kinds of 
+			<em>Item Providers</em>, in a way that is directly accessible as service invocations from interpreted expressions.
+		</p>
+		<h4 id="GeneralEditingDomainrelatedServices">General EditingDomain-related Services</h4>
+		<p>The following general services are made available:</p>
+		<ul>
+			<li>
+				<code>getEditingDomain(EObject)</code>
+			</li>
+			<li>
+				<code>isStale(EObject)</code>
+			</li>
+			<li>
+				<code>isControlled(EObject)</code>
+			</li>
+			<li>
+				<code>getAdapterFactory(EObject)</code>
+			</li>
+			<li>
+				<code>getAdapter(EObject, Class)</code>
+			</li>
+		</ul>
+		<h4 id="ItemProvidersServices">Item Providers Services</h4>
+		<p>Most public methods of the following interfaces are available as services on any 
+			<code>EObject</code> (typically from a Sirius session):
+		</p>
+		<ul>
+			<li>
+				<code>org.eclipse.emf.edit.provider.IItemLabelProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.IItemColorProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.IItemFontProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.IStructuredItemContentProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.ITreeItemContentProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.ITableItemLabelProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.ITableItemColorProvider</code>
+			</li>
+			<li>
+				<code>org.eclipse.emf.edit.provider.ITableItemFontProvider</code>
+			</li>
+		</ul>
+		<p>In all cases, a 
+			<code>getXXXProvider()</code> service method is also made available (for example 
+			<code>getLabelProvider(EObject)</code>, which returns the item provider itself (or 
+			<code>null</code>). The item provider is located using the 
+			<code>ItemProviderAdapter</code> returned by the 
+			<code>AdapterFactory</code> associated to the element&#8217;s editing domain. This assumes said domain is an 
+			<code>AdapterFactoryEditingDomain</code> (which is true in practice in Sirius, which uses a 
+			<code>TransactionalEditingDomain</code> that inherits from this).
+		</p>
+		<p>All service methods return an explicit 
+			<code>null</code> value (or 
+			<code>false</code> for services that return a boolean) if the corresponding item provider could not be found. Note that this is indistinguishable from an item provider method which actually returns 
+			<code>null</code> or 
+			<code>false</code>.
+		</p>
+		<h4 id="ItemPropertyRelatedServices">Item Property-Related Services</h4>
+		<p>The 
+			<code>IItemPropertySource</code> associated with an element and its 
+			<code>IItemPropertyDescriptors</code> can be obtained using the following services:
+		</p>
+		<ul>
+			<li>
+				<code>getItemPropertySource(EObject)</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptors(EObject)</code> to obtain 
+				<strong>all</strong> the 
+				<code>IItemPropertyDescriptor</code> of the element.
+			</li>
+			<li>
+				<code>getPropertyDescriptorForFeature(EObject, String)</code> to obtain the 
+				<code>IItemPropertyDescriptor</code> of an element&#8217;s specific feature
+			</li>
+		</ul>
+		<p>The following services, which all take a feature name as a second argument (the first explicit one when invoked as a service) give access to the corresponding methods in the 
+			<code>IItemPropertyDescriptor</code> associated to the corresponding element&#8217;s feature:
+		</p>
+		<ul>
+			<li>
+				<code>getPropertyDescriptorPropertyValue()</code>
+			</li>
+			<li>
+				<code>isPropertyDescriptorPropertySet()</code>
+			</li>
+			<li>
+				<code>canSetPropertyDescriptorProperty()</code>
+			</li>
+			<li>
+				<code>resetPropertyDescriptorPropertyValue()</code>
+			</li>
+			<li>
+				<code>setPropertyDescriptorPropertyValue()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorCategory()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorDescription()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorDisplayName()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorFilterFlags()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorHelpContextIds()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorId()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorLabelProvider()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorFeature()</code>
+			</li>
+			<li>
+				<code>isPropertyDescriptorMany()</code>
+			</li>
+			<li>
+				<code>getPropertyDescriptorChoiceOfValues()</code>
+			</li>
+			<li>
+				<code>isPropertyDescriptorMultiLine()</code>
+			</li>
+			<li>
+				<code>isPropertyDescriptorSortChoices()</code>
+			</li>
+		</ul>
+		<h4 id="CommandrelatedServices">Command-related Services</h4>
+		<p>A series of service methods can be used to invoke the standard EMF Commands available from 
+			<code>ItemProviderAdapter</code> 's various 
+			<code>createXXXCommand()</code> methods. Note that contrary to the 
+			<code>createXXXCommand()</code> methods which simply returns a 
+			<code>Command</code> instance, the service methods exposed in this class will directly 
+			<strong>execute</strong> the command on the editing domains 
+			<code>CommandStack</code>.
+			<br/>Their names follow the 
+			<code>perfomXXXCommand()</code> pattern to reflect this. They all return the 
+			<code>self</code> element (the 
+			<code>EObject</code> on which the service was invoked.
+		</p>
+		<p>The command-related services available are:</p>
+		<ul>
+			<li>
+				<code>performSetCommand()</code>
+			</li>
+			<li>
+				<code>performUnsetCommand()</code>
+			</li>
+			<li>
+				<code>performAddCommand()</code>
+			</li>
+			<li>
+				<code>performRemoveCommand()</code>
+			</li>
+			<li>
+				<code>performReplaceCommand()</code>
+			</li>
+			<li>
+				<code>performMoveCommand()</code>
+			</li>
+		</ul>
+		<p>The implementation of these services delegate to the 
+			<code>ItemProviderAdapter.createCommand()</code> method, so any customization made in the 
+			<code>ItemProviderAdapter</code> 's implementation will be taken into account.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/general/images/common_attributes.png b/doc/6.0.x/specifier/general/images/common_attributes.png
new file mode 100644
index 0000000..8b3de5d
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/common_attributes.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/documentation_attributes.png b/doc/6.0.x/specifier/general/images/documentation_attributes.png
new file mode 100644
index 0000000..8683403
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/documentation_attributes.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/domain_class.png b/doc/6.0.x/specifier/general/images/domain_class.png
new file mode 100644
index 0000000..b6897f6
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/domain_class.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/emptyExpressionAutoCompletion.jpg b/doc/6.0.x/specifier/general/images/emptyExpressionAutoCompletion.jpg
new file mode 100644
index 0000000..e7b2fa6
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/emptyExpressionAutoCompletion.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/emptyExpressionCursor.jpg b/doc/6.0.x/specifier/general/images/emptyExpressionCursor.jpg
new file mode 100644
index 0000000..e1a8abd
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/emptyExpressionCursor.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/emptyFieldAutoCompletion.jpg b/doc/6.0.x/specifier/general/images/emptyFieldAutoCompletion.jpg
new file mode 100644
index 0000000..243f581
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/emptyFieldAutoCompletion.jpg
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/featureName.png b/doc/6.0.x/specifier/general/images/featureName.png
new file mode 100644
index 0000000..7ae02b0
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/featureName.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/interpreted_expressions.png b/doc/6.0.x/specifier/general/images/interpreted_expressions.png
new file mode 100644
index 0000000..de3a151
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/interpreted_expressions.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/nn47/.directory b/doc/6.0.x/specifier/general/images/nn47/.directory
new file mode 100644
index 0000000..d3e4e62
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/nn47/.directory
@@ -0,0 +1,6 @@
+[Dolphin]
+ShowPreview=true
+Timestamp=2010,7,27,14,47,37
+
+[Settings]
+ShowDotFiles=true
diff --git a/doc/6.0.x/specifier/general/images/questionMarque.png b/doc/6.0.x/specifier/general/images/questionMarque.png
new file mode 100644
index 0000000..09dda8c
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/questionMarque.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/quick_outline.png b/doc/6.0.x/specifier/general/images/quick_outline.png
new file mode 100644
index 0000000..8df0a0d
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/quick_outline.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/serviceNavigation.png b/doc/6.0.x/specifier/general/images/serviceNavigation.png
new file mode 100644
index 0000000..dc11d93
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/serviceNavigation.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/serviceVsmRegistration.png b/doc/6.0.x/specifier/general/images/serviceVsmRegistration.png
new file mode 100644
index 0000000..50489d1
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/serviceVsmRegistration.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/specifier-guide/collapseall.png b/doc/6.0.x/specifier/general/images/specifier-guide/collapseall.png
new file mode 100644
index 0000000..fa9b646
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/specifier-guide/collapseall.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/specifier-guide/complete_task.png b/doc/6.0.x/specifier/general/images/specifier-guide/complete_task.png
new file mode 100644
index 0000000..42e09ca
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/specifier-guide/complete_task.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/specifier-guide/expandall.png b/doc/6.0.x/specifier/general/images/specifier-guide/expandall.png
new file mode 100644
index 0000000..6687a95
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/specifier-guide/expandall.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/specifier-guide/validate_model.png b/doc/6.0.x/specifier/general/images/specifier-guide/validate_model.png
new file mode 100644
index 0000000..49c1feb
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/specifier-guide/validate_model.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/standard_colors.png b/doc/6.0.x/specifier/general/images/standard_colors.png
new file mode 100644
index 0000000..9bbbde9
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/standard_colors.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/textAreaDialog.png b/doc/6.0.x/specifier/general/images/textAreaDialog.png
new file mode 100644
index 0000000..44b49d5
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/textAreaDialog.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message1.png b/doc/6.0.x/specifier/general/images/translatable_message1.png
new file mode 100644
index 0000000..a78e88e
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message2.png b/doc/6.0.x/specifier/general/images/translatable_message2.png
new file mode 100644
index 0000000..754c7a3
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message2.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message3.png b/doc/6.0.x/specifier/general/images/translatable_message3.png
new file mode 100644
index 0000000..8ac721f
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message3.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message4.png b/doc/6.0.x/specifier/general/images/translatable_message4.png
new file mode 100644
index 0000000..60dc239
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message4.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message5.png b/doc/6.0.x/specifier/general/images/translatable_message5.png
new file mode 100644
index 0000000..c5fb69c
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message5.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message6.png b/doc/6.0.x/specifier/general/images/translatable_message6.png
new file mode 100644
index 0000000..adde570
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message6.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message8.png b/doc/6.0.x/specifier/general/images/translatable_message8.png
new file mode 100644
index 0000000..9608a3d
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message8.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/translatable_message9.png b/doc/6.0.x/specifier/general/images/translatable_message9.png
new file mode 100644
index 0000000..eb4b84c
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/translatable_message9.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/tricks.png b/doc/6.0.x/specifier/general/images/tricks.png
new file mode 100644
index 0000000..a0679f0
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/tricks.png
Binary files differ
diff --git a/doc/6.0.x/specifier/general/images/viewpoint_interpreter.png b/doc/6.0.x/specifier/general/images/viewpoint_interpreter.png
new file mode 100644
index 0000000..acd9167
--- /dev/null
+++ b/doc/6.0.x/specifier/general/images/viewpoint_interpreter.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/Properties_View_Description.html b/doc/6.0.x/specifier/properties/Properties_View_Description.html
new file mode 100644
index 0000000..55f1ac0
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/Properties_View_Description.html
@@ -0,0 +1,1734 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Properties_View_Description</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingPropertiesViews">Specifying Properties Views</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingPropertiesViews">Specifying Properties Views</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#properties_view_description">Properties View Description</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#common_attributes">Common Attributes</a>
+							</li>
+							<li>
+								<a href="#additional_services">Additional Services</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#categories">Categories</a>
+					</li>
+					<li>
+						<a href="#pages">Pages</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#page-toolbar-action">Toolbar Actions</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#groups">Groups</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#group-toolbar-action">Toolbar Actions</a>
+							</li>
+							<li>
+								<a href="#widgets-from-domain-class">Widgets From Domain Class</a>
+							</li>
+							<li>
+								<a href="#group_styles">Group Styles</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#widgets">Widgets</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#text">Text / Text area</a>
+							</li>
+							<li>
+								<a href="#button">Button</a>
+							</li>
+							<li>
+								<a href="#label">Label</a>
+							</li>
+							<li>
+								<a href="#checkbox">Checkbox</a>
+							</li>
+							<li>
+								<a href="#select">Select</a>
+							</li>
+							<li>
+								<a href="#radio_group">Radio Group</a>
+							</li>
+							<li>
+								<a href="#hyperlink">Hyperlink</a>
+							</li>
+							<li>
+								<a href="#reference">Reference</a>
+							</li>
+							<li>
+								<a href="#list">List</a>
+							</li>
+							<li>
+								<a href="#basic_custom_widgets">Basic Custom Widgets</a>
+							</li>
+							<li>
+								<a href="#advanced_custom_widgets">Advanced Custom Widgets</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#dynamic_mappings">Dynamic Mappings</a>
+					</li>
+					<li>
+						<a href="#containers_and_layout">Containers and Layout</a>
+					</li>
+					<li>
+						<a href="#styling">Styling</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#widgets_styles">Widgets styles</a>
+							</li>
+							<li>
+								<a href="#colors">Colors</a>
+							</li>
+							<li>
+								<a href="#conditional_styles">Conditional Styles</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#validation_rules">Validation rules</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#page_semantic_validation_rule">Page semantic validation rule</a>
+							</li>
+							<li>
+								<a href="#group_semantic_validation_rule">Group semantic validation rule</a>
+							</li>
+							<li>
+								<a href="#group_property_validation_rule">Group property validation rule</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#extensibility_features">Extensibility Features</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#extends">Extends</a>
+							</li>
+							<li>
+								<a href="#overrides">Overrides</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#extension_points">Extension Points</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#advanced_custom_widgets_extension_points">Extension Points for Advanced Custom Widgets</a>
+							</li>
+							<li>
+								<a href="#tab_filtering">Tab Filtering</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Starting from version 4.0, Sirius supports the definition of properties views with many features like complex styling, validation, context etc.</p>
+		<p>Properties views are defined inside the VSM in a way that is similar to other Sirius representations. The configuration elements in the VSM identify a sub-set of the elements in the semantic model to which they apply, and associate to them widgets, which will be visible in the Eclipse 
+			<em>Properties View</em> to view and edit the elements&#8217;s properties.
+		</p>
+		<p>The configuration 
+			<em>maps</em> semantic elements onto some properties view elements. At runtime, each active properties element (pages, groups, widgets) will produce zero or more elements in the properties view, depending on how many semantic elements currently match the properties element&#8217;s definition. Whenever the current selection changes Sirius will automatically re-compute which elements should appear in the properties view according to the active widgets, and create or remove the necessary elements in the properties view.
+		</p>
+		<p>Sirius properties view are enabled whenever the selected element is part of an opened session, i.e. any element selected inside a Sirius editor or from the 
+			<em>Model Explorer</em> view on an opened session.
+		</p>
+		<p>Note that if you have the (optional) support for Sirius-defined properties views correctly installed but do not specify anything inside your VSMs, Sirius will apply default generic rules to provide a canonical properties view for your model elements. As soon as you specify your own configuration, as described in this document, the default rules will be ignored in favor of yours. See 
+			<a href="#default_rules">below</a> for how both approaches can be combined.
+		</p>
+		<p>You can create a 
+			<em>Properties View</em> description under the root element of an odesign thanks to three specific menu items.
+		</p>
+		<p>
+			<img border="0" src="images/new-properties.png"/>
+		</p>
+		<ul>
+			<li>The first menu is used to create a blank 
+				<em>Properties View</em> description. With this menu, you will start your 
+				<em>Property View</em> definition from scratch.
+			</li>
+			<li>The second menu can copy the default rules directly inside of the odesign. While powerful, those default rules can be quite complex for new users.</li>
+			<li>The third menu can create a new 
+				<em>Properties View</em> which will extends the default rules. Using this mechanism, you can leverage all the default rules and you have the ability to easily add new rules.
+			</li>
+		</ul>
+		<h2 id="properties_view_description">Properties View Description</h2>
+		<p>Properties view are configured by creating a 
+			<em>Properties View Description</em> element (directly under the top-level 
+			<a href="../general/Specifying_Viewpoints.html#vsm_organization">
+				<em>Group</em>
+			</a> element of the VSM) and its sub-elements (which describe the widgets, the actions, the layout, etc.).
+		</p>
+		<p>Like many elements inside a 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>, 
+			<em>View Extension Description</em> have an optional 
+			<em>Identifier</em>, which should be unique.
+		</p>
+		<p>Inside a 
+			<em>Properties View Description</em> element, you can create:
+		</p>
+		<ul>
+			<li>
+				<a href="#categories">
+					<em>Categories</em>
+				</a>, which exist only for the specifier convenience to order his specification;
+			</li>
+		</ul>
+		<p>Inside a 
+			<em>Category</em> element, you can create:
+		</p>
+		<ul>
+			<li>
+				<a href="#pages">
+					<em>Pages</em>
+				</a>, which correspond to &#8220;tabs&#8221;;
+			</li>
+			<li>
+				<a href="#groups">
+					<em>Groups</em>
+				</a>, which represent named sections inside a page/tab which contain the actual widgets;
+			</li>
+			<li>
+				<a href="#overrides">
+					<em>Overrides</em>
+				</a>, which allows to override part of an existing properties view description. 
+			</li>
+		</ul>
+		<p>It is recommended that the 
+			<em>Properties View Description</em> be explicitly associated with the meta-model(s) of the semantic elements it will represent. You can add referenced meta-models from different sources in the 
+			<em>Metamodels</em> property section of the 
+			<em>Properties View Description</em>. Sirius will work even without this association, but setting it explicitly will give you better feedback when validating your 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>.
+		</p>
+		<p>The descriptions for all the different types of properties view elements share the same common principles:</p>
+		<ul>
+			<li>Some of the elements of the semantic model are selected, using a combination of configuration attributes (see below). These elements are called 
+				<em>targets</em>, and each one has a single widget of this type representing it.
+			</li>
+			<li>The graphical aspect of the properties view is defined by a 
+				<em>style</em>. Sirius provides a rich set of possible styles, which are described later in this document.
+			</li>
+			<li>Optionally, a behavior for the properties view element depending on the widget kind can be defined (edition for text field, on click action for hyperlink or buttons...).</li>
+		</ul>
+		<p id="context">
+			<strong>Context.</strong> Each properties view element is defined in a 
+			<em>context</em> in the VSM. At runtime, the corresponding 
+			<em>context element</em> would be the semantic element associated to the properties view element description. This context element is used as a starting point to determine which instances of a properties view element description should be created on the properties view:
+		</p>
+		<ol>
+			<li>First, the 
+				<em>Semantic Candidates Expression</em> of the description is evaluated, starting from the context element. It should return a set (possibly empty) of elements in the semantic model.
+			</li>
+			<li>This list of candidates is then filtered using the 
+				<em>Domain Class</em> specified in the description: only the candidates which are instance of the specified class are retained.
+			</li>
+			<li>Finally, the optional 
+				<em>Precondition Expression</em> of the element is evaluated, once for each of the remaining candidates. It should return a boolean value. Only the candidates for which the predicate returns a true value are kept and will actually produce an element on the properties view.
+			</li>
+		</ol>
+		<p>This order of evaluation should be kept in mind when specifying properties view. In particular, to avoid performance issues you should:</p>
+		<ul>
+			<li>Limit the number of model elements with 
+				<em>Semantic Candidate Expression</em>.
+			</li>
+			<li>Avoid testing instances type in 
+				<em>Semantic Candidate Expression</em> (this will be done anyway when filtering the 
+				<em>Domain Class</em>).
+			</li>
+			<li>Use the most specific type in 
+				<em>Domain Class</em>.
+			</li>
+			<li>Avoid navigation and long computations in 
+				<em>Precondition Expression</em>.
+			</li>
+		</ul>
+		<p>
+			<strong>Properties View Elements Definition.</strong> Properties views support several different types of elements, which are described in the following sections. They are:
+		</p>
+		<ul>
+			<li>
+				<a href="#pages">pages</a>, which represent properties view 
+				<strong>Tab</strong> that can contain sections.
+			</li>
+			<li>
+				<a href="#groups">groups</a>, which represent properties view 
+				<strong>Section</strong> that can contain widgets.
+			</li>
+			<li>
+				<a href="#widgets">widgets</a> describe the different kind of widgets supported, like texts, buttons, labels, checkboxes, radio groups...
+			</li>
+			<li>
+				<a href="#dynamic_mappings">dynamic mappings</a> are used for advanced scenarios where the set of widgets to display can not be known statically, but instead must be computed at runtime.
+			</li>
+			<li>
+				<a href="#containers_and_layout">containers and layout</a> are used to organize and layout multiple related widgets.
+			</li>
+			<li>
+				<a href="#overrides">overrides</a> are used to override the properties view of an existing properties view description.
+			</li>
+		</ul>
+		<p id="default_rules">
+			<strong>Default Properties View Rules.</strong> When no properties view definition is found for an element selected by the user, Sirius will apply default rules which attempt to give a usable (if generic) result for most user models. As soon as you define 
+			<em>some</em> custom rules for your modelers, 
+			<em>only</em> these custom rules will apply, and the default ones will be ignored. If you want to mix the default rules for some of your elements and custom ones only for some specific types, you can:
+		</p>
+		<ul>
+			<li>Extend the default rules model inside your VSM: from the top-level element of the VSM model, select 
+				<em>New Properties&gt; Extend Default Properties View</em>. This will allow you to redefine the behavior of the default rules thanks to the &#8220;extension mechanism&#8221;#extensibility_features.
+			</li>
+			<li>Import a copy of the default rules model inside your VSM: from the top-level element of the VSM model, select 
+				<em>New Properties &gt; Import Default Properties View</em>.
+			</li>
+			<li>Add your custom rules (pages and groups) and optionally update the default ones to not apply for the elements for which you provide more specific views (typically by modifying the 
+				<em>Precondition Expression</em> of the default 
+				<em>Page</em>), to do so from the top-level element of the VSM model, select 
+				<em>New Properties &gt; New Default Properties View</em>.
+			</li>
+		</ul>
+		<p>
+			<strong>Legacy Sirius Tabs.</strong> By default, the legacy 
+			<em>Semantic</em> and 
+			<em>Default</em> tabs which show the raw properties of the selected element in a plain property grid are still visible even when you have defined custom properties views (the 
+			<em>Semantic</em> tab is visible when the selection is from a Sirius representation; the 
+			<em>Default</em> tab is shown when selecting from the 
+			<em>Model Explorer</em>). If you want to hide these legacy tabs and only show your custom tabs, you can do so by changing the preferences in the 
+			<em>Sirius &gt; Sirius Properties View</em> category.
+		</p>
+		<h3 id="common_attributes">Common Attributes</h3>
+		<p>The following attributes are mostly shared by all the properties view element description (page, group, container, widget).</p>
+		<p id="identifier">
+			<strong>Identifier.</strong> Each properties view element description defines an optional attribute 
+			<em>Identifier</em>. It can be used to distinguish elements of the same type in the VSM editor, and in advanced customization scenarios where the VSM model is programmatically accessed/modified.
+		</p>
+		<p id="domain_class">
+			<strong>Domain Class.</strong> The optional 
+			<em>Domain Class</em> attribute is the type of semantic elements which are represented by the properties view element definition. The syntax for the domain class name can be the basic name, like 
+			<code>Package</code>, a qualified name using name of the EMF EPackage which defines the type, like 
+			<code>uml.Package</code>, or a fully qualified URI like 
+			<code>http://www.eclipse.org/uml2/3.0.0/UML#//Package</code>.
+			<br/>An empty 
+			<em>Domain Class</em> means that the element being defined will be applicable to any model element of any type. By default, new properties view elements can be created on 
+			<em>any</em> instance of the 
+			<em>Domain Class</em>.
+		</p>
+		<p id="precondition_expression">
+			<strong>Precondition Expression.</strong> You can use the 
+			<em>Precondition Expression</em> to change this. If such an expression is specified, it will be evaluated in the 
+			<a href="#context">context</a> of the semantic element the user has selected, and only if the expression returns 
+			<code>true</code> will the properties view element be applied to that semantic element.
+		</p>
+		<p id="label_expression">
+			<strong>Label Expression.</strong> This expression is used to compute the text of the label describing the element (which will typically appear on the left of a widget). The 
+			<em>Label expression</em> is evaluated in the context of the semantic element and should return a string. If the expression is not specified, the default label is empty.
+		</p>
+		<p id="help_expression">
+			<strong>Help Expression.</strong> The help text of a properties view element is specified using the 
+			<em>Help expression</em>, which is evaluated in the context of the semantic element and should return a string. It will appear as a tooltip on the question-mark icon associated to a widget.
+		</p>
+		<p id="is_enabled_expression">
+			<strong>Is Enabled Expression.</strong> Each widget can be enabled or disabled (making it visible but read-only) . The 
+			<em>Is Enabled Expression</em> is evaluated in the context of the semantic element and should return a boolean. It the expression is not specified it defaults to 
+			<em>true</em> (meaning the widget is enabled).
+		</p>
+		<p id="semantic_candidate_expression">
+			<strong>Semantic Candidate Expression.</strong> The 
+			<em>Semantic Candidate Expression</em> defines the model element represented by the properties view element.
+		</p>
+		<p id="styles">
+			<strong>Styles.</strong> Each kind of properties view element supports a rich set of possible 
+			<a href="#styling">styles</a>.
+		</p>
+		<p>To find some documentation for each properties, you can also refer to the tool-tips available directly in the editor on the &#8220;question mark&#8221; icon of each property.</p>
+		<p>Here is an example of a widget configuration (a single-line 
+			<a href="#text">text</a> in this case) which illustrates some of the common attributes:
+		</p>
+		<p>
+			<img border="0" src="images/basic-properties-example-vsm.png"/>
+		</p>
+		<p>The 
+			<em>Text Element Name (non-editable)</em> element has the exact same configuration except that its 
+			<em>Label Expression</em> is 
+			<code>Name (read-only):</code> and its 
+			<em>Is Enabled Expression</em> is set to 
+			<code>aql:false</code>.
+		</p>
+		<p>Here is the resulting properties view rendered for a diagram element:</p>
+		<p>
+			<img border="0" src="images/basic-properties-example-diagram.png"/> 
+		</p>
+		<p>We see both label expressions on the left of each widget, help icons which show the computed 
+			<em>Help Expression</em> when the user leaves the mouse pointer on them, and the actual widgets. The second text widget is disabled (visible thanks to the light blue background) because of its  
+			<em>Is Enabled Expression</em>.
+		</p>
+		<h3 id="additional_services">Additional Services</h3>
+		<p>Beside 
+			<code>self</code>, which represents the current context element on which an expression is evaluated, every expression defined inside a 
+			<em>Property View Description</em> has access to an additional special variable named 
+			<code>input</code>, which offers some additional services. For a given user selection, the value of 
+			<code>input</code> is the same everywhere inside a 
+			<em>Property View Description</em>; it corresponds to a descriptor of what the user select and can be used to obtain contextual information.
+		</p>
+		<p>
+			<strong>Services on 
+				<code>input</code>.
+			</strong>
+		</p>
+		<ul>
+			<li>
+				<code>input.getOriginalSelection()</code>: returns the original, raw element selected by the user before any unwrapping or interpretation. This may not be a model element; for Sirius diagrams for example this will be an 
+				<code>EditPart</code>.
+			</li>
+			<li>
+				<code>input.getSemanticElement()</code>: returns the main semantic element associated with the selection. This will correspond to the 
+				<code>self</code> variable inside a 
+				<em>Page</em>, but inside a group 
+				<code>self</code> may have a different value is 
+				<em>Semantic Candidate Expressions</em> were used, so this service can be used to obtain the &#8220;original self&#8221; from anywhere.
+			</li>
+			<li>
+				<code>input.getAllSemanticElements()</code>: returns 
+				<em>all</em> the semantic model elements associated with the selection, not just the main one. This will include additional 
+				<code>DRepresentationElement#semanticElements</code> if there are any.
+			</li>
+			<li>
+				<code>input.emfEditServices(EObject)</code>: provides a handle to invoke &#8220;EMF Edit&#8221;-related services on the model element specified in argument. See below for the list of services that can be called on the result.
+			</li>
+			<li>
+				<code>input.context()</code>: provides a handle to invoke additional services to obtain more information about the overall context of the selection. See below fot the list of services that can be called on the result.
+			</li>
+		</ul>
+		<p>
+			<strong>Services on 
+				<code>input.emfEditServices(EObject)</code>.
+			</strong> In the descriptions below, 
+			<code>obj</code> designates the 
+			<code>EObject</code> instance which was passed to 
+			<code>emfEditServices()</code>.
+		</p>
+		<ul>
+			<li>
+				<code>getChoiceOfValues(EStructuralFeature)</code>: returns all the possible values for the specified feature of 
+				<code>obj</code>, as defined by its 
+				<code>IItemPropertyDescriptor</code>. 
+			</li>
+			<li>
+				<code>getDescription(EStructuralFeature)</code>: returns the (textual) description of the specified feature of 
+				<code>obj</code>, as defined by its 
+				<code>IItemPropertyDescriptor</code>.
+			</li>
+			<li>
+				<code>getEStructuralFeatures()</code>: returns all the features of 
+				<code>obj</code> that would be shown in the properties view by default. This ignores transient, derived and containment features.
+			</li>
+			<li>
+				<code>getImage()</code>: returns the image (icon) to use for 
+				<code>obj</code>, as defined by its 
+				<code>IItemLabelProvider</code>.
+			</li>
+			<li>
+				<code>getText()</code>: returns the textual representation to use for 
+				<code>obj</code>, as defined by its 
+				<code>IItemLabelProvider</code>.
+			</li>
+			<li>
+				<code>getText(EStructuralFeature)</code>: returns the &#8220;display name&#8221; of the specified feature of 
+				<code>obj</code>, as defined by its 
+				<code>IItemPropertyDescriptor</code>, or the textual representation of the feature itself (as defined by its own 
+				<code>IItemLabelProvider</code>) if no display name is defined.
+			</li>
+			<li>
+				<code>isMultiline(EStructuralFeature)</code>: checks whether the specified feature of 
+				<code>obj</code> (which is assumed to be textual) should be represented on muliple lines, as defined by its 
+				<code>IItemPropertyDescriptor.isMultiLine()</code> method.
+			</li>
+			<li>
+				<code>needsCheckboxWidget(EStructuralFeature)</code>: checks whether the specified feature of 
+				<code>obj</code> can be represented by a checkbox widget (i.e. it is a single-valued 
+				<code>boolean</code> or 
+				<code>java.lang.Boolean</code>).
+			</li>
+			<li>
+				<code>needsTextWidget(EStructuralFeature)</code>: checks whether the specified feature of 
+				<code>obj</code> can be represented by a text (or text area) widget (i.e. it is a single-valued string, number or date). 
+			</li>
+			<li>
+				<code>setValue(EStructuralFeature, Object)</code>: sets the value of the specified feature of 
+				<code>obj</code> to the given value. This is a thin wrapper around 
+				<code>EObject.eSet()</code> and should only be used inside widget actions as it modifies the model. It only handles basic cases; explicit model operations or custom services should be prefered if possible.
+			</li>
+		</ul>
+		<p>
+			<strong>Services on 
+				<code>input.context()</code>.
+			</strong>
+		</p>
+		<ul>
+			<li>
+				<code>mainSemanticElement()</code>: returns the main semantic element associated with the selection. This is equivalent to 
+				<code>input.getSemanticElement()</code>.
+			</li>
+			<li>
+				<code>allSemanticElements()</code>: returns 
+				<em>all</em> the semantic model elements associated with the selection, not just the main one. This is equivalent to  
+				<code>input.getAllSemanticElements()</code>.
+			</li>
+			<li>
+				<code>representation()</code>: returns the 
+				<code>DRepresentation</code> instance in which the current input was selected, or 
+				<em>null</em> if the element was selected from the 
+				<em>Model Explorer</em>.
+			</li>
+			<li>
+				<code>semanticDecorator()</code>: returns the 
+				<code>DSemanticDecorator</code> instance which was selected.
+			</li>
+			<li>
+				<code>session()</code>: return the 
+				<code>Session</code> in the context of which the selection was done. This is a Java object which can only be used by additional (custom) Java services.
+			</li>
+		</ul>
+		<h2 id="categories">Categories</h2>
+		<p>A 
+			<em>Category</em> is used to sort the 
+			<a href="#pages">pages</a> and the 
+			<a href="#groups">groups</a>. The category does not represent anything in the final user properties view, the category exists only for the specifier convenience to order the specification. For example a 
+			<em>Reused</em> category can be created to store all the groups that would be used by different 
+			<a href="#pages">pages</a> and 
+			<a href="../general/Model_Operations.html#dialogandwizard">dialogs</a>.
+			<br/>Categories can be created 
+		</p>
+		<h2 id="pages">Pages</h2>
+		<p>A 
+			<em>Page</em> is used to represent a 
+			<strong>Tab</strong> in the properties view.
+		</p>
+		<p>
+			<img alt="Properties can be organized in separate tabs, defined by Page Description elements" title="Properties can be organized in separate tabs, defined by Page Description elements" border="0" src="images/pages.png"/> 
+		</p>
+		<p>Pages are configured by creating a 
+			<em>Page</em> element inside a 
+			<em>Properties View Description</em>. In the illustration above, the two pages 
+			<em>General</em> and 
+			<em>Hierarchy</em> have been defined from the VSM. They appear above the standard tabs provided by Sirius (
+			<em>Semantic</em>, 
+			<em>Advanced</em>, etc.).
+		</p>
+		<p>Much like the other properties view elements, you must specify the 
+			<a href="#identifier">
+				<em>Identifier</em>
+			</a>, 
+			<a href="#domain_class">
+				<em>Domain Class</em>
+			</a>, 
+			<a href="#precondition_expression">
+				<em>Precondition Expression</em>
+			</a>, 
+			<a href="#label_expression">
+				<em>Label Expression</em>
+			</a>, 
+			<a href="#semantic_candidate_expression">
+				<em>Semantic Candidate Expression</em>
+			</a>.
+		</p>
+		<p>The definition of a page follows the general rules described 
+			<a href="#properties_view_description">above</a> to determine the semantic elements for which a page should be created.
+		</p>
+		<p>A page&#8217;s content is defined by the 
+			<a href="#groups">
+				<em>Groups</em>
+			</a> it references, which are defined directly under the 
+			<em>Properties View Description</em>. The groups are ordered in the page accordingly to their order in the groups reference list in the VSM.
+		</p>
+		<h3 id="page-toolbar-action">Toolbar Actions</h3>
+		<p>A page can also define toolbar actions which will be used to create buttons in the toolbar of the page to let the end user execute some operations easily. A 
+			<em>Toolbar Action</em> can have a tooltip by returning a string for the 
+			<em>Tooltip expression</em>. They also contain an 
+			<em>Initial Operation</em> used to define the model operations to execute when the user will click on the button. Finally a 
+			<em>Toolbar Action</em> can have an image thanks to an 
+			<em>Image expression</em>. The 
+			<em>Image expression</em> must return a string with the following structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif. If an image is not provided or not found, a default image will be used.
+		</p>
+		<h2 id="groups">Groups</h2>
+		<p>A 
+			<em>Group</em> is used to represent a 
+			<strong>Section</strong> in a properties view tab.
+		</p>
+		<p>
+			<img alt="Inside a tab, properties can be grouped in foldable sections" title="Inside a tab, properties can be grouped in foldable sections" border="0" src="images/groups.png"/>
+		</p>
+		<p>Groups are configured by creating a 
+			<em>Group</em> element inside a 
+			<em>Properties View Description</em>. Groups will only be visible inside a tab if they are referenced by the corresponding 
+			<em>Page</em>. By default, a newly created 
+			<em>Group</em> element is not part of any page, so you 
+			<em>must</em> add it explicitly to the 
+			<em>Pages</em> where it should appear. A single 
+			<em>Group</em> definition can be referenced in as many 
+			<em>Page</em> definition as needed; this allows sharing common sections between different pages.
+		</p>
+		<p>Much like the other properties view elements, you must specify the 
+			<a href="#identifier">
+				<em>Identifier</em>
+			</a>, 
+			<a href="#domain_class">
+				<em>Domain Class</em>
+			</a>, 
+			<a href="#precondition_expression">
+				<em>Precondition Expression</em>
+			</a>, 
+			<a href="#label_expression">
+				<em>Label Expression</em>
+			</a>, 
+			<a href="#semantic_candidate_expression">
+				<em>Semantic Candidate Expression</em>
+			</a>, 
+			<a href="#styles">
+				<em>Styles</em>
+			</a>, 
+			<a href="#conditional_styles">
+				<em>Conditional Styles</em>
+			</a>.
+		</p>
+		<p>The definition of a group follows the general rules described 
+			<a href="#properties_view_description">above</a> to determine the semantic elements for which a group should be created.
+		</p>
+		<p>A group can contain 
+			<a href="#widgets">
+				<em>widgets</em>
+			</a>, 
+			<a href="#containers_and_layout">
+				<em>containers</em>
+			</a> to organize them, and 
+			<a href="#validation_rules">
+				<em>validation rules</em>
+			</a>, all of which are defined inside the group description (
+			<em>New Widget &gt; Container|Text...</em> and 
+			<em>New &gt; Group Validations</em>, respectively).
+		</p>
+		<h3 id="group-toolbar-action">Toolbar Actions</h3>
+		<p>A group can also define toolbar actions which will be used to create buttons in the toolbar of the group to let the end user execute some operations easily. A 
+			<em>Toolbar Action</em> can have a tooltip by returning a string for the 
+			<em>Tooltip expression</em>. They also contain an 
+			<em>Initial Operation</em> used to define the model operations to execute when the user will click on the button. Finally a 
+			<em>Toolbar Action</em> can have an image thanks to an 
+			<em>Image expression</em>. The 
+			<em>Image expression</em> must return a string with the following structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif. If an image is not provided or not found, a default image will be used.
+		</p>
+		<h3 id="widgets-from-domain-class">Widgets From Domain Class</h3>
+		<p>
+			<img alt="Create easily a widget for each structural feature of your EClass" title="Create easily a widget for each structural feature of your EClass" border="0" src="images/widget-from-domain-class.png"/>
+		</p>
+		<p>By specifying the 
+			<em>Domain Class</em> of a group and by specifying the metamodels on the relevant container of the group (like the Properties View object), you will have access to a new contextual action used to create a default version of a widget for each of the structural features of your 
+			<em>Domain Class</em>. You can create all the widgets at once or only the desired ones. The configuration generated in your odesign is heavily inspired by the default rules available, as such all the EString properties will be handled by a text widget, all the EBoolean properties by a checkbox, etc.
+		</p>
+		<h3 id="group_styles">Group Styles</h3>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a>. This section only presents the aspects which are specific to groups.
+		</p>
+		<p>For groups you can define the following style attributes:</p>
+		<ul>
+			<li>
+				<em>Background Color</em>: You can specify the background color using 
+				<a href="#colors">colors</a> from the standard or user-defined palette.
+			</li>
+			<li>
+				<em>Bar Style</em>: Is used to define the section style. There are 3 different styles: 
+				<code>TITLE BAR</code>, 
+				<code>SHORT TITLE BAR</code>, 
+				<code>NO TITLE</code> (see the first table below for illusrations of these styles).
+			</li>
+			<li>
+				<em>Expanded by Default</em>: This flag is used to define if the section should be initialy expanded or collapsed.
+			</li>
+			<li>
+				<em>Font Name Expression</em>: Is used to computes the name of the font to use.
+			</li>
+			<li>
+				<em>Font size Expression</em>: Indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Foreground Color</em>: You can specify the foreground color using 
+				<a href="#colors">color</a> from the standard or user-defined palette.
+			</li>
+			<li>
+				<em>Toggle style</em>: Is used to define the style of the toggle. There are 3 different toggles: 
+				<code>TWISTIE</code>, 
+				<code>TREE NODE</code>, 
+				<code>NONE</code> (see the second table below for illusrations of these styles).
+			</li>
+		</ul>
+		<p>The following tables illustrate the different 
+			<em>Bar Style</em> and 
+			<em>Toggle Style</em> available on groups:
+		</p>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/group-style-titlebar.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/group-style-short-titlebar.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/group-style-no-title.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>
+					<code>TITLE BAR</code>
+				</th>
+				<th>
+					<code>SHORT TITLE BAR</code>
+				</th>
+				<th>
+					<code>NO TITLE</code>
+				</th>
+			</tr>
+		</table>
+		<table class="table table-striped table-condensed">
+			<tr>
+				<td>
+					<img border="0" src="images/group-style-toggle-twistie.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/group-style-toggle-treenode.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/group-style-toggle-none.png"/>
+				</td>
+			</tr>
+			<tr>
+				<th>
+					<code>TWISTIE</code>
+				</th>
+				<th>
+					<code>TREE NODE</code>
+				</th>
+				<th>
+					<code>NONE</code>
+				</th>
+			</tr>
+		</table>
+		<h2 id="widgets">Widgets</h2>
+		<p>A widget is used to represent model elements in the properties view and, for most of them, to allow users to edit said elements. Widgets can appear directly inside a group, a 
+			<a href="#dynamic_mappings">dynamic mapping</a> or inside a 
+			<a href="#containers_and_layout">container</a>, in which case you can specify a specific 
+			<a href="#containers_and_layout">layout</a> which will be used to graphically organize all the widgets inside the container.
+		</p>
+		<p>The definition of a widget follows the general rules described 
+			<a href="#properties_view_description">above</a> to determine the semantic elements for which a widget should be created.
+		</p>
+		<p>Much like the other properties view elements, you can specify the widget&#8217;s 
+			<a href="#label_expression">
+				<em>Label Expression</em>
+			</a>, 
+			<a href="#help_expression">
+				<em>Help Expression</em>
+			</a>,  
+			<a href="#is_enabled_expression">
+				<em>Is Enabled Expression</em>
+			</a>, 
+			<a href="#styles">
+				<em>Styles</em>
+			</a>, 
+			<a href="#conditional_styles">
+				<em>Conditional Styles</em>
+			</a>.
+		</p>
+		<h3 id="text">Text / Text area</h3>
+		<p>A 
+			<em>Text</em> widget is used to represent a 
+			<strong>single line text</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img border="0" src="images/widget-text.png"/>
+		</p>
+		<p>A 
+			<em>Text Area</em> is used to represent a 
+			<strong>multiple lines text</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img border="0" src="images/widget-textarea.png"/>
+		</p>
+		<p>The definition of a text/text area follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a text should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For texts and text areas, you must define the 
+			<em>Value Expression</em> which is used to compute the text displayed in the text field and should return a string. If the expression is not specified, the default value is an empty string. The expression is evaluated in the context of the semantic target element.
+		</p>
+		<p>For text areas, you must define the 
+			<em>Line Count</em> which represents the height of the text area in number of lines.
+		</p>
+		<h4 id="edit_text">Text Edition</h4>
+		<p>To define the behavior of the text when a change occurs, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element directly contained inside the widget, using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>The operations defined under the 
+			<em>Begin</em> can use the 
+			<code>newValue</code> variable which represents the value entered by the user (as a string). The root operation is executed in the context of the semantic target element.
+		</p>
+		<p>Sirius automatically invokes the edit operation when the focus leaves the widget. For single-line 
+			<em>Text</em> widgets, the edit operation is also triggered when the user hits 
+			<em>Enter</em>. Note that if an error occurs while executing the edit operation, the whole effect of the operation on the underlying model is cancelled, and an error is logged.
+		</p>
+		<h4 id="text_styles">Text/Text Area Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets. This section only presents the aspects which are specific to texts.
+		</p>
+		<p>One of the responsibility of texts styles is to describe how text fields will be formated. The following properties are available :</p>
+		<ul>
+			<li>
+				<em>Font Name Expression</em>: Is used to compute the name of the font to use for the text field.
+			</li>
+			<li>
+				<em>Font Size Expression</em> : Indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Background Color</em>: You can specify the background color of the text field using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Foreground Color</em>: You can specify the foreground color of the text field using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Font Format</em>: Is used to specify the font style attributes (Bold and/or Italic and/or Underline and/or Strike through).
+			</li>
+		</ul>
+		<p>Here are examples of text and text area widgets with some of their style attributes customized:</p>
+		<p>
+			<img alt="Text and TextArea widgets with customized style" title="Text and TextArea widgets with customized style" border="0" src="images/widget-text-styling.png"/>
+		</p>
+		<h3 id="button">Button</h3>
+		<p>A 
+			<em>Button</em> is used to represent a 
+			<strong>button</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>, that can be used to trigger an arbitrary (configurable) operation on the model.
+		</p>
+		<p>
+			<img alt="Example of a button widget" title="Example of a button widget" border="0" src="images/widget-button.png"/>
+		</p>
+		<p>The definition of a button follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a button should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For buttons, you must define the 
+			<em>Button Label Expression</em> which is used to compute the label displayed on the button and should return a string. If the expression is not specified, the default value is the empty string. You can also specify an image with the 
+			<em>Image expression</em>. An image can be used instead of a button label or along with it. The 
+			<em>Image expression</em> should return a string with the structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif
+		</p>
+		<h4 id="pushed_button">Behavior executed on click</h4>
+		<p>To define the behavior of the button when it is clicked, simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>. The root operation is executed in the context of the semantic target element.
+		</p>
+		<h4 id="button_styles">Button Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="label">Label</h3>
+		<p>A 
+			<em>Label</em> is used to represent a 
+			<strong>non editable text</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>Here is an example which shows two label widgets:</p>
+		<p>
+			<img alt="Examples of label widgets" title="Examples of label widgets" border="0" src="images/widget-label.png"/>
+		</p>
+		<p>The definition of a label follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a label should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For labels, you must define the 
+			<em>Value Expression</em> which is used to compute the text displayed in the description. The 
+			<em>Value Expression</em> can return any kind of object but the result displayed will be the result of a call to 
+			<code>Object.toString()</code>. If you want to customize how the result will be displayed, you can return a string in the value expression or use the 
+			<em>Display Expression</em>. The 
+			<em>Display Expression</em> will have access to the result of the 
+			<em>Value Expression</em> using the variable 
+			<code>value</code> and it should return a string. If the expression is not specified, the default value is the empty string.
+		</p>
+		<h4 id="label_actions">Widget Actions</h4>
+		<p>A 
+			<em>Label</em> can optionally define one or more 
+			<em>Widget Actions</em>, which are created as children element of the 
+			<em>Label</em> element (
+			<em>New &gt; Widget Action</em>). Each action has a 
+			<em>Label Expression</em> and a behavior defined by 
+			<a href="../general/Model_Operations.html">model operations</a> contained inside. If present, actions will be rendered as buttons on the right of the label itself. The button&#8217;s text is defined by the 
+			<em>Label Expression</em>, and its behavior when pushed by the model operations. You can also specify an image with the 
+			<em>Image expression</em>. An image can be used instead of a label or along with it. The 
+			<em>Image expression</em> should return a string with the structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif
+		</p>
+		<h4 id="label_styles">Label Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets. This section only presents the aspects which are specific to texts.
+		</p>
+		<p>One of the responsibility of labels styles is to describe how descriptions will be formated. The following properties are available :</p>
+		<ul>
+			<li>
+				<em>Font Name Expression</em>: Is used to compute the name of the font to use for the description.
+			</li>
+			<li>
+				<em>Font Size Expression</em> : Indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Background Color</em>: You can specify the background color of the description using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Foreground Color</em>: You can specify the foreground color of the description using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Font Format</em>: Is used to specify the font style attributes (Bold and/or Italic and/or Underline and/or Strike through).
+			</li>
+		</ul>
+		<p>
+			<img alt="Example of labels with customized style" title="Example of labels with customized style" border="0" src="images/widget-label-styling.png"/>
+		</p>
+		<h3 id="checkbox">Checkbox</h3>
+		<p>A 
+			<em>Checkbox</em> is used to represent a 
+			<strong>checkbox</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img alt="Examples of checkbox widgets" title="Examples of checkbox widgets" border="0" src="images/widget-checkbox.png"/>
+		</p>
+		<p>The definition of a checkbox follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a checkbox should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For checkboxes, you must define the 
+			<em>Value Expression</em> which is used to compute the checked/unchecked state of the checkbox and so should return a boolean (return 
+			<em>true</em> to display the checkbox checked).
+		</p>
+		<h4 id="checkbox_change_value">Change value</h4>
+		<p>To define the behavior of the checkbox when the user clicks on it, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>The operations defined under the 
+			<em>Begin</em> can use the 
+			<code>newValue</code> variable which represents the value set by the user as a boolean; it will be 
+			<em>true</em> if the checkbox was unchecked before, and the user clicked on it to check it, 
+			<em>false</em> otherwise. Note that if an error occurs while executing the edit operation, the whole effect of the operation on the underlying model is canelled, and an error is logged.
+		</p>
+		<h4 id="checkbox_styles">Checkbox Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="select">Select</h3>
+		<p>A 
+			<em>Select</em> is used to represent a 
+			<strong>combo box</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img alt="Example of a select widget" title="Example of a select widget" border="0" src="images/widget-select.png"/>
+		</p>
+		<p>The definition of a select follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a select should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For selects, you must define :</p>
+		<ul>
+			<li>the 
+				<em>Candidates Expression</em> which is used to compute the candidates available in the combo and should return a list of elements from which the user can select the select&#8217;s value.
+			</li>
+			<li>the 
+				<em>Candidate Display Expression</em> which is used to compute the label displayed for each possible candidate in the combo and so should return a string. The 
+				<em>Candidate Display Expression</em> can use the 
+				<code>candidate</code> variable which represents the element currently evaluated.
+			</li>
+			<li>the 
+				<em>Value Expression</em> which is used to compute the element selected in the combo and should return an object, which should be an element of the collection returned by 
+				<em>Candidates Expression</em>.
+			</li>
+		</ul>
+		<h4 id="select_change_value">Change value</h4>
+		<p>To define the behavior of the 
+			<em>Select</em> when the user selects a different element, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>The expressions defined under the 
+			<em>Begin</em> can use the 
+			<code>newValue</code> variable which represents the value selected by the user. Note that if an error occurs while executing the edit operation, the whole effect of the operation on the underlying model is cancelled, and an error is logged.
+		</p>
+		<h4 id="select_styles">Select Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="radio_group">Radio Group</h3>
+		<p>A 
+			<em>Radio</em> is used to represent a 
+			<strong>radio group</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img alt="Example of a radio group widget" title="Example of a radio group widget" border="0" src="images/widget-radio.png"/>
+		</p>
+		<p>The definition of a radio group follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a radio group should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For radio groups, you must define :</p>
+		<ul>
+			<li>the 
+				<em>Candidates Expression</em> which is used to compute the candidates available in the radio group and should return a list of elements from which the user can select the radio group’s value.
+			</li>
+			<li>the 
+				<em>Candidate Display Expression</em> which is used to compute the label displayed for each possible candidate in the radio group and so should return a string. The 
+				<em>Candidate Display Expression</em> can use the 
+				<code>candidate</code> variable which represents the element currently evaluated.
+			</li>
+			<li>the 
+				<em>Value Expression</em> which is used to compute the element selected in the radio group and should return an object, which should be an element of the collection returned by 
+				<em>Candidates Expression</em>.
+			</li>
+		</ul>
+		<h4 id="radio_change_value">Change value</h4>
+		<p>To define the behavior of the radio group when the selection changes, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>The expressions defined under the 
+			<em>Begin</em> can use the 
+			<code>newValue</code> variable which represents the value selected by the user. Note that if an error occurs while executing the edit operation, the whole effect of the operation on the underlying model is cancelled, and an error is logged.
+		</p>
+		<h4 id="radio_styles">Radio Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="hyperlink">Hyperlink</h3>
+		<p>A 
+			<em>Hyperlink</em> is used to represent an 
+			<strong>hyperlink</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>
+			<img alt="Example of an hyperlink widget" title="Example of an hyperlink widget" border="0" src="images/widget-hyperlink.png"/>
+		</p>
+		<p>The definition of an hyperlink follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which an hyperlink should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For hyperlinks, you must define the 
+			<em>Value Expression</em> which is used to compute the hyperlink displayed. The 
+			<em>Value Expression</em> can return any kind of object but the result displayed will be the result of a call to 
+			<em>java.lang.Object#toString()</em>. If you want to customize how the result will be displayed, you can return a String in the value expression or use the 
+			<em>Display Expression</em>. The 
+			<em>Display Expression</em> will have access to the result of the 
+			<em>Value Expression</em> using the variable named 
+			<code>value</code> and it should return a String.
+		</p>
+		<h4 id="hyperlink_click_on_value">Behavior executed on click</h4>
+		<p>To define the behavior of the hyperlink when it is clicked, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<h4 id="hyperlink_actions">Widget Actions</h4>
+		<p>A 
+			<em>Hyperlink</em> can optionally define one or more 
+			<em>Widget Actions</em>, which are created as children element of the 
+			<em>Hyperlink</em> element (
+			<em>New &gt; Widget Action</em>). Each action has a 
+			<em>Label Expression</em> and a behavior defined by 
+			<a href="../general/Model_Operations.html">model operations</a> contained inside. If present, actions will be rendered as buttons on the right of the label itself. The button&#8217;s text is defined by the 
+			<em>Label Expression</em>, and its behavior when pushed by the model operations. You can also specify an image with the 
+			<em>Image expression</em>. An image can be used instead of a button label or along with it. The 
+			<em>Image expression</em> should return a string with the structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif
+		</p>
+		<h4 id="hyperlink_styles">Hyperlink Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets. This section only presents the aspects which are specific to hyperlinks.
+		</p>
+		<p>One of the responsibility of hyperlinks styles is to describe how hyperlinks will be formated. The following properties are available :</p>
+		<ul>
+			<li>
+				<em>Font Name Expression</em>: Is used to compute the name of the font to use for the text field.
+			</li>
+			<li>
+				<em>Font Size Expression</em> : Indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Background Color</em>: You can specify the background color of the text field using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Font Format</em>: Is used to specify the font style attributes (Bold and/or Italic and/or Strike through).
+			</li>
+		</ul>
+		<h3 id="reference">Reference</h3>
+		<p>A 
+			<em>Reference</em> is used to represent the value of a reference in the model.
+		</p>
+		<p>The configuration of the 
+			<em>Reference</em> widget is minimal. Beside the standard properties available on all widgets like 
+			<em>Label Expression</em>, 
+			<em>Help Expression</em> and 
+			<em>Is Enabled Expression</em>, you only need to specify:
+		</p>
+		<ul>
+			<li>
+				<em>Reference Owner Expression</em>: optional, defaults to 
+				<code>var:self</code>. If specified, the reference to display will be looked on the element returned by the expression instead of the current one.
+			</li>
+			<li>
+				<em>Reference Name Expression</em>: this should return a string which designates the name of the 
+				<em>EReference</em> to display. It can be a fixed string or a computed expression.
+			</li>
+		</ul>
+		<p>The 
+			<em>Reference</em> widget&#8217;s appearance will depend whether the reference to display is single-valued or multi-valued:
+		</p>
+		<p>
+			<img alt="A Reference widget displaying a single-valued reference" title="A Reference widget displaying a single-valued reference" border="0" src="images/reference-single-value.png"/>
+		</p>
+		<p>
+			<img alt="A Reference widget displaying a multi--valued reference" title="A Reference widget displaying a multi--valued reference" border="0" src="images/reference-multiple-value.png"/>
+		</p>
+		<p>As mentioned above, the configurability of the 
+			<em>Reference</em> widget is minimal, it determines all of its behavior using the standard EMF features:
+		</p>
+		<ul>
+			<li>the value of the reference is obtained reflectively using 
+				<code>eGet</code>.
+			</li>
+			<li>the textual representation and icon of the value(s) of the reference are determined automatically using the corresponding 
+				<code>IItemLabelProvider</code>.
+			</li>
+			<li>the behavior of the action buttons is hard-coded to perform the standard operation when selecting a diffrente value (from an existing element in the model), creating a new instance to set as the value, removing an element, or moving up/down the elements in a multi-valued reference.</li>
+		</ul>
+		<p>If you need more specific behavior, you need to use either an 
+			<em>Hyperlink</em> (for single values) or a 
+			<em>List</em> widget (for multiple values) with custom actions implementing the required behavior.
+		</p>
+		<p>In a similar fashion as the hyperlink and the list widgets, it is possible to define an 
+			<em>Initial Operation</em> on the reference widget in order to execute some model operations when the user will click on the widget. If an 
+			<em>Initial Operation</em> is configured, the single-valued version of the widget will use a hyperlink instead of a regular label.
+		</p>
+		<h4 id="reference_styles">Reference Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="list">List</h3>
+		<p>A 
+			<em>List</em> is used to represent a 
+			<strong>list with buttons</strong> in a 
+			<a href="#groups">group</a> or in a 
+			<a href="#containers_and_layout">container</a>.
+		</p>
+		<p>Depending on the parameters configuration the list widget will be represented thanks to a list and multiple buttons when 
+			<a href="#list_actions">
+				<em>Widget Actions</em>
+			</a> are defined.
+		</p>
+		<p>The definition of a list follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a list should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For lists, you must define:</p>
+		<ul>
+			<li>the 
+				<em>Value Expression</em> which is used to compute the element to display and should return an object.
+			</li>
+			<li>the 
+				<em>Display Expression</em> which is used to compute the text displayed in the text field and should return a string. It is evaluated in the context of the semantic target element and has access to the variable 
+				<code>value</code> which corresponds to the element to display.
+			</li>
+			<li>the 
+				<a href="#list_actions">
+					<em>Widget Actions</em>
+				</a> are used to associate some buttons to the text field.
+			</li>
+		</ul>
+		<h4 id="list_on_click_operation">Behavior executed on click</h4>
+		<p>To define the behavior, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>. A variable named 
+			<code>onClickEventKind</code> is available to determine if the operation has been triggered by a single click or double click. In case of a single click, the variable has the value &#8220;SINGLE_CLICK&#8221; and &#8220;DOUBLE_CLICK&#8221; in case of a double click.
+		</p>
+		<p>The expressions defined under the 
+			<em>Begin</em> can use the 
+			<code>selection</code> variable which represents the values selected by the user. This variable will contain the list of the values selected.
+		</p>
+		<h4 id="list_actions">Widget actions</h4>
+		<p>A list can contain 
+			<em>actions</em> which represent 
+			<strong>buttons</strong> associated to the list field.
+		</p>
+		<p>For actions, you must define the 
+			<em>Label Expression</em> which is used to compute the label displayed on the button and should return a string. If the expression is not specified, the default value is equal to 
+			<code>...</code>. You can also specify an image with the 
+			<em>Image expression</em>. An image can be used instead of a button label or along with it. The 
+			<em>Image expression</em> should return a string with the structure PROJECT_NAME/IMAGE_PATH. For example: org.eclipse.sirius.sample.basicfamily.design/icons/Delete_16x16.gif
+		</p>
+		<h4 id="list_action_pushed_button">Action Pushed Button</h4>
+		<p>To define the behavior of the button when is pushed, you simply specify the behavior associated to the edition inside the 
+			<em>Begin</em> element using all the standard 
+			<a href="../general/Model_Operations.html">model operations</a>.
+		</p>
+		<p>The expressions defined under the 
+			<em>Begin</em> can use the 
+			<code>selection</code> variable which represents the values selected by the user in the list field. Note that 
+			<code>selection</code> is always a collection, even if only a single element is currently selected.
+		</p>
+		<h4 id="list_styles">List Styles</h4>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets.
+		</p>
+		<h3 id="basic_custom_widgets">Basic Custom Widgets</h3>
+		<p>A 
+			<em>Custom Description</em> is used when none of the predefined styles correspond to your need. Custom widgets are implemented in Java and use the 
+			<code>org.eclipse.eef.ide.ui.eefLifecycleManagerProvider</code> extension point.
+		</p>
+		<p>The definition of a custom widget follows the general rules described 
+			<a href="#widgets">above</a> to determine the semantic elements for which a custom widget should be created. It is evaluated in the context of the semantic target element.
+		</p>
+		<p>For custom widgets, the 
+			<em>Identifier</em> is mandatory. It is used to find the widget contributed with the extension point.
+		</p>
+		<p>See 
+			<a href="../../developer/extensions-properties_provide_custom_widget_basic.html">the reference documentation</a> for how to actually implement your own basic custom widgets.
+		</p>
+		<h5 id="basic_custom_widgets_expression">Custom Expression/Operation</h5>
+		<p>When you define a custom widget, it is possible to define some custom expression or operation which will be used by the custom widget implementation. 
+			<br/>In this case, the 
+			<em>Identifier</em> is mandatory. It would be used in the Java code to find the expression/operation contributed with the VSM.
+		</p>
+		<h5 id="basic_custom_widgets_styles">Custom Styles</h5>
+		<p>See the 
+			<a href="#styling">styles</a> section for a general presentation of how styles are defined, including 
+			<a href="#conditional_styles">conditional styles</a> and 
+			<a href="#widgets_styles">widgets styles</a> section to find details on what is specific to widgets. This section only presents the aspects which are specific to texts.
+		</p>
+		<h3 id="advanced_custom_widgets">Advanced Custom Widgets</h3>
+		<p>Basic custom widgets need to be configured using very generic 
+			<em>Custom Expression/Operation</em>, which makes them different and harder to use than the standard ones. Any configuration property which would be directly accessible in the VSM editor&#8217;s property sheet on a standard widget will need a specific 
+			<em>Custom Expression</em> with the exact expected identifier.
+		</p>
+		<p>It is possible to improve custom widgets to be better integrated with the VSM editor, to the point that their configuration looks and feels like for any of the standard ones. For the specifier point of view, the configuration of these widgets follows the same principles as for the default ones.</p>
+		<p>See 
+			<a href="../../developer/extensions-properties_provide_custom_widget_advanced.html">the reference documentation</a> for how to actually implement your own advanced custom widgets.
+		</p>
+		<h2 id="dynamic_mappings">Dynamic Mappings</h2>
+		<p>Dynamic mappings are used for advanced scenarios where the set of widgets to display can not be known statically, but instead must be computed at runtime. A dynamic mapping contains conditional widgets definition, each of which may be instantiated zero or multiple times at runtime.</p>
+		<p>A 
+			<em>Dynamic Mapping For</em> can appear directly inside a group description, or inside a 
+			<a href="#containers_and_layout">container</a>, in which case you can specify a specific 
+			<a href="#containers_and_layout">layout</a>. You must specify an 
+			<em>Iterable Expression</em> which computes a list of elements to iterate over. The 
+			<em>Iterator</em> property must also be defined and corresponds to the name of the iteration variable that will be accessible inside the 
+			<em>For</em>. Inside the 
+			<em>Dynamic Mapping For</em> you can create any number of 
+			<em>Dynamic Mapping If</em>, which defines a 
+			<em>Predicate Expression</em> and can contain 
+			<strong>one widget</strong>.
+		</p>
+		<p>At runtime, for a given input element selected by the user, Sirius will evaluate the 
+			<em>iterable expression</em>, and then for each of the elements returned will instanciate the widgets defined inside 
+			<em>Dynamic Mapping If</em> whose predicate holds true.
+		</p>
+		<p>The dynamic mapping mechanism is the one used by Sirius to provide by default properties view even if you do not specify any 
+			<em>Properties View Description</em> in your VSM.
+			<br/>If we take one of the default rules implemented by Sirius we have:
+		</p>
+		<ul>
+			<li>a 
+				<em>Dynamic Mapping For</em> defining as 
+				<em>Iterable Expression</em> : 
+				<code>aql:self.eClass().eAllStructuralFeatures</code> which means get all the structural features available for the current eClass.
+			</li>
+			<li>an 
+				<em>Iterator</em> set to 
+				<code>eStructuralFeature</code>.
+				<ul>
+					<li>a 
+						<em>Dynamic Mapping If</em> with the 
+						<em>Predicate Expression</em> equals to 
+						<code>aql:eStructuralFeature.eType.instanceTypeName = 'java.lang.String'</code> which means that we just keep the structural features serialized as a String. Notice that in the predicate expression we use the variable 
+						<code>eStructuralFeature</code> which was defined as the 
+						<em>Iterator</em>.
+						<ul>
+							<li>in this case we will represent the structural feature with a 
+								<em>Text widget</em> for which we set:
+								<ul>
+									<li>
+										<em>Label expression</em>: 
+										<code>aql:eStructuralFeature.name.toUpperFirst() + ':'</code> which means get the name of the structural feature, capitalize the first letter and add 
+										<code>:</code> at the end.
+									</li>
+									<li>
+										<em>Value Expression</em>: 
+										<code>aql:self.eGet(eStructuralFeature.name)</code> which means get the value associated to the given structural feature.
+									</li>
+								</ul>
+							</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Thanks to this mechanism we defined that all the 
+			<code>String</code> elements in our metamodel will be represented with a text field.
+		</p>
+		<p>Some 
+			<em>Iterable Expression</em> may return a result which can change depending on the structure of the model, contrary to the example above where the 
+			<em>Iterable Expression</em> 
+			<code>aql:self.eClass().eAllStructuralFeatures</code> will only use the structure of the metamodel. If an 
+			<em>Iterable Expression</em> leverages the state of the model, it may be required to refresh the user interface when the 
+			<em>Iterable Expression</em> is executed, as a result for such situation, you can set the boolean 
+			<em>Force Refresh</em> to true on the 
+			<em>Dynamic Mapping For</em> to indicate that the presence of dynamic mapping should trigger a full refresh. 
+		</p>
+		<h2 id="containers_and_layout">Containers and Layout</h2>
+		<p>Sirius provides a default algorithm to perform an automatic layout of all the controls in a properties view. If the default algorithm does not fit your needs, you can specify some parameters for alternate layouts directly inside the VSM. To do this you must first create a 
+			<em>Container</em> which will contains all the widgets to which the layout will apply, and then create and configure the layout to be used by the container to organize its children widgets:
+		</p>
+		<p id="fill_layout">
+			<em>Fill layout</em> can organize elements inside the container either horizontally or vertically (configurable on the 
+			<em>Fill layout</em> element).
+		</p>
+		<p id="grid_layout">
+			<em>Grid layout</em> can organize elements using a fixed number of column (configurable on the 
+			<em>Grid layout</em> element), which can optionally be made to all have the same width.
+		</p>
+		<h2 id="styling">Styling</h2>
+		<p>Styles define the graphical appearance of properties view elements. Sirius supports a rich set of possible styles, including 
+			<a href="#conditional_styles">conditional styles</a> which can dynamically change depending on the current state of the underlying model elements. If no style is defined a default style is applied by Sirius.
+			<br/>It is possible to re-define the default style by creating a style under the properties view element description. 
+		</p>
+		<h3 id="widgets_styles">Widgets styles</h3>
+		<p>One of the responsibility of widgets styles is to describe how labels will be formated. The following properties are available :</p>
+		<ul>
+			<li>
+				<em>Label Font Name Expression</em>: Is used to compute the name of the font to use for the label.
+			</li>
+			<li>
+				<em>Label Font Size Expression</em> : Indicates the font size to use in points.
+			</li>
+			<li>
+				<em>Label Background Color</em>: You can specify the background color of the label using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Label Foreground Color</em>: You can specify the foreground color of the label using 
+				<a href="#colors">color</a> sub-elements.
+			</li>
+			<li>
+				<em>Label Font Format</em>: Is used to specify the font style attributes (Bold and/or Italic and/or Underline and/or Strike through).
+			</li>
+		</ul>
+		<p>
+			<img alt="Examples of the style customizations possible on labels" title="Examples of the style customizations possible on labels" border="0" src="images/label-styles.png"/>
+		</p>
+		<h3 id="colors">Colors</h3>
+		<p>Whenever you have to specify colors for a style, you can use either one of the pre-defined system colors or one which you have defined yourself in a 
+			<em>Users Color Palette</em>. See 
+			<a href="../general/Colors.html">the general section on colors</a> for more details.
+		</p>
+		<h3 id="conditional_styles">Conditional Styles</h3>
+		<p>Conditional styles make it possible to support different graphical aspects for a single properties view element. The actual style used to render an element is determined dynamically depending on the current state of the models elements.</p>
+		<p>To use conditional styling, you must add one or several conditional styles. Each conditional style is associated to a condition specified as a predicate. If there are conditional styles on a properties view element, their conditions are tested in their order of appearance in the description. The first one for which the condition is true is selected. If none of the conditional styles condition is true, the default style is used instead.</p>
+		<h2 id="validation_rules">Validation rules</h2>
+		<p>There are three kind of validation rules that can be specified. The main difference between the various kind of validation rules available is the location of the validation messages (on a page, a group or a widget). All the validation rules can contains audits used to determine if the validation rule has been broken thanks to an 
+			<code>auditExpression</code> which should return a boolean indicating if the validation of the rule is a success. The validation rules can also contain fixes in order to fix the issue found. Those validation fixes have a name and a fix expression which will be executed once the end user selects a quick fix. The fix expression does not have to return anything. All of those expressions have access to the variables 
+			<code>self</code>, the result of the semantic candidate expression of the page or group and 
+			<code>input</code> the input of the view.
+		</p>
+		<h3 id="page_semantic_validation_rule">Page semantic validation rule</h3>
+		<p>The page semantic validation rule is used to define a validation rule linked to a page.</p>
+		<h3 id="group_semantic_validation_rule">Group semantic validation rule</h3>
+		<p>The group semantic validation rule is used to define a validation rule linked to a group.</p>
+		<h3 id="group_property_validation_rule">Group property validation rule</h3>
+		<p>The group property validation rule is used to define a validation rule linked to a specific widget.</p>
+		<h2 id="extensibility_features">Extensibility Features</h2>
+		<p>Sirius has specific support for extending and overriding properties view descriptions without modifying the original one. The purpose is to be able to reuse or modify a part of a properties view. Its exits two different concepts to customize a properties view description: the 
+			<a href="#extends">extension</a> and the 
+			<a href="#overrides">overriding</a>. 
+		</p>
+		<p>Note that both mechanisms can be used to customize properties view descriptions which are defined in other projects. To allow references from you VSM to elements defined in other modelers, you must first 
+			<em>load</em> them in your VSM editor, or you will not see the elements you need as targets for extension/overriding. To load an external VSM, right-click anywhere inside the VSM editor, and select 
+			<em>Load Resource...</em>. A dialog will appear asking for the URI of the model to load (the 
+			<code>.odesign</code> file you want to refer to). Several forms of URIs are possible:
+		</p>
+		<ul>
+			<li>If you don&#8217;t have the customized plug-in in your workspace, you must currently enter the URI manually, using the syntax 
+				<code>platform:/plugin/&lt;projectName&gt;/&lt;path&gt;/&lt;to&gt;/&lt;example&gt;.odesign</code>, for example 
+				<code>platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign</code>.
+			</li>
+			<li>If the VSM you want to extend is already present in your development workspace, you can use the 
+				<em>Browse Workspace...</em> button to select it.
+			</li>
+		</ul>
+		<p>Note that in the later case (VSM selected from the workspace), if you want to test your modeler directly from your development environment, in your test session make sure to select the extended VSM 
+			<strong>from the workspace</strong>, as this is the one your own VSM refers to, and not the one which may also be avaible from your plug-ins. In the viewpoint selection dialog, the version from the workspace will have a small folder decorator in addition to the normal viewpoint icon. Once everything is deployed as plug-ins, which is the nominal case for end-users, this distinction disappears and everything should work fine.
+		</p>
+		<p>Note also that if you define in your project 
+			<em>A</em> customizations for properties views defintions defined in another project 
+			<em>B</em>, you should make sure to declare the dependency in project 
+			<em>A</em>'s 
+			<code>MANIFEST.MF</code>, otherwise it will be possible for users to install 
+			<em>A</em> without having 
+			<em>B</em> available, which will prevent 
+			<em>A</em> from working correctly.  
+		</p>
+		<h3 id="extends">Extends</h3>
+		<p>A 
+			<a href="#pages">page</a> can extend another page defined somewhere else (in another 
+			<a href="#categories">category</a> or in another properties view description). This mechanism is used to 
+			<em>specialize</em> (modify or re-use) an existing page. This feature is available for the 
+			<a href="#pages">pages</a>, the 
+			<a href="#groups">groups</a>, the 
+			<a href="#containers_and_layout">containers</a>, the 
+			<a href="#dynamic_mappings">dynamic mappings</a> and the 
+			<a href="#widgets">widgets</a>.
+		</p>
+		<p>The 
+			<code>Extend</code> tab is used to specify:
+		</p>
+		<p id="extends">
+			<strong>Extends.</strong> Is used to specify the inherited element thanks to a combo box it is possible to select an existing element. In the tree editor, the inheritance is visible as the element is named as following : 
+			<em>Page A</em> 
+			<strong>extends</strong> 
+			<em>Page B</em>. Pay attention, the current specification editor allows to select the currently defined element, this will lead to an infinite loop at runtime. 
+			<br/>By default, the values of the 
+			<code>General</code> tab fields are set with the values coming from the extended element if these fields are not set in the extending element. If one of these attributes is edited in the extending element, then it 
+			<strong>overrides</strong> the inherited value. The same behavior is applied for mono valued containment elements. For example, if a 
+			<em>Group A</em> defines a 
+			<em>Style A</em> and extends a 
+			<em>Group B</em> with a 
+			<em>Style B</em>, the style used to render the 
+			<em>Group A</em> is the one defined under the 
+			<em>Group A</em>, i.e 
+			<em>Style A</em> and not the one of the 
+			<em>Group B</em>.
+			<br/>If the specifier defines in the extending page 
+			<code>General</code> tab:
+		</p>
+		<ul>
+			<li>
+				<code>Label Expression</code>, 
+				<code>Domain Class</code>, 
+				<code>Semantic Candidate Expression</code> or 
+				<code>Precondition Expression</code>, these values will 
+				<strong>override</strong> the values defined in the extended description. It is worth noting that the expressions are evaluated in the context of the currently extending element, exactly as if you have defined the expressions from the 
+				<code>General</code> tab. 
+			</li>
+			<li>
+				<code>Groups</code> will 
+				<strong>be aggregated</strong> to the groups defined by the referenced 
+				<code>Page</code>. 
+			</li>
+			<li>
+				<code>Page Validations</code>  will 
+				<strong>be aggregated</strong> to the validations defined by the referenced 
+				<code>Page Description</code>.
+			</li>
+			<li>In the case of a containment, such as a 
+				<code>Text</code> contained by a 
+				<code>Group</code>, the contained elements are inherited by the extending description.
+			</li>
+		</ul>
+		<p id="filters">
+			<strong>Filter Expressions.</strong> Different filters exist depending on the element kind. These filters are used to 
+			<strong>filter</strong> which inherited elements are visible. The 
+			<em>Filter expression</em> is evaluated in the context of the semantic element and should return a boolean: true, the inherited element is visible, false it is filtered.
+			<br/>If the expression is not specified, all the inherited elements will be visible.
+			<br/>For each 
+			<em>Filter expression</em>, a variable is available which represents the element which could be filtered. It is possible to filter all the inherited elements by just returning 
+			<code>false</code> all the time. In this case, the elements defined under the current description 
+			<strong>overrides</strong> the elements defined in the extended description.
+			<br/>For example if a 
+			<em>Page A</em> extends another 
+			<em>Page B</em>, the 
+			<code>Extends</code> tab allows to define:
+		</p>
+		<ul>
+			<li>The 
+				<code>Filter Groups Expression</code> is used to 
+				<strong>filter</strong> which inherited groups are visible under the page. The 
+				<code>groupDescription</code> variable can be used to check if a group must be filtered or not. 
+			</li>
+			<li>The 
+				<code>Filter Validation Rules Expression</code> is used to 
+				<strong>filter</strong> which inherited validation rules are used under the page. The 
+				<code>validationRuleDescription</code> variable can be used to check if a rule must be filtered or not.
+			</li>
+		</ul>
+		<p>Following some examples of the extension mechanism usage are detailed:</p>
+		<ul>
+			<li>
+				<strong>Reuse widgets</strong>: In this example we want to specify the properties view of a Class and an interface both are defining a name attribute. A 
+				<em>Class Name</em> text widget is defined to represent the 
+				<em>Name</em> attribute of a 
+				<em>Class</em> in the properties view. This widget defines in the 
+				<em>General</em> tab:
+				<ul>
+					<li>The 
+						<em>Label Expression</em> equals to 
+						<code>Name:</code>,
+					</li>
+					<li>The 
+						<em>Help Expression</em> equals to 
+						<code>The name of the element</code>,
+					</li>
+					<li>The 
+						<em>Value Expression</em> equals to 
+						<code>aql:self.name</code>,
+					</li>
+					<li>The change value operation sets the 
+						<code>name</code> feature with the new entered value.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>
+			<img alt="Example of the inherited text widget definition" title="Example of the inherited text widget definition" border="0" src="images/reuse-widget-general-tab.png"/> 
+		</p>
+		<p>An interface has also a 
+			<em>Name</em> attribute which must be shown in its properties view, then to define the properties of the interface, we just create a new text widget which extends the 
+			<code>Class Name Widget</code>.
+			<br/>No other fields and no change value operation need to be set for the 
+			<code>Interface Name Widget</code>, all the values will be inherited from the 
+			<code>Class Name Widget</code>.
+		</p>
+		<p>
+			<img alt="Example of the extension definition" title="Example of the extension definition" border="0" src="images/reuse-widget-extends-tab.png"/> 
+		</p>
+		<p>
+			<img alt="Example of the reuse of a widget definition" title="Example of the reuse of a widget definition" border="0" src="images/reuse-widget-general2-tab.png"/> 
+		</p>
+		<ul>
+			<li>
+				<strong>Reuse pages</strong>: Another usage of the extension mechanism is with combination of 
+				<a href="../general/Model_Operations.html#dialogandwizard">the dialogs and the wizards</a>. The purpose is to provide the edition of the properties element from a dialog, the same properties should be available in the dialog and in the properties view. A a property view is defined for all the elements of a metamodel. Then a new tool is defined which opens a dialog when a node mapping is double-clicked from a diagram. This dialog shows the same properties than the ones represented when the element is selected from the diagram. To do this, the dialog defines a page which extends the one defined in the properties view definition.
+			</li>
+		</ul>
+		<p>
+			<img alt="Example of the reuse of a page definition in a dialog" title="Example of the reuse of a page definition in a dialog" border="0" src="images/reuse-page.png"/>
+		</p>
+		<ul>
+			<li>
+				<strong>Customize default rules</strong>: A final example of the extension mechanism is to customize the 
+				<a href="#default_rules">default rules</a> provided by Sirius. For this use case, the purpose is to override the content of the default rules in order to rename the tab label from 
+				<em>Main</em> to 
+				<em>General</em>. It is possible to extends the default rules thanks to the 
+				<em>New Properties&gt; Extend Default Properties View</em> menu available from the top-level element of the VSM model. Automatically, this creates a new page which extends the default rules. It is then possible to override the 
+				<em>Label Expression</em> of the default rules page to set the expected label 
+				<em>General</em> instead of the default one which is 
+				<em>Main</em>
+			</li>
+		</ul>
+		<p>
+			<img alt="Example of the extension of default rules" title="Example of the extension of default rules" border="0" src="images/customize-default-rules-extends.png"/>
+		</p>
+		<p>
+			<img alt="Example of the customization of default rules" title="Example of the customization of default rules" border="0" src="images/customize-default-rules-general.png"/> 
+		</p>
+		<h3 id="overrides">Overrides</h3>
+		<p>The main difference between the 
+			<a href="#extends">extend</a> mechanism and the 
+			<a href="#overrides">overrides</a> mechanism is that the extend mechanism allows to reuse some parts of a properties view specification on another hand the 
+			<a href="#overrides">override</a> mechanism allows to replace some parts of a properties view specification.
+			<br/>This means that when you define an override description it will completely replace the referenced description, this must be used when it is not possible for the specifier to modify the original description.
+		</p>
+		<p>It is possible to create an override element under a 
+			<a href="#categories">category</a> from the 
+			<em>New Override</em> menu.
+		</p>
+		<p>A page override can extend another page defined somewhere else (in another 
+			<a href="#categories">category</a> or in another properties view description). This mechanism is used to 
+			<em>replace</em> an existing page. It is possible to define :
+		</p>
+		<ul>
+			<li>page override: a 
+				<em>Page Override</em> is a page and so defines the same features as a 
+				<a href="#pages">page</a>, 
+			</li>
+			<li>group override: a 
+				<em>Group Override</em> is a group and so defines the same features as a 
+				<a href="#groups">group</a>, 
+			</li>
+			<li>container override: a 
+				<em>Container Override</em> is a container and so defines the same features as a 
+				<a href="#containers_and_layout">container</a>, 
+			</li>
+			<li>dynamic mapping override: a 
+				<em>Dynamic Mapping Override</em> is a dynamic mapping and so defines the same features as a 
+				<a href="#dynamic_mappings">dynamic mapping</a>,
+			</li>
+			<li>widget override: a 
+				<em>Widget Override</em> is a widget and so defines the same features as a 
+				<a href="#widgets">widget</a>.
+			</li>
+		</ul>
+		<p>The 
+			<code>Override</code> tab is used to specify:
+		</p>
+		<p id="override">
+			<strong>Override.</strong> Is used to specify the overridden element thanks to a combo box it is possible to select an existing element. In the tree editor, the inheritance is visible as the element is named as following : 
+			<em>Page A</em> 
+			<strong>extends</strong> 
+			<em>Page B</em>. Pay attention, the current specification editor allows to select the currently defined element, this will lead to an infinite loop at runtime. 
+			<br/>By default, the values of the 
+			<code>General</code> tab fields are set with the values coming from the overridden element if these fields are not set in the extending element. If one of these attributes is edited in the extending element, then it 
+			<strong>overrides</strong> the inherited value. The same behavior is applied for mono valued containment elements. For example, if a 
+			<em>Group A</em> defines a 
+			<em>Style A</em> and extends a 
+			<em>Group B</em> with a 
+			<em>Style B</em>, the style used to render the 
+			<em>Group A</em> is the one defined under the 
+			<em>Group A</em>, i.e 
+			<em>Style A</em> and not the one of the 
+			<em>Group B</em>.
+			<br/>If the specifier defines in the extending page 
+			<code>General</code> tab:
+		</p>
+		<ul>
+			<li>
+				<code>Label Expression</code>, 
+				<code>Domain Class</code>, 
+				<code>Semantic Candidate Expression</code> or 
+				<code>Precondition Expression</code>, these values will 
+				<strong>override</strong> the values defined in the extended description. It is worth noting that the expressions are evaluated in the context of the currently extending element, exactly as if you have defined the expressions from the 
+				<code>General</code> tab. 
+			</li>
+			<li>
+				<code>Groups</code> will 
+				<strong>be aggregated</strong> to the groups defined by the referenced 
+				<code>Page</code>. 
+			</li>
+			<li>
+				<code>Page Validations</code>  will 
+				<strong>be aggregated</strong> to the validations defined by the referenced 
+				<code>Page Description</code>.
+			</li>
+			<li>In the case of a containment, such as a 
+				<code>Text</code> contained by a 
+				<code>Group</code>, the contained elements are inherited by the extending description.
+			</li>
+		</ul>
+		<p id="filters">
+			<strong>Filter Expressions.</strong> Different filters exist depending on the element kind. These filters are used to 
+			<strong>filter</strong> which inherited elements are visible. The 
+			<em>Filter expression</em> is evaluated in the context of the semantic element and should return a boolean: true, the inherited element is visible, false it is filtered.
+			<br/>If the expression is not specified, all the inherited elements will be visible.
+			<br/>For each 
+			<em>Filter expression</em>, a variable is available which represents the element which could be filtered. It is possible to filter all the inherited elements by just returning 
+			<code>false</code> all the time. In this case, the elements defined under the current description 
+			<strong>overrides</strong> the elements defined in the extended description.
+			<br/>For example if a 
+			<em>Page A</em> extends another 
+			<em>Page B</em>, the 
+			<code>Extends</code> tab allows to define:
+		</p>
+		<ul>
+			<li>The 
+				<code>Filter Groups Expression</code> is used to 
+				<strong>filter</strong> which inherited groups are visible under the page. The 
+				<code>groupDescription</code> variable can be used to check if a group must be filtered or not. 
+			</li>
+			<li>The 
+				<code>Filter Validation Rules Expression</code> is used to 
+				<strong>filter</strong> which inherited validation rules are used under the page. The 
+				<code>validationRuleDescription</code> variable can be used to check if a rule must be filtered or not.
+			</li>
+		</ul>
+		<p>If an element is overridden by many override definitions, the first encountered in the specification is applied.</p>
+		<h2 id="extension_points">Extension Points</h2>
+		<h3 id="advanced_custom_widgets_extension_points">Extension Points for Advanced Custom Widgets</h3>
+		<p>Integrating and advanced custom widget implementation requires extending several extension points:</p>
+		<ul>
+			<li>
+				<code>org.eclipse.emf.edit.childCreationExtenders</code>: When generating the metamodel for the custom configuration DSL of your widget, make sure EMF&#8217;s 
+				<code>childCreationExtenders</code> mechanism is properly configured so that the Sirus VSM editor will see your custom widget type and allow them to be created in the 
+				<em>New</em> context menu.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.descriptionConverter</code>: This extension point allows you to particpate in the conversion of the Sirius-side VSM model into the EEF DSL. With this mechanism, you can translate for the EEF runtime new elements that you have contributed in the Sirius Properties DSL.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.descriptionLinkResolver</code>: This extension point may be needed in complement to the 
+				<code>descriptionConverter</code> if some post-transformation step is needed on your transformed model to perform global link resolution.
+			</li>
+			<li>
+				<code>org.eclipse.sirius.ui.properties.descriptionPreprocessor</code>: This extension point allows you to participate in the preprocessing of the Sirius-side VSM model with 
+				<a href="#extensibility_features">extensibility featires</a> into a 
+				<em>flatten</em> Sirius-side VSM model. 
+			</li>
+		</ul>
+		<p>Please refer to the documentation for each of these for more details. And 
+			<a href="../../developer/extensions-properties_provide_custom_widget_advanced.html">the reference documentation</a> for the full details on how to actually implement your own advanced custom widgets.
+		</p>
+		<h3 id="tab_filtering">Tab Filtering</h3>
+		<p>The EEF runtime used internally by Sirius to render the properties views has programmatic support for filtering property tabs that you may want to hide in your context. For example you may want to filter out some legacy tabs defined statically if you provide alternative versions defined dynamically in Sirius.</p>
+		<p>This feature is not currently exposed via the Sirius VSMs, but you can still use it by implementing the 
+			<code>org.eclipse.eef.properties.ui.api.IEEFTabDescriptorFilter</code> interface, and registering your implementation in the 
+			<code>org.eclipse.eef.properties.ui.eefTabDescriptorFilter</code> extension point defined in EEF.
+		</p>
+		<p>The interface defines a single method 
+			<code>boolean filter(IEEFTabDescriptor tabDescriptor)</code> which will be called for each candidate tab to display. If at least one of the 
+			<code>IEEFTabDescriptorFilter</code> registered indicates that the tab should be filtered, it will not be displayed.
+		</p>
+		<p>Please refer to the EEF extension point documentation for more details.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/properties/images/basic-properties-example-diagram.png b/doc/6.0.x/specifier/properties/images/basic-properties-example-diagram.png
new file mode 100644
index 0000000..142bdbd
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/basic-properties-example-diagram.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/basic-properties-example-vsm.png b/doc/6.0.x/specifier/properties/images/basic-properties-example-vsm.png
new file mode 100644
index 0000000..9aaa50c
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/basic-properties-example-vsm.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/customize-default-rules-extends.png b/doc/6.0.x/specifier/properties/images/customize-default-rules-extends.png
new file mode 100644
index 0000000..8a71c03
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/customize-default-rules-extends.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/customize-default-rules-general.png b/doc/6.0.x/specifier/properties/images/customize-default-rules-general.png
new file mode 100644
index 0000000..1b58cca
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/customize-default-rules-general.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-no-title.png b/doc/6.0.x/specifier/properties/images/group-style-no-title.png
new file mode 100644
index 0000000..63bb065
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-no-title.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-short-titlebar.png b/doc/6.0.x/specifier/properties/images/group-style-short-titlebar.png
new file mode 100644
index 0000000..8641f42
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-short-titlebar.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-titlebar.png b/doc/6.0.x/specifier/properties/images/group-style-titlebar.png
new file mode 100644
index 0000000..d6389e2
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-titlebar.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-toggle-none.png b/doc/6.0.x/specifier/properties/images/group-style-toggle-none.png
new file mode 100644
index 0000000..2416227
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-toggle-none.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-toggle-treenode.png b/doc/6.0.x/specifier/properties/images/group-style-toggle-treenode.png
new file mode 100644
index 0000000..4752eb9
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-toggle-treenode.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/group-style-toggle-twistie.png b/doc/6.0.x/specifier/properties/images/group-style-toggle-twistie.png
new file mode 100644
index 0000000..d6389e2
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/group-style-toggle-twistie.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/groups.png b/doc/6.0.x/specifier/properties/images/groups.png
new file mode 100644
index 0000000..e68f438
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/groups.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/label-styles.png b/doc/6.0.x/specifier/properties/images/label-styles.png
new file mode 100644
index 0000000..b1dcf16
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/label-styles.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/new-properties.png b/doc/6.0.x/specifier/properties/images/new-properties.png
new file mode 100644
index 0000000..8fae193
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/new-properties.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/pages.png b/doc/6.0.x/specifier/properties/images/pages.png
new file mode 100644
index 0000000..128f0a7
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/pages.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reference-multiple-value.png b/doc/6.0.x/specifier/properties/images/reference-multiple-value.png
new file mode 100644
index 0000000..5098953
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reference-multiple-value.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reference-single-value.png b/doc/6.0.x/specifier/properties/images/reference-single-value.png
new file mode 100644
index 0000000..7e99827
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reference-single-value.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reuse-page.png b/doc/6.0.x/specifier/properties/images/reuse-page.png
new file mode 100644
index 0000000..d769a21
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reuse-page.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reuse-widget-extends-tab.png b/doc/6.0.x/specifier/properties/images/reuse-widget-extends-tab.png
new file mode 100644
index 0000000..e4bbb22
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reuse-widget-extends-tab.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reuse-widget-general-tab.png b/doc/6.0.x/specifier/properties/images/reuse-widget-general-tab.png
new file mode 100644
index 0000000..059ab62
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reuse-widget-general-tab.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/reuse-widget-general2-tab.png b/doc/6.0.x/specifier/properties/images/reuse-widget-general2-tab.png
new file mode 100644
index 0000000..33271f6
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/reuse-widget-general2-tab.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-button.png b/doc/6.0.x/specifier/properties/images/widget-button.png
new file mode 100644
index 0000000..0c25e12
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-button.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-checkbox.png b/doc/6.0.x/specifier/properties/images/widget-checkbox.png
new file mode 100644
index 0000000..b1b1086
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-checkbox.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-from-domain-class.png b/doc/6.0.x/specifier/properties/images/widget-from-domain-class.png
new file mode 100644
index 0000000..1ea0842
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-from-domain-class.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-hyperlink.png b/doc/6.0.x/specifier/properties/images/widget-hyperlink.png
new file mode 100644
index 0000000..40f997a
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-hyperlink.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-label-styling.png b/doc/6.0.x/specifier/properties/images/widget-label-styling.png
new file mode 100644
index 0000000..7b9d550
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-label-styling.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-label.png b/doc/6.0.x/specifier/properties/images/widget-label.png
new file mode 100644
index 0000000..9049b31
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-label.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-radio.png b/doc/6.0.x/specifier/properties/images/widget-radio.png
new file mode 100644
index 0000000..8061219
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-radio.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-references.png b/doc/6.0.x/specifier/properties/images/widget-references.png
new file mode 100644
index 0000000..48298d7
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-references.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-select.png b/doc/6.0.x/specifier/properties/images/widget-select.png
new file mode 100644
index 0000000..6e3b77a
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-select.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-text-styling.png b/doc/6.0.x/specifier/properties/images/widget-text-styling.png
new file mode 100644
index 0000000..b3541b3
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-text-styling.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-text.png b/doc/6.0.x/specifier/properties/images/widget-text.png
new file mode 100644
index 0000000..76caa83
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-text.png
Binary files differ
diff --git a/doc/6.0.x/specifier/properties/images/widget-textarea.png b/doc/6.0.x/specifier/properties/images/widget-textarea.png
new file mode 100644
index 0000000..ee43403
--- /dev/null
+++ b/doc/6.0.x/specifier/properties/images/widget-textarea.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/Sequence Diagrams.html b/doc/6.0.x/specifier/sequences/Sequence Diagrams.html
new file mode 100644
index 0000000..03e0443
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/Sequence Diagrams.html
@@ -0,0 +1,654 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Sequence Diagrams</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingSequenceDiagramEditors">Specifying Sequence Diagram Editors</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingSequenceDiagramEditors">Specifying Sequence Diagram Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#semantics">Sequence Diagrams Semantics</a>
+					</li>
+					<li>
+						<a href="#restrictions">Restrictions and Limitations</a>
+					</li>
+					<li>
+						<a href="#prerequisites">Prerequisites</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#Interaction">Interaction</a>
+							</li>
+							<li>
+								<a href="#LifelineandInstancerole">Lifeline and Instance role</a>
+							</li>
+							<li>
+								<a href="#Execution">Execution</a>
+							</li>
+							<li>
+								<a href="#Message">Message</a>
+							</li>
+							<li>
+								<a href="#SingleEventEndandCompoundEventEnd">SingleEventEnd and CompoundEventEnd</a>
+							</li>
+							<li>
+								<a href="#Ordering">Ordering</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sd_description">Sequence Diagram Description</a>
+					</li>
+					<li>
+						<a href="#DefaultLayer">Default Layer</a>
+					</li>
+					<li>
+						<a href="#mappings">Mappings</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#InstanceRole">Instance Role</a>
+							</li>
+							<li>
+								<a href="#Executions">Executions</a>
+							</li>
+							<li>
+								<a href="#BasicMessages">Basic Messages</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#tools">Tools</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#JavaServices">Java Services</a>
+							</li>
+							<li>
+								<a href="#CreationTools">Creation Tools</a>
+							</li>
+							<li>
+								<a href="#eventReorderTool">Event Reorder Tool</a>
+							</li>
+							<li>
+								<a href="#instanceRoleReorderTool">Instance Role Reorder Tool</a>
+							</li>
+							<li>
+								<a href="#OtherTools">Other Tools</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>This document describes how to specify sequence diagram modelers with Sirius. It has been written for software architects who want to specify sequence diagrams on their own meta-models.</p>
+		<p>This tutorial is based on an example, i.e. the specification of a UML sequence diagram editor. The resulting diagram is  available in the 
+			<em>Obeo UML Behavioral</em> viewpoint (available for free at <a href="https://github.com/ObeoNetwork/UML-Modeling" target="_blank">https://github.com/ObeoNetwork/UML-Modeling</a> ) which is based on the Eclipse Foundation&#8217;s <a href="http://wiki.eclipse.org/MDT-UML2" target="_blank">UML2 meta-model</a>.
+		</p>
+		<h2 id="semantics">Sequence Diagrams Semantics</h2>
+		<p>As their name says, sequence diagrams are meant to represent ordered sequences of elements. Typically, they represent 
+			<em>events</em> sent and received between some entities over 
+			<em>time</em>. The canonical case is a UML Sequence Diagram (where the notation comes from), which represents the messages exchanged between objects in a software system.
+		</p>
+		<p>The most important consequence of this is that contrary to what happens on a classical diagram, 
+			<em>the relative graphical positions of elements on a sequence diagram have strong meaning</em>. This is true for the vertical placement and for the left-to-right order of lifelines. However placing a message above or below another one has a strong implication on the ordering of the events they represent, and thus on the structure of the underlying semantic model which is represented. Sirius works hard to ensure that what you see on you sequence diagram (in terms of vertical ordering of elements and horizontal ordering of lifelines) always correspond to the semantic ordering of the represented events.
+		</p>
+		<p>This works both ways:</p>
+		<ul>
+			<li>Assuming a diagram is synchronized (i.e. you are in 
+				<em>Automatic Refresh</em> mode or your manually refreshed it since the last semantic changes), Sirius will always organize the elements on the diagram in a way which is compatible with the semantic ordering of the events: if you see an execution 
+				<em>E1</em> placed above another execution 
+				<em>E2</em>, you can be sure the events corresponding to 
+				<em>E1</em> happen before the events of 
+				<em>E2</em> in the semantic model.
+			</li>
+			<li>Symmetrically, and perhaps more importantly, 
+				<em>moving</em> elements on a sequence diagram may trigger changes in the underlying semantic model to reflect the new event order implied by the positions you changed. This is very different from what happens in other diagrams, where most graphical repositioning of elements are only cosmetic. Keeping the example above, moving execution 
+				<em>E2</em> graphically above 
+				<em>E1</em> will trigger changes in the semantic model to move the corresponding event of 
+				<em>E2</em> before the events of 
+				<em>E1</em>.
+			</li>
+		</ul>
+		<p>Most of the specific features and restrictions of sequence diagrams compared to other diagrams derive from this strong guarantee that at all time, the graphical (vertical) order of the elements you see on the diagram match exactly the semantic order of the events which exist in the underlying model and the horizontal order of the instance roles you see on the diagram match exactly the semantic order of the corresponding elements which exist in the underlying model.</p>
+		<p>From the specifier point of view, this means that sequence diagrams can only be defined on meta-models in which you can provide a total ordering of the events represented, and that you can reorder these elements in a predictable way (see the description of the 
+			<a href="#eventReorderTool">Event Reorder Tool</a> and 
+			<a href="#instanceRoleReorderTool">Instance Role Reorder Tool</a> for details).
+		</p>
+		<h2 id="restrictions">Restrictions and Limitations</h2>
+		<p>In order to guarantee the strong guarantee described above, some of the features present on normal diagrams are not supported, or even completely disabled on sequence diagrams. Basically, anything which would make it possible on a normal diagram to have meaningful semantic elements not visible on the diagram is forbidden. This would make it impossible for Sirius to keep consistent tracking of the &#8220;position&#8221; of these invisible elements relative to the ones which are visible.</p>
+		<ul>
+			<li>
+				<em>Layers</em>: sequence diagrams may define optional layers, as long as they do not make graphical elements appear or disappear on the diagram when they are selected or de-selected. Layers which contribute new tools in the palette for example are fine.
+			</li>
+			<li>
+				<em>Filters</em>: filters which may hide elements from a sequence diagram when enabled are not supported.
+			</li>
+			<li>
+				<em>Hide/Reveal</em>: hiding elements explicitly is not supported. The actions are disabled in the UI.
+			</li>
+			<li>
+				<em>Pin/Unpin</em>: pinning graphical elements has no effect on the automatic layout of sequence diagrams. Even if an element has been marked as pinned, Sirius must be able to move it graphically as needed in order to maintain the graphical order of element in sync with the semantic order. The actions are disabled in the UI.
+			</li>
+		</ul>
+		<h2 id="prerequisites">Prerequisites</h2>
+		<p>As with any Sirius diagram, the semantic model used for a sequence diagram defines some elements and relationships that must be mapped to graphical elements in order to be represented on the sequence diagrams. For the UML2 modeler, the semantic model is defined in 
+			<code>.uml</code> files and the mapping in the 
+			<code>uml2.odesign</code> Viewpoint Specification file.
+		</p>
+		<p>The job of the architect is to map the UML2 interactions, life-lines, executions and messages. Even if the support for sequence diagrams in Sirius is not dedicated to UML2, these four kinds of elements (or similar ones) must be provided by the sequence meta-model in order to be represented as sequence diagrams in Sirius.</p>
+		<h3 id="Interaction">Interaction</h3>
+		<p>The interaction is the semantic container for all the sequence diagram elements.</p> 
+		<img border="0" src="images/interaction.png"/>
+		<p>In UML2, the interaction is represented by an element of type 
+			<code>Interaction</code>.
+		</p>
+		<h3 id="LifelineandInstancerole">Lifeline and Instance role</h3>
+		<p>The instance role and the lifeline represents one participant in the interaction.</p> 
+		<img border="0" src="images/lifeline.png"/>
+		<p>In UML2, the instance role and the lifeline are represented by one element of type 
+			<code>Lifeline</code>.
+		</p>
+		<h3 id="Execution">Execution</h3>
+		<p>The execution typically represents a period in the participant&#8217;s lifetime when it is active. An execution is composed of three elements:</p>
+		<ul>
+			<li>
+				<em>Execution start</em>: the start occurrence of the execution;
+			</li>
+			<li>
+				<em>Execution</em>: the execution by itself (the duration of the execution);
+			</li>
+			<li>
+				<em>Execution finish</em>: the finish occurrence of the execution.
+			</li>
+		</ul> 
+		<img border="0" src="images/execution.png"/>
+		<p>In UML2, the execution is represented by an element of type 
+			<code>Execution Specification</code>, the execution start and finish are defined by an abstract type 
+			<code>Occurrence Specification</code>.
+		</p>
+		<h3 id="Message">Message</h3>
+		<p>The message represents a kind of communication between lifelines of an interaction. A message is composed by three elements:</p>
+		<ul>
+			<li>
+				<em>Message send</em> (or 
+				<em>source</em>): the send occurrence of the message;
+			</li>
+			<li>
+				<em>Message</em>: the message by itself (the kind of communication, e.g. synchronous/asynchronous call);
+			</li>
+			<li>
+				<em>Message receive</em> (or 
+				<em>target</em>): the receive occurrence of the message
+			</li>
+		</ul> 
+		<img border="0" src="images/message.png"/>
+		<p>In UML2, the message is represented by an element of type 
+			<code>Message Specification</code>, the message send and receive are defined by one abstract type 
+			<code>Occurrence Specification</code>.
+		</p>
+		<h3 id="SingleEventEndandCompoundEventEnd">SingleEventEnd and CompoundEventEnd</h3>
+		<p>Sirius internally manages a list of start/finish execution occurrences and sender/receiver message occurrences defined for each interaction. All these occurrences are event ends contained in the 
+			<code>EventEnds</code> list.
+		</p>
+		<p>An 
+			<code>eventEnd</code> contains two properties:
+		</p>
+		<ul>
+			<li>
+				<code>semanticEvent</code>: points to the semantic event which could be a message or an execution,
+			</li>
+			<li>
+				<code>semanticEnd</code>: points to one connection end of the semantic event, i.e. the semantic element which could be a message sender, a message receiver, an execution start or an execution finish.
+			</li>
+		</ul>
+		<p>There are two kinds of 
+			<code>EventEnds</code>:
+		</p>
+		<ul>
+			<li>
+				<code>SingleEventEnd</code>: Is an element which is used only as start/send or finish/receive by one execution/message. In UML2, an execution could be started or finished by an 
+				<code>Execution Occurrence Specification</code> and a message could be sent or received by a 
+				<code>Message occurrence Specification</code>.
+			</li>
+			<li>
+				<code>CompoundEventEnd</code>: Is an element that represents the combination of a message and an execution. This kind of 
+				<code>EventEnd</code> exists in order to associate graphically a message to an execution. As the 
+				<code>CompoundEventEnd</code> is an 
+				<code>EventEnd</code>, it contains the two properties:
+				<ul>
+					<li>
+						<code>semanticEvent</code> which points to a message or an execution.
+					</li>
+					<li>
+						<code>semanticEnd</code> which points to a 
+						<code>MixEnd</code> element.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Depending on how the meta-model is defined, the 
+			<code>MixEnd</code> could be represented by:
+		</p>
+		<ul>
+			<li>one 
+				<code>SingleEventEnd</code>: This is the case in UML2, the 
+				<code>Execution Specification</code> could be defined with a start/finish element of type 
+				<code>Execution Occurrence Specification</code> or 
+				<code>Message Occurrence Specification</code>
+			</li>
+			<li>two 
+				<code>SingleEventEnds</code>: one 
+				<code>SingleEventElement</code> which points to the message and one 
+				<code>SingleEventElement</code> which points to the execution.
+			</li>
+		</ul> 
+		<img border="0" src="images/event_ends.png"/>
+		<p>The 
+			<code>Operation_0</code> message ends on the left border of the 
+			<code>Operation_0()</code> execution because 
+			<code>Operation_0_receiver</code> is associated to the start of the execution. Otherwise, the message would be associated to the lifeline. For example, the 
+			<code>Message_3</code> is a simple message not linked to an execution. Consequently, the 
+			<code>Message_3_receiver</code> is a 
+			<code>SingleEventEnd</code> and is attached to the lifeline.
+		</p>
+		<p>Hence, for an asynchronous call, we get:</p>
+		<ul>
+			<li>one 
+				<code>SingleEventEnd</code> for the message sending: 
+				<code>Operation_0_sender</code>
+				<ul>
+					<li>
+						<code>semanticEvent</code> = 
+						<code>Operation_0</code> message
+					</li>
+					<li>
+						<code>semanticEnd</code> = 
+						<code>Operation_0_sender</code> message occurrence specification
+					</li>
+				</ul>
+			</li>
+			<li>one 
+				<code>CompoundEventEnd</code> for the 
+				<code>Operation_0</code> message receiving and 
+				<code>Operation_0</code> execution 
+				<code>startingEnd</code> composed by one 
+				<code>SingleEventEnd</code> = 
+				<code>Operation_receiver</code>
+				<ul>
+					<li>
+						<code>semanticEvent</code> = 
+						<code>Operation_0</code> message
+					</li>
+					<li>
+						<code>semanticEnd</code> = 
+						<code>Operation_0_receiver</code> message occurrence specification
+					</li>
+				</ul>
+			</li>
+			<li>one 
+				<code>SingleEventEnd</code> for the execution finish: 
+				<code>Operation_0_finish</code>
+				<ul>
+					<li>
+						<code>semanticEvent</code> = 
+						<code>Operation_0</code> execution
+					</li>
+					<li>
+						<code>semanticEnd</code> = 
+						<code>Operation_0_finish</code> execution occurrence specification
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<h3 id="Ordering">Ordering</h3>
+		<p>In a Sirius sequence diagram, the elements are totally ordered.</p>
+		<p>Internally, Sirius maintains three ordered sets:</p>
+		<ul>
+			<li>two for the vertical ordering : a graphical set which orders the graphical elements, a semantic set which orders the semantic elements.</li>
+			<li>one for the horizontal ordering, a semantic set which orders the semantic instance roles (the graphical ordering of instance roles is available without heavy computation).</li>
+		</ul> 
+		<img border="0" src="images/orderings.png"/>
+		<p>To provide a functional diagram, each semantic/graphical orderings couple must always be coherent. Creation tools and reordering tool must manage the semantic orderings. More explanations are given in the next section.</p>
+		<h2 id="sd_description">Sequence Diagram Description</h2>
+		<p>First, in an odesign file, from an existing viewpoint, you have to create a new kind of representation : Sequence Diagram Description.</p> 
+		<img border="0" src="images/new_description.png"/> 
+		<img border="0" src="images/description_properties.png"/>
+		<p>As for other representations, you define mandatory properties:</p>
+		<ul>
+			<li>
+				<em>Id</em>: unique identifier for the diagram type in Sirius
+			</li>
+			<li>
+				<em>Label</em>: used to display information to end-user
+			</li>
+			<li>
+				<em>Domain class</em>: type of the semantic element representing the sequence diagram container
+			</li>
+		</ul>
+		<p>For a complete description of each property, have a look at the 
+			<em>Help &gt; Sirius  Specifier Guide &gt; Reference Guide &gt; Representation &gt; Sequence Diagram</em>.
+		</p>
+		<p>The most important properties to understand are the 
+			<em>Ends Ordering</em> and 
+			<em>Instance Roles Ordering</em>.
+		</p> 
+		<img border="0" src="images/ends_ordering.png"/>
+		<p>In a sequence diagram, graphical elements are ordered chronologically and this order is essential. Maintaining and updating the elements global order will be the main purpose of all tools that you will create later. Your tools must keep all the time the order of semantic elements and according to this, Sirius manages the graphical representation order.</p>
+		<p>The ordered elements in a sequence diagram are defined with the 
+			<em>Ends Ordering</em> and 
+			<em>Instance Roles Ordering</em> fields. These properties will be used by Sirius to automatically order the graphical elements when you open a sequence diagram for an interaction. 
+		</p>
+		<p>The 
+			<em>Ends Ordering</em> handles the vertical order of events. It specifies with an expression how semantic elements must be ordered. These elements should be execution1 start/finish and message send/receive occurrences. 
+		</p>
+		<p>A specific variable exists for this expression: 
+			<code>eventEnds</code> . The variable 
+			<code>eventEnds</code> contains the list of all 
+			<code>EventEnds</code> existing for the current interaction.
+		</p>
+		<p>Pay attention: the evaluation of the 
+			<em>Ends Ordering</em> expression should returned only elements contained in the 
+			<code>eventEnds</code> list.
+		</p>
+		<p>The 
+			<em>Instance Roles Ordering</em> handles the horizontal order of instance roles / lifelines. It specifies with an expression how semantic elements must be ordered. These elements should be the semantic elements which will be represented as instance role. 
+		</p>
+		<p>If we have a look at the UML2 meta-model, the fragment reference defined in an 
+			<code>Interaction</code> contains all the execution occurrences and the message occurrences. Execution occurrences and messages occurrences are 
+			<code>EventEnd</code> elements. But the fragment reference contains also some other types of elements as execution specifications. In order that the 
+			<em>Ends Ordering</em> property only references 
+			<code>EventEnd</code> elements we need to do an intersection of fragments elements and eventEnds (using either Acceleo or delegating to a Java service using 
+			<code>service:</code>).. 
+		</p>
+		<p>Furthermore, the lifeline reference defined in an 
+			<code>Interaction</code> contains all the 
+			<code>Lifeline</code> representing both lifeline and instance role.
+		</p> 
+		<img border="0" src="images/ends_ordering_visual.png"/>
+		<p>For the UML Modeler, the 
+			<em>Ends Ordering</em> expression will return for the diagram below, the ordered list: 
+			<code>[Operation_0_sender, Operation_0_receiver, Operation_0_finish, test_sender, test_receiver, test_reply_sender, test_reply_receiver, Message_3_sender, Message_3 _receiver]</code>. 
+			<br/>And the 
+			<em>Instance Roles Ordering</em> expression will return for the diagram below, the ordered list: 
+			<code>[producers, consumers]</code>.
+		</p>
+		<h2 id="DefaultLayer">Default Layer</h2>
+		<p>When the sequence diagram description is complete, you can add a Default layer.</p> 
+		<img border="0" src="images/default_layer.png"/>
+		<p>Next step is to define the mappings and all the tools to manage the interaction elements.</p>
+		<h2 id="mappings">Mappings</h2>
+		<p>We want to represent on a sequence diagram four different elements and then associate a mapping to each element:</p>
+		<ul>
+			<li>
+				<em>Instance</em>: instance role mapping
+			</li>
+			<li>
+				<em>Lifetime</em>: execution mapping
+			</li>
+			<li>
+				<em>Execution</em>: execution mapping
+			</li>
+			<li>
+				<em>Message</em>: basic message mapping
+			</li>
+		</ul> 
+		<img border="0" src="images/mappings.png"/>
+		<h3 id="InstanceRole">Instance Role</h3>
+		<p>Firstly, create the instance role mapping. It graphically corresponds to the box at the top of the lifeline.</p> 
+		<img border="0" src="images/new_instance_role_mapping.png"/>
+		<p>Set the mandatory properties 
+			<em>Id</em>, 
+			<em>Label</em> and 
+			<em>Domain class</em>:
+		</p> 
+		<img border="0" src="images/instance_role_mapping_properties.png"/>
+		<p>The Semantic Candidates Expression is an Acceleo expression returning the semantic elements for which the mapping will be evaluated and then a graphical element will represent the semantic element on the diagram.</p>
+		<p>Don&#8217;t forget to create a new Style for the instance role mapping.</p>
+		<img border="0" src="images/instance_role_mapping_style.png"/>
+		<h3 id="Executions">Executions</h3>
+		<p>Execution mappings are used when you have an element which is composed by a start, a duration and a finish element. </p>
+		<p>We will define the execution mappings:</p> 
+		<img border="0" src="images/new_execution_mapping.png"/>
+		<p>First, create the execution mapping for the lifeline execution. This represents the dashed line of lifeline.</p> 
+		<img border="0" src="images/execution_mapping_properties1.png"/>
+		<p>And create the execution mapping for the execution. This represents the execution square on lifeline or other execution.</p> 
+		<img border="0" src="images/execution_mapping_properties2.png"/>
+		<p>Set the mandatory properties:</p>
+		<ul>
+			<li>
+				<em>Id</em>, 
+				<em>Label</em>, 
+				<em>Domain class</em>
+			</li>
+			<li>
+				<em>Semantic Candidates Expression</em>:  expression that returns the first level executions associated to the current execution. 
+			</li>
+		</ul> 
+		<img border="0" src="images/execution_mappings_visual.png"/>
+		<p>Here, a java service1 executionSemanticCandidates() is called.</p>
+		<ul>
+			<li>
+				<em>Starting End Finder Expression</em>: semantic element defining the execution start
+			</li>
+			<li>
+				<em>Finishing End Finder Expression</em>: semantic element defining the execution finish
+			</li>
+		</ul>
+		<p>The end finder expressions are used by Sirius to graphically link the execution to its start and finish elements and to find during creation and reorder operations where to reattach the dragged element.</p>
+		<p>As an execution could recursively contain other executions, don&#8217;t forget to import the mapping on itself by setting the property Reused bordered node mappings :</p> 
+		<img border="0" src="images/execution_mapping_reused.png"/>
+		<p>For both execution mappings, don&#8217;t forget to create a New Style:</p> 
+		<img border="0" src="images/execution_mapping_style.png"/>
+		<h3 id="BasicMessages">Basic Messages</h3>
+		<p>Now, we will define the basic message mapping:</p> 
+		<img border="0" src="images/new_message_mapping.png"/>
+		<p>Create the basic message mapping:</p> 
+		<img border="0" src="images/new_basic_message_mapping.png"/> 
+		<img border="0" src="images/basic_message_mapping_properties.png"/>
+		<p>Set the mandatory properties:</p>
+		<ul>
+			<li>
+				<em>Id</em>, 
+				<em>Label</em>, 
+				<em>Domain class</em>
+			</li>
+			<li>
+				<em>Semantic Candidates Expression</em>: expression to get all the messages defined in an interaction
+			</li>
+			<li>
+				<em>Semantic Elements</em>:  Associates a group of logical semantic elements to the graphical element. For example, here we associate to the graphical message the semantic element of type 
+				<code>Message</code>, the message send event of type 
+				<code>Message Occurrence Specification</code> and the message receive event of type 
+				<code>Message Occurrence Specification</code>. Sirius will use this information to:
+				<ul>
+					<li>show associated semantic elements in properties view,</li>
+					<li>listen for associated elements changes to refresh if necessary,</li>
+					<li>delete associated elements if there is no specific delete tool.</li>
+				</ul>
+			</li>
+			<li>
+				<em>Source/Target mapping</em>: a list of graphical mappings that could be source/target of the message. Several mappings could be defined as source or target mapping for a message. In UML2, Lifeline mapping and Execution mapping can be source/target of message. On the illustration below, the consumers lifeline and the 
+				<code>compute()</code> execution can be selected as source for the get message. The producers lifeline and the get execution can be selected as target for the get message.
+			</li>
+		</ul> 
+		<img border="0" src="images/basic_message_mapping_visual1.png"/>
+		<ul>
+			<li>
+				<em>Source/Target finder expression</em>: the expression which must return the source/target semantic element, i.e. the source/target context of the message. In UML2, the expression return is the lifeline or the execution for example. On the illustration below, the compute execution is the semantic source element for the message get and the get execution is the semantic target element.
+			</li>
+		</ul> 
+		<img border="0" src="images/basic_message_mapping_visual2.png"/>
+		<ul>
+			<li>
+				<em>Sending/Receiving End Finder Expression</em>: expression which must return the semantic element which represents the message sender/receiver.
+			</li>
+		</ul> 
+		<img border="0" src="images/basic_message_mapping_visual3.png"/>
+		<h4 id="LostandFoundMessages">Lost and Found Messages</h4>
+		<p>Standard node mappings, direct children of a layer of the current sequence diagram description, can be used to represent the unknown message end. Lost and found messages should be created using a generic tool.</p>
+		<h2 id="tools">Tools</h2>
+		<h3 id="JavaServices">Java Services</h3>
+		<p>To use a java service in an Acceleo expression, service must be define like this in odesign:</p> 
+		<img border="0" src="images/java_service.png"/>
+		<h3 id="CreationTools">Creation Tools</h3>
+		<p>Define a new Section to add creation tools:</p> 
+		<img border="0" src="images/new_creation_tool_section.png"/>
+		<h4 id="CreateLifeline">Create Lifeline</h4>
+		<p>Lifelines should be created using an Instance Role Creation Tool associated to the instance role mapping.</p> 
+		<img border="0" src="images/lifeline_creation_tool.png"/>
+		<p>The 
+			<code>predecessor</code> variable represents in the global instance role ordering, the element preceding the new instance role.  
+		</p>
+		<h4 id="CreateExecution">Create Execution</h4>
+		<p>An Execution can be created using 
+			<em>Execution Creation Tool</em>.
+		</p> 
+		<img border="0" src="images/new_execution_creation_tool.png"/>
+		<p>The following variables can be used from inside the tool definition:</p>
+		<ul>
+			<li>
+				<code>container</code>: the element (lifeline or execution) that will contain graphically the new execution, in the example below the container would be the get() execution.
+			</li>
+			<li>
+				<code>startingEndPredecessor</code> and 
+				<code>finishingEndPredecessor</code>: represent in the global event ends list, the element preceding the new execution start and the element preceding the new execution finish. To get the corresponding semantic end element associated to event end: 
+				<code>startingEndPredecessor.semanticEnd</code> or 
+				<code>finishingEndPredecessor.semanticEnd</code>.
+			</li>
+		</ul> 
+		<img border="0" src="images/execution_creation_tool_visual.png"/>
+		<p>In the example above, we want to create a new 
+			<code>BehaviorExecution_2</code> on the existing get execution. Thus, the 
+			<code>startingEndPredecessor</code> and 
+			<code>finishingEndPredecessor</code> will point to the 
+			<code>get_receiver</code> message occurrence. This variables represent the semantic elements (
+			<code>get_receiver</code>) associated to the graphical element preceding the 
+			<code>startingEnd</code> (
+			<code>BehaviorExecution_2_start</code>) and 
+			<code>finishingEnd</code> (
+			<code>BehaviorExecution_2_finish</code>) of the new element.
+		</p>
+		<h4 id="MessageCreationTool">Message Creation Tool</h4>
+		<p>A Message can be created using Message Creation Tool.</p> 
+		<img border="0" src="images/new_message_creation_tool.png"/>
+		<p>The following variables can be used from inside the tool definition:</p>
+		<ul>
+			<li>
+				<code>source</code>: Semantic element associated to message send;
+			</li>
+			<li>
+				<code>target</code>: Semantic element associated to message receive;
+			</li>
+			<li>
+				<code>startingEndPredecessor</code> and 
+				<code>finishingEndPredecessor</code>: represent in the global event ends list, the element preceding the new message send and the element preceding the new message receive.
+			</li>
+		</ul> 
+		<img border="0" src="images/message_creation_tool_visual.png"/>
+		<p>In this example, we want to create a new 
+			<code>Message_1</code> from the existing compute execution to the producers lifeline. Thus, the 
+			<code>startingEndPredecessor</code> and 
+			<code>finishingEndPredecessor</code> will point to the 
+			<code>get_finish</code> execution occurrence. These variables represent the semantic elements (
+			<code>get_finish</code>) associated to the graphical element preceding the 
+			<code>startingEnd</code> (
+			<code>Message_1_sender</code>) and 
+			<code>finishingEnd</code> (
+			<code>Message_1_receiver</code>) of the new element.
+		</p>
+		<p>
+			<strong>Precondition.</strong> As for many other tools, it is possible to define a precondition for message creation tools. Depending on the precondition expression, the tool allows the element creation only under certain conditions. The precondition is defined as an interpreted expression.
+		</p> 
+		<img border="0" src="images/message_creation_precondition.png"/>
+		<p>A variable is available for the Acceleo expression : $preTarget. This variable is the semantic element associated to graphical element that is currently hovered by the mouse.</p>
+		<h3 id="eventReorderTool">Event Reorder Tool</h3>
+		<p>This tool is called when the user moves or changes the size of graphical elements on the diagram.</p>
+		<p>A single unique event reorder tool can and must be specified for message and execution mappings. The purpose of the tool is to re-synchronize the graphical ordering with the semantic ordering. When the user reorders a graphical element, the global order of graphical elements changes and the tool must then reorder the semantic elements according to these changes.</p> 
+		<img border="0" src="images/new_reorder_tool.png"/>
+		<p>This tool has access to the following two variables usable in expressions:</p>
+		<ul>
+			<li>
+				<code>startingEndPredecessorAfter</code>: represents in the global event end list the element preceding the moved element start/send. It is the event which, 
+				<strong>after</strong> the move, will be directly 
+				<strong>preceding</strong> the 
+				<strong>starting end</strong> (top) of the moved element;
+			</li>
+			<li>
+				<code>finishingEndPredecessorAfter</code>: represents in the global event end list the element preceding the moved element finish/receive. It is the event which, 
+				<strong>after</strong> the move, will be directly 
+				<strong>preceding</strong> the 
+				<strong>finishing end</strong> (bottom) of the moved element.
+			</li>
+		</ul> 
+		<img border="0" src="images/reorder_tool_visual1.png"/>
+		<p>In this example, we want to move the get execution after the 
+			<code>Message_0</code>. Thus, the 
+			<code>startingEndPredecessorAfter</code> variable will point to the 
+			<code>compute_finish</code> execution occurrence. This variable represents the semantic elements (
+			<code>compute_finish</code>) associated to the graphical element preceding the 
+			<code>startingEnd</code> (
+			<code>get_start</code>) after the move of get execution. The 
+			<code>finishingEndPredecessorAfter</code> variable will point to the 
+			<code>get_start</code> execution occurrence. This variable represents the semantic elements (
+			<code>get_start</code>) associated to the graphical element preceding the 
+			<code>finishingEnd</code> (
+			<code>get_finish</code>) after the move of get execution.
+		</p>
+		<p>Now, we will have a look to a more complex reorder operation.</p> 
+		<img border="0" src="images/reorder_tool_visual2.png"/>
+		<p>In this example, we want to move the get execution after the 
+			<code>Message_1</code>. The get execution is linked to the get synchronous message, thus the get execution 
+			<code>startingEnd</code> is a 
+			<code>compoundEvent</code> representing the 
+			<code>get_receiver</code> message occurrence. When we move the execution, the associated message must be also moved. In this case, the 
+			<code>startingEndPredecessorAfter</code> variable will point to the 
+			<code>compute_finish</code> execution occurrence. This variable represents the semantic elements (
+			<code>compute_finish</code>) associated to the graphical element preceding the 
+			<code>startingEnd</code> (
+			<code>get_send</code>) after the move of get execution. The 
+			<code>finishingEndPredecessorAfter</code> variable will point to the 
+			<code>get_receiver</code> message occurrence. This variable represents the semantic elements (
+			<code>get_receiver</code>) associated to the graphical element preceding the 
+			<code>finishingEnd</code> (
+			<code>get_finish</code>) after the move of get execution.
+		</p>
+		<h3 id="instanceRoleReorderTool">Instance Role Reorder Tool</h3>
+		<p>This tool is called when the user horizontally moves an instance role on the diagram.</p>
+		<p>A single unique event reorder tool can and must be specified for instance role mappings. The purpose of the tool is to re-synchronize the graphical ordering with the semantic ordering. When the user reorders a graphical instance role, the global order of graphical instance roles changes and the tool must then reorder the semantic instance roles according to these changes.</p> 
+		<img border="0" src="images/new_instance_role_reorder_tool.png"/>
+		<p>This tool has access to the following two variables usable in expressions:</p>
+		<ul>
+			<li>
+				<code>predecessorBefore</code>: represents in the global instance role ordering the element previously preceding the moved instance role. It is the element which, 
+				<strong>before</strong> the move, was directly 
+				<strong>preceding</strong> the moved element;
+			</li>
+			<li>
+				<code>predecessorAfter</code>: represents in the global instance role ordering the element preceding the moved instance role. It is the event which, 
+				<strong>after</strong> the move, will be directly 
+				<strong>preceding</strong> the moved element;
+			</li>
+		</ul> 
+		<img border="0" src="images/instance_role_reorder_tool_visual1.png"/>
+		<p>In this example, we want to move the 
+			<code>consumers</code> instance role after the 
+			<code>producers</code> instance role. Thus, the 
+			<code>predecessorAfter</code> variable will point to the 
+			<code>producers</code> execution occurrence. This variable represents the semantic elements (
+			<code>producers</code>) associated to the graphical element preceding the 
+			<code>consumers</code> instance role after its move. The 
+			<code>predecessorBefore</code> variable will be null, because 
+			<code>consumers</code> was the first element of the ordering.
+		</p>
+		<h3 id="OtherTools">Other Tools</h3>
+		<p>Nothing specific for deletion tool, edit label tool, diagram creation and diagram navigation tool, have a look at the Sirius Specifier Guide.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/sequences/images/basic_message_mapping_properties.png b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_properties.png
new file mode 100644
index 0000000..b36b2d0
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_properties.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual1.png b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual1.png
new file mode 100644
index 0000000..c4fbd19
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual2.png b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual2.png
new file mode 100644
index 0000000..a941e5e
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual2.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual3.png b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual3.png
new file mode 100644
index 0000000..d93c4fb
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/basic_message_mapping_visual3.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/default_layer.png b/doc/6.0.x/specifier/sequences/images/default_layer.png
new file mode 100644
index 0000000..2de5da4
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/default_layer.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/description_properties.png b/doc/6.0.x/specifier/sequences/images/description_properties.png
new file mode 100644
index 0000000..8b71604
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/description_properties.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/ends_ordering.png b/doc/6.0.x/specifier/sequences/images/ends_ordering.png
new file mode 100644
index 0000000..2a87b0d
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/ends_ordering.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/ends_ordering_visual.png b/doc/6.0.x/specifier/sequences/images/ends_ordering_visual.png
new file mode 100644
index 0000000..139d05f
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/ends_ordering_visual.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/event_ends.png b/doc/6.0.x/specifier/sequences/images/event_ends.png
new file mode 100644
index 0000000..c901490
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/event_ends.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution.png b/doc/6.0.x/specifier/sequences/images/execution.png
new file mode 100644
index 0000000..6cdaeab
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_creation_tool_visual.png b/doc/6.0.x/specifier/sequences/images/execution_creation_tool_visual.png
new file mode 100644
index 0000000..87fe8cf
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_creation_tool_visual.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_mapping_properties1.png b/doc/6.0.x/specifier/sequences/images/execution_mapping_properties1.png
new file mode 100644
index 0000000..0ed7f2d
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_mapping_properties1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_mapping_properties2.png b/doc/6.0.x/specifier/sequences/images/execution_mapping_properties2.png
new file mode 100644
index 0000000..1dd889f
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_mapping_properties2.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_mapping_reused.png b/doc/6.0.x/specifier/sequences/images/execution_mapping_reused.png
new file mode 100644
index 0000000..6b0ae69
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_mapping_reused.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_mapping_style.png b/doc/6.0.x/specifier/sequences/images/execution_mapping_style.png
new file mode 100644
index 0000000..abfcea5
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_mapping_style.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/execution_mappings_visual.png b/doc/6.0.x/specifier/sequences/images/execution_mappings_visual.png
new file mode 100644
index 0000000..c1a93e9
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/execution_mappings_visual.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/instance_role_mapping_properties.png b/doc/6.0.x/specifier/sequences/images/instance_role_mapping_properties.png
new file mode 100644
index 0000000..ab4abfb
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/instance_role_mapping_properties.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/instance_role_mapping_style.png b/doc/6.0.x/specifier/sequences/images/instance_role_mapping_style.png
new file mode 100644
index 0000000..078a5d4
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/instance_role_mapping_style.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/instance_role_reorder_tool_visual1.png b/doc/6.0.x/specifier/sequences/images/instance_role_reorder_tool_visual1.png
new file mode 100644
index 0000000..a251dbd
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/instance_role_reorder_tool_visual1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/interaction.png b/doc/6.0.x/specifier/sequences/images/interaction.png
new file mode 100644
index 0000000..fcab8c2
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/interaction.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/java_service.png b/doc/6.0.x/specifier/sequences/images/java_service.png
new file mode 100644
index 0000000..0331735
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/java_service.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/lifeline.png b/doc/6.0.x/specifier/sequences/images/lifeline.png
new file mode 100644
index 0000000..69a5c8b
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/lifeline.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/lifeline_creation_tool.png b/doc/6.0.x/specifier/sequences/images/lifeline_creation_tool.png
new file mode 100644
index 0000000..50cd3bb
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/lifeline_creation_tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/mappings.png b/doc/6.0.x/specifier/sequences/images/mappings.png
new file mode 100644
index 0000000..0a752f5
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/mappings.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/message.png b/doc/6.0.x/specifier/sequences/images/message.png
new file mode 100644
index 0000000..8a031cd
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/message.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/message_creation_precondition.png b/doc/6.0.x/specifier/sequences/images/message_creation_precondition.png
new file mode 100644
index 0000000..3f12f93
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/message_creation_precondition.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/message_creation_tool_visual.png b/doc/6.0.x/specifier/sequences/images/message_creation_tool_visual.png
new file mode 100644
index 0000000..0dce6ea
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/message_creation_tool_visual.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_basic_message_mapping.png b/doc/6.0.x/specifier/sequences/images/new_basic_message_mapping.png
new file mode 100644
index 0000000..871fc90
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_basic_message_mapping.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_creation_tool_section.png b/doc/6.0.x/specifier/sequences/images/new_creation_tool_section.png
new file mode 100644
index 0000000..5acb4fa
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_creation_tool_section.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_description.png b/doc/6.0.x/specifier/sequences/images/new_description.png
new file mode 100644
index 0000000..809e690
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_description.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_execution_creation_tool.png b/doc/6.0.x/specifier/sequences/images/new_execution_creation_tool.png
new file mode 100644
index 0000000..8e69843
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_execution_creation_tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_execution_mapping.png b/doc/6.0.x/specifier/sequences/images/new_execution_mapping.png
new file mode 100644
index 0000000..19b1c62
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_execution_mapping.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_instance_role_mapping.png b/doc/6.0.x/specifier/sequences/images/new_instance_role_mapping.png
new file mode 100644
index 0000000..590ee42
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_instance_role_mapping.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_instance_role_reorder_tool.png b/doc/6.0.x/specifier/sequences/images/new_instance_role_reorder_tool.png
new file mode 100644
index 0000000..d69b8bf
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_instance_role_reorder_tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_message_creation_tool.png b/doc/6.0.x/specifier/sequences/images/new_message_creation_tool.png
new file mode 100644
index 0000000..7e2c16a
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_message_creation_tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_message_mapping.png b/doc/6.0.x/specifier/sequences/images/new_message_mapping.png
new file mode 100644
index 0000000..871fc90
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_message_mapping.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/new_reorder_tool.png b/doc/6.0.x/specifier/sequences/images/new_reorder_tool.png
new file mode 100644
index 0000000..ced06ec
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/new_reorder_tool.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/orderings.png b/doc/6.0.x/specifier/sequences/images/orderings.png
new file mode 100644
index 0000000..7d8be85
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/orderings.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/reorder_tool_visual1.png b/doc/6.0.x/specifier/sequences/images/reorder_tool_visual1.png
new file mode 100644
index 0000000..0f86cc5
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/reorder_tool_visual1.png
Binary files differ
diff --git a/doc/6.0.x/specifier/sequences/images/reorder_tool_visual2.png b/doc/6.0.x/specifier/sequences/images/reorder_tool_visual2.png
new file mode 100644
index 0000000..01cd27b
--- /dev/null
+++ b/doc/6.0.x/specifier/sequences/images/reorder_tool_visual2.png
Binary files differ
diff --git a/doc/6.0.x/specifier/tables/Tables.html b/doc/6.0.x/specifier/tables/Tables.html
new file mode 100644
index 0000000..a7c428e
--- /dev/null
+++ b/doc/6.0.x/specifier/tables/Tables.html
@@ -0,0 +1,375 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Tables</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingTableEditors">Specifying Table Editors</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingTableEditors">Specifying Table Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#edition_tables">Edition Tables</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#table_tools">Table Tools</a>
+							</li>
+							<li>
+								<a href="#line_mappings">Line Mappings</a>
+							</li>
+							<li>
+								<a href="#feature_column_mapping">Feature Column Mappings</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#cross_tables">Cross Tables</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#cross_table_tools">Table Tools</a>
+							</li>
+							<li>
+								<a href="#element_column_mapping">Element Column Mappings</a>
+							</li>
+							<li>
+								<a href="#intersection_mapping">Intersection Mappings</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius supports the definition of two kinds of tabular modelers:</p>
+		<ul>
+			<li>
+				<em>Edition Tables</em> are classical tables, where each line represents an element and each column (from a fixed set) represents some (potentially computed) property of the element. Lines can contain sub-lines (recursively) to represent sub-elements, and the end-user can expand/collapse these at will. Provided that you specify the corresponding tools, users can create new lines and delete existing ones.
+			</li>
+			<li>
+				<em>Cross Tables</em> are slightly different, optimized to represent relationship between elements in a matrix-like way. Both lines and columns represent elements, and each call at an intersection if a certain relationship exists between them. Cross tables also support sub-lines, but not sub-columns. However provided the right tools are specified, users can create and/or delete columns in addition to lines.
+			</li>
+		</ul>
+		<p>Both kinds of table share a lot of elements. This document will focus on 
+			<a href="#edition_tables">edition tables</a>, which are the most commonly used. The 
+			<a href="#cross_tables">section on cross-tables</a> describes them by their differences with edition tables.
+		</p> 
+		<img border="0" src="./images/table_description_editor.png"/>
+<em>
+<ul>
+<img src="images/tricks.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> 
+		<em>use the <img src="images/questionMarque.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> icon to access the available fields tooltips:</em>
+<ul>
+			<li> 
+		<b>Id</b> field: The identifier of this element. Must be unique. Changing this identifier will break existing user models which reference the old identifier.</li>
+			<li> 
+		<b>Label</b> field: The label used to display this to the end-user.</li>
+			<li> 
+		<b>Domain Class</b> field: Type of the element represented by the Node.</li>
+			<li> 
+		<b>Semantic Candidates Expression</b> field: Restrict the list of elements to consider before creating the graphical elements. If it is not set, then all semantic models in session will be browsed and any element of the given type validating the precondition expression will cause the creation of a graphical element. If you set this attribute then only the elements returned by the expression evaluation will be considered.</li>
+</ul>
+</ul>
+</em>
+		<p>
+			<strong>Note</strong>: Advanced features like layers, filters and mapping imports which exist for diagrams are not currently available for tables.
+		</p>
+		<h2 id="edition_tables">Edition Tables</h2>
+		<p>Edition tables are configured by creating an 
+			<em>Edition Table Description</em> element (inside a 
+			<em>Viewpoint</em>) and its sub-elements (which describe the lines, columns and tools). 
+			<em>Edition Table Descriptions</em> are similar to other representation description elements.
+		</p>
+		<p>The mandatory 
+			<em>Domain Class</em> attribute is the type of semantic element which are represented by the table. In the 
+			<em>Model Explorer</em>, end-users will be able to create new instances of this table on semantic elements of this type (assuming the corresponding viewpoint is enabled in the 
+			<em>Modeling Project</em>). The syntax for the domain class name can be the basic name, like 
+			<code>Class</code>, a qualified name using name of the EMF EPackage which defines the type, like 
+			<code>uml.Class</code>, or a fully qualified URI like 
+			<code>http://www.eclipse.org/uml2/3.0.0/UML#//Class</code>.
+		</p>
+		<p>By default, new tables can be created on 
+			<em>any</em> instance of the 
+			<em>Domain Class</em>. You can use the 
+			<em>Precondition Expression</em> (available in the 
+			<em>Advanced</em> category) to change this. If such an expression is specified, it will be evaluated in the context of the semantic element the user has selected, and only if the expression returns 
+			<code>true</code> will the user be able to create a new table on this element.
+		</p>
+		<p>The default title for newly created table can be specified using the 
+			<em>Title expression</em> (
+			<em>Advanced</em> category), which is evaluated in the context of the semantic element on which the table is created, and should return a string. If the expression is not specified, the default title is the label of the table description (of its 
+			<em>Id</em> if no 
+			<em>Label</em> is set) prefixed with the string 
+			<code>"new "</code> (e.g. 
+			<code>new Package Contents</code>).
+		</p>
+		<p>It is recommended that the 
+			<em>Edition Table Description</em> be explicitly associated with the meta-model(s) of the semantic elements it will represent. You can add referenced meta-models from different sources in the 
+			<em>Metamodels</em> property section of the 
+			<em>Edition Table Description</em>. Sirius will work even without this association, but setting it explicitly will give you better feedback when validating your 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>.
+		</p>
+		<p>The 
+			<em>Initialization</em> and 
+			<em>Show on startup</em> flags control whether table instances are created and/or opened automatically without user intervention. If 
+			<em>Initialization</em> is set, then when the viewpoint which contains this table description is enabled, instances of this table description will be automatically created on all compatible semantic elements. If 
+			<em>Show on startup</em> in set, then when a modeling project is opened which contains instances of this table description, they will be opened: if only one such representation exist, it will be opened automatically; is there are more than one, a dialog box will appear to allow the user to select which one(s) to open.
+		</p>
+		<p>Finally, the 
+			<em>Initial Header Column Width</em> (
+			<em>Advanced</em> category) is specific to table descriptions (both edition tables and cross tables). It can be used to specify the default size (in pixels) of the left-most column of the table, which contains the labels of the elements represented by each line. If the value if 0 (the default), the column width will be computed from the initial content when the table is created.
+		</p>
+		<h3 id="table_tools">Table Tools</h3>
+		<p>Some tools which apply to the whole table are specified directly inside the 
+			<em>Edition Table Description</em>:
+		</p>
+		<ul>
+			<li>
+				<em>Representation Creation Tools</em>: These tools (one for each kind of representation supported by Sirius) can be used to create (and open) a new representation from an existing table element. It will be available to end-users in the 
+				<em>Navigate</em> context menu on compatible table elements. To configure the tool, simply select in the 
+				<em>Mappings</em> property which kinds of lines the tool should appear on (you can be more precise using the 
+				<em>Precondition</em> expression if necessary), and select the kind of representation which should be created using the 
+				<em>Representation Description</em> property (in practice, one of 
+				<em>Diagram Description</em>, 
+				<em>Table Description</em> or 
+				<em>Tree Description</em> depending on the tool). Normally, the new representation will be created on the semantic element represented by the tree item on which the user invoked the tool. Sometimes you want the tool to appear on one element, but create a representation on another one. In this case, use the 
+				<em>Browse expression</em> (in the 
+				<em>Advanced</em> category) to navigate from the element selected to the one one which the new representation should actually be created. Finally, any operation you specify in the body of the tool will be executed when the tool is invoked; you can use it to initialize the content of the model represented.
+			</li>
+			<li>
+				<em>Representation Navigation Tools</em>: These tools (one for each kind of representation supported by Sirius) are very similar to the previous ones. The only differences is that they allow users to navigate to existing representation instead of creating new ones. If such a tool exists, the 
+				<em>Navigate</em> context menu on an element will contains an entry for each corresponding representation which already exists on the element selected (or reachable from the selected element using the 
+				<em>Browse expression</em>). You can specify a 
+				<em>Navigation name expression</em> (
+				<em>Advanced</em> category) to be used in the menu entry instead of using the title of the existing representation. This can be useful to make it more explicit what the relationship is between the current element and the target tree.
+			</li>
+			<li>
+				<em>Line Creation Tools</em> which are directly contained inside the 
+				<em>Table Description</em> are used to create root table lines. They are available to end-users through a combo button in the main Eclipse tool-bar. To configure it, simply select the kind of line the tool will create in the 
+				<em>Mapping</em> property, and specify the tool&#8217;s behavior using normal model operations.
+			</li>
+		</ul>
+		<h4 id="tools_specification">Tools Specification</h4>
+		<p>
+			<a href="../general/ToolsSpecification.html">Refer to Tools specification</a>
+		</p>
+		<h3 id="line_mappings">Line Mappings</h3>
+		<p>The lines which will appear in a table (and their organization in sub-lines) are defined by the 
+			<em>Line</em> mapping elements inside the 
+			<em>Table Description</em> element. A 
+			<em>Table Description</em> contains 
+			<em>Line</em> mappings which define which elements will appear as top-level lines of the table, while each 
+			<em>Line</em> mapping can contain sub-mappings which define its own direct sub-lines. If an element (the table or a line mapping) contains several sub-mappings, the element&#8217;s content will appear in the order of the mappings: first all the instances of the first mapping, then the instances of the second one, etc.
+		</p>
+		<p>A 
+			<em>Line</em> mapping is defined by a 
+			<em>Domain Class</em> and a 
+			<em>Semantic Candidates Expression</em>. The 
+			<em>Semantic Candidates Expression</em> indicates where to look in the semantic model for elements which should be represented by the mapping. The expression is evaluated in the context of the parent&#8217;s semantic element (the parent being either the table itself or a parent line). It should return a set of semantic elements. Only those which are instances of the specified 
+			<em>Domain Class</em> are retained and actually represented as instances of this mapping. The semantic element thus associated to each line is called the line&#8217;s 
+			<em>target</em> element.
+		</p>
+		<p>You can associate more semantic elements to a line by defining the 
+			<em>Associated Elements Expression</em> (in the 
+			<em>Advanced Category</em>), which is evaluated in the context of the target and may return more semantic elements. Any change in the target element or one of the associated elements will automatically trigger a refresh of the line.
+		</p>
+		<p>The 
+			<em>Header Label Expression</em> (in the 
+			<em>Label</em> category) is evaluated in the context of a line&#8217;s target and should return the text to be shown for the line in the header column (on the left of the table).
+		</p>
+		<p>A 
+			<em>Line</em> mapping may 
+			<em>Reuse Sub Lines</em> (see the 
+			<em>Import</em> category), including itself, as sub-mappings. The effect is exactly the same as if the reused mapping(s) were created as children if the parent. However because a mapping can reuse itself or one of its parent mapping, this allows to create table of infinite depth (or at least not bounded a priori). The 
+			<em>Reused in Mappings</em> property is the symmetrical of 
+			<em>Reused Sub Lines</em>: it shows you which line mappings reuse this one as a sub-line.
+		</p>
+		<h4 id="line_style">Line Style</h4>
+		<p>You can create 
+			<em>Style</em> elements inside a line mapping to set the default style of all the cells on this line (note that this style override the column mappings one).
+		</p>
+		<p>A 
+			<em>Foreground Style</em> element can be used to set the font size, font style (e.g. italic) and text color. A 
+			<em>Background Style</em> can be used to set the background color. Both are optional.
+		</p>
+		<p>You can also specify 
+			<em>Conditional styles</em> for the foreground. Each one is a normal foreground style wrapped in a predicate expression (evaluated in the context of the line&#8217;s semantic element). If conditional styles are specified, their conditions are tested in order, and the first one which matches is used. If no conditional style is defined, the 
+			<em>Foreground Style</em> (or the default) is applied.
+		</p>
+		<h4 id="line_tools">Line Tools</h4>
+		<p>There are two kinds of tools which can be created inside line mappings (and apply to all instances of that mapping).</p>
+		<ul>
+			<li>
+				<em>Create Line Tool</em> are used to create a new lines. A mapping can contain several such tools. They appear in the context menu of the instances of the mapping, if the (optional) 
+				<em>Precondition</em> of the tool holds for the instance&#8217;s target. A creation tool must specify what kind of 
+				<em>Mapping</em> it will create. The actual behavior of the creation tool is defined in the tool&#8217;s body, using all the standard model operations.
+			</li>
+			<li>
+				<em>Delete Line Tool</em>, used to delete elements. If a line mapping does not define explicitly a deletion tool, the default behavior of the 
+				<em>Delete line</em> operation is to remove the line&#8217;s semantic 
+				<em>target</em> and all 
+				<em>associated elements</em> from the semantic model. If you want a specific behavior, you must create a 
+				<em>Delete Line Tool</em> explicitly and describe the behavior in the tool&#8217;s body. If you want to prevent the deletion of an element, you must create a 
+				<em>Delete Line Tool</em> and set a 
+				<em>Precondition</em> to return 
+				<code>false</code> for the elements which should not be deleted.
+			</li>
+		</ul>
+		<h3 id="feature_column_mapping">Feature Column Mappings</h3>
+		<p>The columns which will appear in an edition table are defined by the 
+			<em>Feature Column</em> mapping elements inside the 
+			<em>Table Description</em> element. They are named 
+			<em>Feature Column</em> mappings because they normally represent a property (maybe computed) of the elements which are represented by the table&#8217;s lines, and also to distinguish them from the kind of columns which appear in 
+			<a href="#cross_tables">cross tables</a>. 
+		</p>
+		<p>A 
+			<em>Feature Column</em> mapping is defined by its 
+			<em>Feature Name</em>, which should normally be the name of a valid feature (attribute or reference) of the element which appear in the tables' lines. If a line represents a semantic element 
+			<em>S1</em> but you want on some column to show a property of an element reachable from 
+			<em>S1</em> instead of 
+			<em>S1</em> itself, you can use the 
+			<em>Feature Parent Expression</em> (
+			<em>Advanced</em> category), which is evaluated in the context of 
+			<em>S1</em> and should return an element 
+			<em>S2</em>. 
+			<em>S2</em> will be considered the 
+			<em>target</em> element of the cell at this intersection instead of 
+			<em>S1</em>.
+		</p>
+		<p>You can associate more semantic elements to the mapping using the 
+			<em>Associated elements expression</em> in the 
+			<em>Advanced</em> category. The expression will be evaluated in the context of the target semantic element of the cell.
+		</p>
+		<p>The 
+			<em>Label Expression</em> is used to compute the text to show in each cell. It is evaluated for each cell in the context of its target semantic element. If you compute text for elements whose EClass have no common EStructuralFeatures (inherited or with same name), you can use 
+			<code>*</code> as 
+			<em>Feature Name</em> to skip the feature name validation during the cell creation. 
+		</p>
+		<p>In tables, the contents of the cell is editable by default. Even with no direct edit tool specified, Sirius will try to interpret the text entered by the user according to the type of the feature the column represents (as defined by the 
+			<em>Feature Name</em>. For example if a column represents a boolean attribute, Sirius will correctly interpret the strings 
+			<code>"true"</code> and 
+			<code>"false"</code> and set the value accordingly when the user edits a cell. You can disable this behavior by giving a 
+			<em>Can Edit</em> expression, which is evaluated in the context of the semantic element of each individual cell. It should return 
+			<code>false</code> if that cell should not be editable.
+		</p>
+		<p>Finally, the 
+			<em>Header Label Expression</em> is used to compute the header of the column itself, and is evaluated in the context of the table&#8217;s target semantic element, and the 
+			<em>Initial width</em>, if set to a non-zero value, is used as the initial width of the column.
+		</p>
+		<h4 id="column_styles">Column Styles</h4>
+		<p>Columns can contain style definition to set the style of all the cells on these columns. However, these styles can be overridden by the styles which may be present in the line mappings for the cells of this column. The style definition elements, including support for conditional styles, is the same as for style associated to line mappings. Refer to 
+			<a href="#line_style">the corresponding section</a> for more details.
+		</p>
+		<h4 id="column_tools">Column Tools</h4>
+		<p>Column can currently only define a 
+			<em>Label edit</em> tool, which will apply to all the cells of the column. It works like all edit The 
+			<em>Edit Mask</em> element (contained inside the tool) is used to parse the new label&#8217;s value as entered by the user, and to select part of this label as input variables to the editing action&#8217;s body. The mask can contain substrings of the form 
+			<code>{N}</code> where 
+			<em>N</em> is a number. The parts of the new label&#8217;s value which correspond to these substring will be available as variables named <code>argN</code>. For example, with an edit mask of <code>{0}:{1}</code> and an input string entered by the user of <code>attr : EString</code>, the tool&#8217;s body would be executed with variables <code>arg0</code> set to <code>attr&#9251;</code> and <code>arg1</code> set to <code>&#9251;EString</code>.
+		</p>
+		<h2 id="cross_tables">Cross Tables</h2>
+		<p>
+			<em>Cross Tables</em> are slightly different from edition tables. They are optimized to represent relationship between elements in a matrix-like way. Both lines and columns represent elements, and each call at an intersection if a certain relationship exists between them. Cross tables also support sub-lines, but not sub-columns. However provided the right tools are specified, users can create and/or delete columns in addition to lines.
+		</p>
+		<p>Cross tables are specified using a 
+			<em>Cross Table Description</em> element, which works exactly like 
+			<a href="#edition_tables">
+				<em>Edition Table Description</em>
+			</a> elements. The differences appear in the type of elements they can contain.
+		</p>
+		<h3 id="cross_table_tools">Table Tools</h3>
+		<p>Cross tables can contain the same kinds of tools as edition tables (see 
+			<a href="#table_tools">the corresponding section</a> for details). In addition, they can contain 
+			<em>Create Column Tools</em>, which behave exactly like 
+			<em>Create Line</em> tools, except that they apply to 
+			<a href="#element_column_mapping">
+				<em>Element Column</em> mappings
+			</a> (see below) and are used to create new columns in the table.
+		</p>
+		<h4 id="cross_table_tools_specification">Tools Specification</h4>
+		<p>
+			<a href="../general/ToolsSpecification.html">Refer to Tools specification</a>
+		</p>
+		<h3 id="element_column_mapping">Element Column Mappings</h3>
+		<p>In cross tables, columns represent elements instead of elements' properties (as is the case for edition tables). The set of columns is defined by one or more 
+			<em>Element Column</em> mappings. They are almost identical to 
+			<a href="#line_mappings">line mappings</a>, except that:
+		</p>
+		<ul>
+			<li>they can not be nested (there are no &#8220;sub-columns&#8221; like there are sub-lines), and thus can not &#8220;reuse&#8221; column mappings either;</li>
+			<li>they can have an 
+				<em>Initial width</em> (set in the 
+				<em>Advanced</em> category). 
+			</li>
+		</ul>
+		<p>
+			<em>Element Column</em> mappings can contain a 
+			<em>Create Column Tool</em> and a 
+			<em>Delete Column Tool</em>, which are specified and behave in a similar way than the 
+			<em>Create Line</em> and 
+			<em>Delete Line</em> 
+			<a href="#line_tools">tools for line mappings</a>.
+		</p>
+		<p>They can also contain style definitions (including conditional style), which apply to all the cells in the column (unless overridden by the intersection mapping or by the line mapping if any).</p>
+		<h3 id="intersection_mapping">Intersection Mappings</h3>
+		<p>The line and element column mappings in a cross table define which lines and columns will be present in the tables, but not the contents of the cells. This is defined by 
+			<em>Intersection</em> mappings. The 
+			<em>Line Mapping</em> and 
+			<em>Column Mapping</em> properties indicate which cells the mapping describes. The 
+			<em>Label Expression</em>, evaluated in the context of the cell&#8217;s targets semantic element, should return the text to show in the cell, while the 
+			<em>Can Edit</em> expression indicates whether or not the cell&#8217;s value can be edited by end-users.
+		</p>
+		<p>There are two slightly different use cases for intersection mapping, which use different sub-sets of the remaining properties:</p>
+		<ol>
+			<li>Intersections which represent a relation between the element on a line and the element on a column. For example, if both lines and columns represented UML classes, this could be the &#8220;super-class&#8221; reference between a class and those it inherits from;</li>
+			<li>Intersections which represent a semantic element (instead of just a relation) which is itself related to both the element on the line and the element on a column. To continue with the UML example, this would be used to represent UML Associations, which are full-blown objects representing a relationship between classes.</li>
+		</ol>
+		<p>If you are familiar with it, this is similar to 
+			<em>Relation Based Edges</em> and 
+			<em>Element Based Edges</em> in Sirius diagrams.
+		</p>
+		<p>In the first case (&#8220;relation-based intersection&#8221;), the semantic element of a cell will the the semantic element of the cell&#8217;s line. To configure such an intersection, you must only set the 
+			<em>Column Finder Expression</em>: from a line&#8217;s semantic target element, it should return the semantic element of the column in which the cell should appear.
+		</p>
+		<p>The second use case (&#8220;element-based intersection&#8221;) is enabled by setting the 
+			<em>Use Domain Class</em> flag in the 
+			<em>Domain Based</em> category. You must then indicate the 
+			<em>Domain Class</em> of the elements which will be represented by the cells, and the 
+			<em>Semantic Candidates Expression</em>. The expression will be evaluated in the context of the whole table&#8217;s semantic element, and should return all elements (instances of the 
+			<em>Domain Class</em>) which should be represented by cells. These elements will be the semantic target element of the cell. You can use the 
+			<em>Precondition Expression</em> and 
+			<em>Associated elements expression</em> (
+			<em>Advanced</em> category) with the same semantics as for other mappings. Finally, you must set both the 
+			<em>Column Finder Expression</em> (
+			<em>General</em> category) and the 
+			<em>Line Finder Expression</em> (
+			<em>Domain Based</em> category): they will both be evaluated in the context of the cell&#8217;s semantic element, and should return the semantic elements of the column and line at which the intersection should appear. In our example, these would be expressions which, from the 
+			<em>Association</em> element, find the source and target classes of the association.
+		</p>
+		<h4 id="intersection_mapping_style">Intersection Style</h4>
+		<p>An 
+			<em>Intersection</em> mapping can contain style elements, including conditional styles. If they are present, they override any style set on the corresponding column mapping or line mapping.
+		</p>
+		<h4 id="intersection_mapping_tools">Intersection Tools</h4>
+		<p>Intersection mappings can contain two kinds of tools:</p>
+		<ul>
+			<li>
+				<em>Label Edit</em> tools are standard &#8220;direct edit&#8221; tools, which allow end-users to edit a cell&#8217;s label. You can specify the actual changes in the model in the tool&#8217;s body.
+			</li>
+			<li>
+				<em>Create Cell Tools</em> are used when the user edits an initially empty cell, where there is no relation (or element relating) the line and column. It is defined like a 
+				<em>Label Edit</em> tool (with an 
+				<em>Edit Mask Variable</em> to obtain the text entered by the user), but instead of editing an existing relation, it should create a relation (e.g. add the class in the column as a super-class to the one on the line) or the element relating the line and column (e.g. create an 
+				<em>Association</em> which links the classes). 
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/tables/images/questionMarque.png b/doc/6.0.x/specifier/tables/images/questionMarque.png
new file mode 100644
index 0000000..09dda8c
--- /dev/null
+++ b/doc/6.0.x/specifier/tables/images/questionMarque.png
Binary files differ
diff --git a/doc/6.0.x/specifier/tables/images/table_description_editor.png b/doc/6.0.x/specifier/tables/images/table_description_editor.png
new file mode 100644
index 0000000..4a9ab77
--- /dev/null
+++ b/doc/6.0.x/specifier/tables/images/table_description_editor.png
Binary files differ
diff --git a/doc/6.0.x/specifier/tables/images/tricks.png b/doc/6.0.x/specifier/tables/images/tricks.png
new file mode 100644
index 0000000..a0679f0
--- /dev/null
+++ b/doc/6.0.x/specifier/tables/images/tricks.png
Binary files differ
diff --git a/doc/6.0.x/specifier/trees/Trees.html b/doc/6.0.x/specifier/trees/Trees.html
new file mode 100644
index 0000000..ca0ecd5
--- /dev/null
+++ b/doc/6.0.x/specifier/trees/Trees.html
@@ -0,0 +1,290 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Trees</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingTreeEditors">Specifying Tree Editors</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingTreeEditors">Specifying Tree Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#tree_description">Tree Descriptions</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#tree_tools">Tree Tools</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#mappings">Tree Item Mappings</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#item_style">Item Style</a>
+							</li>
+							<li>
+								<a href="#item_tools">Item Tools</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>A tree is a representation which provides a hierarchical viewpoint on your data. It can provide a lot of information in a clear and concise way, and can be especially useful to progressively reveal more and more detailed information on a model when the user expands the tree elements to &#8220;dig into&#8221; the model.</p>
+		<p>Trees are probably the easiest kind of representation to define in Sirius. Do not hesitate to define small tree descriptions, even read-only, to provide alternative and synthetic viewpoints on your data, like type hierarchies, dependencies between elements, etc.</p> 
+		<img border="0" src="./images/tree_description_editor.png"/>
+<em>
+<ul>
+<img src="images/tricks.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> 
+		<em>use the <img src="images/questionMarque.png" style="box-shadow:none;display:inline;margin:0px;padding:0px;"/> icon to access the available fields tooltips:</em>
+<ul>
+			<li> 
+		<b>Id</b> field: The identifier of this element. Must be unique. Changing this identifier will break existing user models which reference the old identifier.</li>
+			<li> 
+		<b>Label</b> field: The label used to display this to the end-user.</li>
+			<li> 
+		<b>Domain Class</b> field: Type of the element represented by the Node.</li>
+			<li> 
+		<b>Semantic Candidates Expression</b> field:
+			    <ul>
+			    <li>Expected return type: a 
+		<code>Collection&lt;EObject&gt;</code> or an EObject.</li>
+			        <li>vailable variables: 
+			        <ul>
+		    		    <li> containerView: ecore.EObject | container of the current DTreeElement (variable is available if container is not null).</li>
+			    	    <li> view: sirius.DTreeElement | current DTreeElement.</li>
+				        <li> container: ecore.EObject | semantic target of $containerView (if it is a DSemanticDecorator).</li>
+			        </ul>
+			    </li>
+			    </ul>
+			</li>
+</ul>
+</ul>
+</em>
+		<p>
+			<strong>Note</strong>: Advanced features like layers, filters and mapping imports which exist for diagrams are not currently available for trees.
+		</p>
+		<h2 id="tree_description">Tree Descriptions</h2>
+		<p>Similar to other kinds of Sirius representations, trees are configured by creating a 
+			<em>Tree Description</em> element and its sub-elements inside a 
+			<a href="../../Glossary.html#VSM">
+				<em>Viewpoint Specification Model</em>
+			</a>.
+		</p>
+		<p>A 
+			<em>Tree Description</em> has a mandatory 
+			<em>Id</em>, which must be unique in the context of the viewpoint it is part of, and an optional 
+			<em>Label</em>. The 
+			<em>Id</em> is used internally to identify the type of tree, and must be kept stable across different versions of the description (or it will make trees created with the old 
+			<em>Id</em> unusable). The 
+			<em>Label</em> is used in the UI and will be visible to end-users. It can be changed with no impact on existing representation files. If the 
+			<em>Label</em> is not specified, the 
+			<em>Id</em> is used instead in the UI.
+		</p>
+		<p>The mandatory 
+			<em>Domain Class</em> attribute of a 
+			<em>Tree Description</em> is the type of semantic element which are represented by the tree. In the 
+			<em>Model Explorer</em>, end-users will be able to create new instances of this tree on semantic elements of this type (assuming the corresponding viewpoint is enabled in the 
+			<em>Modeling Project</em>). The syntax for the domain class name can be the basic name, like 
+			<code>Class</code>, a qualified name using name of the EMF EPackage which defines the type, like 
+			<code>uml.Class</code>, or a fully qualified URI like 
+			<code>http://www.eclipse.org/uml2/3.0.0/UML#//Class</code>.
+		</p>
+		<p>By default, new trees can be created on 
+			<em>any</em> instance of the 
+			<em>Domain Class</em>. You can use the 
+			<em>Precondition Expression</em> (available in the 
+			<em>Advanced</em> category) to change this. If such an expression is specified, it will be evaluated in the context of the semantic element the user has selected, and only if the expression returns 
+			<code>true</code> will the user be able to create a new tree on this element.
+		</p>
+		<p>The default title for newly created trees can be specified using the 
+			<em>Title expression</em>, which is evaluated in the context of the semantic element on which the tree is created, and should return a string. If the expression is not specified, the default title is the label of the tree description (of its 
+			<em>Id</em> if no 
+			<em>Label</em> is set) prefixed with the string 
+			<code>"new "</code> (e.g. 
+			<code>new Class Hierarchy</code>).
+		</p>
+		<p>It is recommended that the 
+			<em>Tree Description</em> be explicitly associated with the meta-model(s) of the semantic elements it will represent. You can add referenced meta-models from different sources in the 
+			<em>Metamodels</em> property section of the 
+			<em>Tree Description</em>. Sirius will work even without this association, but setting it explicitly will give you better feedback when validating your 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>.
+		</p>
+		<p>Finally, the 
+			<em>Initialization</em> and 
+			<em>Show on startup</em> flags control whether tree instances are created and/or opened automatically without user intervention. If 
+			<em>Initialization</em> is set, then when the viewpoint which contains this tree description is enabled, instances of this tree description will be automatically created on all compatible semantic elements. If 
+			<em>Show on startup</em> in set, then when a modeling project is opened which contains instances of this tree description, they will be opened: if only one such representation exist, it will be opened automatically; is there are more than one, a dialog box will appear to allow the user to select which one(s) to open.
+		</p>
+		<p>The main concepts which define a tree are:</p>
+		<ul>
+			<li>
+				<em>Tree Item</em> mappings, which describe the elements that will appear on this tree, and how they map to the underlying semantic elements they represent;
+			</li>
+			<li>
+				<em>Styles</em>, which describe the graphical appearance of these representation elements;
+			</li>
+			<li>
+				<em>Tools</em>, which describe the actions the end-user can perform on the tree and its items and their effect on the associated semantic elements.
+			</li>
+		</ul>
+		<h3 id="tree_tools">Tree Tools</h3>
+		<p>Some of the tools which can be defined on tree editors are specified directly inside the top-level 
+			<em>Tree Description</em> element:
+		</p>
+		<ul>
+			<li>
+				<em>Create</em>: The 
+				<em>Create</em> tools which are directly contained inside the 
+				<em>Tree Description</em> are used to create root tree items. They are available to end-users through a combo button in the main Eclipse tool-bar. To configure it, simply select the kind of tree item the tool will create in the 
+				<em>Mapping</em> property, and specify the tool&#8217;s behavior using normal model operations.
+			</li>
+			<li>
+				<em>Drop Tool</em>: When defined directly inside the 
+				<em>Tree Description</em>, a 
+				<em>Drop Tool</em> specifies what happens when the user drops an element at the root of the tree (i.e. inside the editor, but not on an existing tree item). The 
+				<em>Drag source</em> property indicates whether the tool accepts elements dragged from a tree representation (value 
+				<em>Tree</em>), from the 
+				<em>Model Explorer</em> view (value 
+				<em>Model</em>), or both. If such a drop is detected and the 
+				<em>Precondition</em> evaluates to 
+				<code>true</code>, then the body of the drop tool is executed, with the 
+				<code>element</code> variable pointing to the semantic element being dropped and 
+				<code>newContainer</code> the semantic element in which it is dropped (in this case the tree&#8217;s semantic element). 
+				<i>WARNING</i>: if you choose 
+				<em>Model</em> or 
+				<em>Both</em> as source, your tool must be prepared to accept any type of source element which can be present in the 
+				<em>Model Explorer</em> view, including elements which have no relation to the source mappings you specified for the tool. Use a precondition to check the nature of the element being dragged (available through the 
+				<code>element</code> variable) to disable the tool source elements your tool does not support.
+			</li>
+			<li>
+				<em>Tree Creation</em>: This tool can be used to create (and open) a new tree from an existing tree item. It will be available to end-users in the 
+				<em>Navigate</em> context menu on compatible tree items. To configure the tool, simply select in the 
+				<em>Mappings</em> property which kinds of tree items the tool should appear on (you can be more precise using the 
+				<em>Precondition</em> expression if necessary), and select which kind of tree should be created using the 
+				<em>Tree Description</em> property. Normally, the new tree representation will be created on the semantic element represented by the tree item on which the user invoked the tool. Sometimes you want the tool to appear on one element, but create a representation on another one. In this case, use the 
+				<em>Browse expression</em> (in the 
+				<em>Advanced</em> category) to navigate from the element selected to the one in which the new tree should actually be created. Finally, any operation you specify in the body of the tool will be executed when the tool is invoked; you can use it to initialize the content of the model represented.
+			</li>
+			<li>
+				<em>Tree Navigation</em>: This tool is very similar to the previous one. The only differences is that it allows users to navigate to existing trees instead of creating new ones. If such a tool exists, the 
+				<em>Navigate</em> context menu on an item will contains an entry for each corresponding tree which already exists on the element selected (or reachable from the selected element using the 
+				<em>Browse expression</em>). You can specify a 
+				<em>Navigation name expression</em> (
+				<em>Advanced</em> category) to be used in the menu entry instead of using the title of the existing tree. This can be useful to make it more explicit what the relationship is between the current element and the target tree.
+			</li>
+		</ul>
+		<h4 id="tools_specification">Tools Specification</h4>
+		<p>
+			<a href="../general/ToolsSpecification.html">Refer to Tools specification</a>
+		</p>
+		<h2 id="mappings">Tree Item Mappings</h2>
+		<p>Trees are recursive by nature. Their contents is specified using a single concept of 
+			<em>Tree Item</em> mapping which can be composed recursively. A 
+			<em>Tree Description</em> contains 
+			<em>Tree Item</em> mappings which define which elements will appear at the top-level of the tree, while each 
+			<em>Tree Item</em> mapping can contain sub-mappings which define its own direct content. If an element (the tree or a tree item mapping) contains several sub-mappings, the element&#8217;s content will appear in the order of the mappings: first all the instances of the first mapping, then the instances of the second one, etc.
+		</p>
+		<p>A 
+			<em>Tree Item</em> mapping is defined by a 
+			<em>Domain Class</em>, a 
+			<em>Semantic Candidates Expression</em> and an optional 
+			<em>Precondition Expression</em> (in the 
+			<em>Advanced</em> category). The 
+			<em>Semantic Candidates Expression</em> indicates where to look in the semantic model for elements which should be represented by the mapping. The expression is evaluated in the context of the parent&#8217;s semantic element (the parent being either the tree itself or the parent item). It should return a set of semantic elements. Only those which are instances of the specified 
+			<em>Domain Class</em> and which also validate the optional 
+			<em>Precondition expression</em> are retained and actually represented as instances of this mapping. The semantic element thus associated to each tree item is called the item&#8217;s 
+			<em>target</em> element.
+		</p>
+		<p>You can associate more semantic elements to an item by defining the 
+			<em>Associated Elements Expression</em> (in the 
+			<em>Advanced Category</em>), which is evaluated in the context of the target and may return more semantic elements. Any change in the target element or one of the associated elements will automatically trigger a refresh of the tree item.
+		</p>
+		<p>A 
+			<em>Tree Item</em> mapping may 
+			<em>Specialize</em> another mapping, in which case it will inherit all of the specialized mapping&#8217;s properties for which it does not specify an explicit value.
+		</p>
+		<p>A 
+			<em>Tree Item</em> mapping may 
+			<em>Reuse</em> (see the 
+			<em>Imports</em> category) existing mappings, including itself, as sub-mappings. The effect is exactly the same as if the reused mapping(s) were created as children of the parent. However because a mapping can reuse itself or one of its parent mapping, this allows to create trees of infinite depth (or at least not bounded a priori).
+		</p>
+		<p>Tree items are created lazily, only when the user expands a parent item. This means that if you define sub-mappings which use costly operations to create, the cost will only be paid when the user actually &#8220;digs into&#8221; the tree to the corresponding level of details. This also means that through reuse you can create trees of potentially infinite depth (as deep as the user chooses to expand them) without risking an infinite loop. Note however that once created tree items do not disappear if their parent is collapsed. They are only removed if the user explicitly deletes them.</p>
+		<p>The actual appearance of a tree item is defined by its 
+			<a href="#item_style">style</a>, while its behavior is defined by the 
+			<a href="#item_tools">tools</a> associated to it.
+		</p>
+		<h3 id="item_style">Item Style</h3>
+		<p>An item&#8217;s appearance is controlled by one or more 
+			<em>Style</em> element(s) defined in the corresponding tree item mapping. Each tree item mapping 
+			<em>must</em> contain exactly one default style (which is created automatically when the mapping itself is created), and 
+			<em>may</em> contain one or more 
+			<em>conditional styles</em>.
+		</p>
+		<p>An item&#8217;s style is comprised of a 
+			<em>Label expression</em>, evaluated in the context of the item&#8217;s semantic target, and which should return the text to show for the item, and several configuration properties to control the font, style, color (both of the text and its background) and icon of the item. The default icon shown for an element (if 
+			<em>Show icon</em> is set), is the one defined in the semantic meta-model for the item&#8217;s target element. You can specify a different one using the 
+			<em>Icon path</em> property (in the 
+			<em>Advanced</em> category). This is especially useful if you have several items which represent different aspects of the same semantic element and thus share the same target.
+		</p>
+		<p>
+			<em>Tree Item</em> mappings can have one ore more 
+			<em>Conditional Style</em>. They are normal style elements with the same properties as described above, but wrapped in a 
+			<em>Conditional Style</em> element which defines a boolean expression. If an item mapping contains such styles, then for each instance of the mapping, the conditional styles will first be tried, in the order of their definitions. The first style whose condition returns 
+			<code>true</code> for the item&#8217;s target is used (and the remaining ones are not tested). If none of the conditional style apply, the default one is used. Note that because the conditions are tested in the order of definition, you should order them from the most likely to the least likely to optimize performance.
+		</p>
+		<h3 id="item_tools">Item Tools</h3>
+		<p>The behavior of a tree item is defined by the tools which are associated to its mapping. The tools which should apply to a tree item mapping are simply created inside the mapping itself. They can be:</p>
+		<ul>
+			<li>
+				<em>Creation Tool</em>, which is used to create a new Tree Item. A mapping can contain several such tools. They appear in the context menu of the instances of the mapping, if the (optional) 
+				<em>Precondition</em> of the tool holds for the instance&#8217;s target. A creation tool must specify what kind of 
+				<em>Mapping</em> it will create. The actual behavior of the creation tool is defined in the tool&#8217;s body, using all the standard model operations.
+			</li>
+			<li>
+				<em>Deletion Tool</em>, used to delete elements. If a mapping does not define explicitly a deletion tool, the default behavior of the 
+				<em>Delete tree item</em> operation is to remove the item&#8217;s semantic 
+				<em>target</em> and all 
+				<em>associated elements</em> from the semantic model. If you want a specific behavior, you must create a 
+				<em>Deletion tool</em> explicitly and describe the behavior in the tool&#8217;s body. If you want to prevent the deletion of an element, you must create a 
+				<em>Deletion tool</em> and set a 
+				<em>Precondition</em> to return 
+				<code>false</code> for the elements which should not be deleted.
+			</li>
+			<li>
+				<em>Direct Edit Tool</em>, used to allow end-users to directly edit the label of a Tree Item (by double-clicking or pressing 
+				<em>F2</em> or 
+				<em>Return</em> on a Tree Item). It specifies how to interpret the new label value, and which changes to apply to the model element. The 
+				<em>Edit Mask</em> element (contained inside the tool) is used to parse the new label&#8217;s value as entered by the user, and to select part of this label as input variables to the editing action&#8217;s body. The mask can contain substrings of the form 
+				<code>{N}</code> where 
+				<em>N</em> is a number. The parts of the new label&#8217;s value which correspond to these substring will be available as variables named <code>argN</code>. For example, with an edit mask of <code>{0}:{1}</code> and an input string entered by the user of <code>attr : EString</code>, the tool&#8217;s body would be executed with variables <code>arg0</code> set to <code>attr&#9251;</code> and <code>arg1</code> set to <code>&#9251;EString</code>.
+			</li>
+			<li>
+				<em>Drop Tool</em>: When defined inside a 
+				<em>Tree Item</em> mapping, a 
+				<em>Drop Tool</em> specifies what happens when the user drops an element onto an instance of the mapping. The 
+				<em>Drag source</em> property indicates whether the tool accepts elements dragged from a tree representation (value 
+				<em>Tree</em>), from the 
+				<em>Model Explorer</em> view (value 
+				<em>Model</em>), or both. If such a drop is detected and the 
+				<em>Precondition</em> evaluates to 
+				<code>true</code>, then the body of the drop tool is executed, with the 
+				<code>element</code> variable pointing to the semantic element being dropped and 
+				<code>newContainer</code> the semantic element in which it is dropped (in this case the tree&#8217;s semantic element).
+			</li>
+			<li>
+				<em>Pop-up menus</em> are used to add new menus and actions to the context menu associated to any Tree Item.
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/trees/images/questionMarque.png b/doc/6.0.x/specifier/trees/images/questionMarque.png
new file mode 100644
index 0000000..09dda8c
--- /dev/null
+++ b/doc/6.0.x/specifier/trees/images/questionMarque.png
Binary files differ
diff --git a/doc/6.0.x/specifier/trees/images/tree_description_editor.png b/doc/6.0.x/specifier/trees/images/tree_description_editor.png
new file mode 100644
index 0000000..f10692a
--- /dev/null
+++ b/doc/6.0.x/specifier/trees/images/tree_description_editor.png
Binary files differ
diff --git a/doc/6.0.x/specifier/trees/images/tricks.png b/doc/6.0.x/specifier/trees/images/tricks.png
new file mode 100644
index 0000000..a0679f0
--- /dev/null
+++ b/doc/6.0.x/specifier/trees/images/tricks.png
Binary files differ
diff --git a/doc/6.0.x/specifier/workflows/Workflows.html b/doc/6.0.x/specifier/workflows/Workflows.html
new file mode 100644
index 0000000..004ca28
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/Workflows.html
@@ -0,0 +1,206 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Workflows</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SpecifyingWorkflows">Specifying Workflows</h1>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SpecifyingWorkflows">Specifying Workflows</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#specification">Customizing the workflow tile</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#workflow">Workflow</a>
+							</li>
+							<li>
+								<a href="#page">Page</a>
+							</li>
+							<li>
+								<a href="#section">Section</a>
+							</li>
+							<li>
+								<a href="#activity">Activity</a>
+							</li>
+							<li>
+								<a href="#context">Interpreted Expressions context</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#usage">Usage</a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<p>
+			<span style="color:red">WARNING:</span> This feature is 
+			<b>experimental</b> in Sirius 6.0.x. Adopters are encouraged to test it and give 
+			<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Sirius">feedback</a>, but this sould not be deployed in production. In particular, workflows defined using Sirius 6.0.x may not work at all in Sirius 6.1 and later.
+		</p>
+		<h2 id="introduction">Introduction</h2>
+		<p>The 
+			<em>Workflow</em> section is a new tab included in the aird editor (to open it, double click on the file with 
+			<em>aird</em> extension).
+		</p>
+		<p>
+			<img border="0" src="images/aird_editor.png"/>
+		</p>
+		<p>The new workflow tab displays both fixed information and information that can be defined in the VSM. The fixed information are the following:</p>
+		<ul>
+			<li>The name of the project and its description.</li>
+			<li>A list of all semantic resources known by the Sirius session</li>
+			<li>A list of all representations (diagrams, tables and trees) in the Sirius session</li>
+			<li>A workflow tile, empty by default, that can be customized by the specifier in the 
+				<a href="../../Glossary.html#VSM">
+					<em>VSM</em>
+				</a> to display actions that should be available more directly to users.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/workflow_page.png"/>
+		</p>
+		<h2 id="specification">Customizing the workflow tile</h2>
+		<p>The workflow tile customization can be done by describing its content directly in the VSM.</p>
+		<p>Workflows are defined around four main concepts: 
+			<em>Workflow</em>, 
+			<em>Page</em>, 
+			<em>Section</em> and 
+			<em>Activity</em>.
+			<br/>Once defined in the VSM, the result will be visible in the workflow tile of the aird editor.
+		</p>
+		<h3 id="workflow">Workflow</h3>
+		<p>The 
+			<em>Workflow Description</em> element can be created under the root element of the odesign from the specific menu item.
+		</p>
+		<p>
+			<img style="width:60%" border="0" src="images/new_workflow.png"/>
+		</p>
+		<p>This action creates a blank new 
+			<em>workflow</em> element. Like many elements inside a 
+			<a href="../../Glossary.html#VSM">
+				<em>VSM</em>
+			</a>, 
+			<em>Workflow Description</em> has a mandatory 
+			<em>Identifier</em> property (which should be unique), and an optional 
+			<em>Name</em> property that has the same value as the 
+			<em>Identifer</em> if the user doesn&#8217;t customize it.
+		</p>
+		<p>Inside a 
+			<em>Workflow Description</em> element, you can create 
+			<em>Page</em> elements.
+		</p>
+		<h3 id="page">Page</h3>
+		<p>For each 
+			<em>page</em> element, a tab will be created in the workflow tile of the aird editor. The following screenshot shows an example where three pages have been defined: 
+			<em>Capture</em>, 
+			<em>Review</em>, and 
+			<em>Help</em>.
+		</p>
+		<p>
+			<img border="0" src="images/pages.png"/>
+		</p>
+		<p>The 
+			<em>Page Description</em> element can be created under the 
+			<em>Workflow Description</em> element from the specific menu item.
+			<br/>This action creates a blank new 
+			<em>page</em> element. Like the 
+			<em>Workflow Description</em>, the 
+			<em>Page Description</em> element has an 
+			<em>Identifier</em> and a 
+			<em>Name</em> property. It also has a 
+			<em>Title Expression</em> element, which will be used to get the label that will be displayed to the user. This field is an 
+			<a href="../general/Specifying_Viewpoints.html#interpreted_expressions">
+				<em>Interpreted Expression</em>
+			</a>.
+		</p>
+		<p>
+			<span style="color:red">WARNING:</span> in the current Sirius version, the 
+			<em>Title Expression</em> is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.
+		</p>
+		<p>Inside a 
+			<em>Page Description</em> element, you can create 
+			<em>Section</em> elements.
+		</p>
+		<h3 id="section">Section</h3>
+		<p>A 
+			<em>section</em> element will create a new subpart in the 
+			<em>page</em>. The following screenshot shows two sections 
+			<em>Hierarchy</em> and 
+			<em>Diagram</em> in the 
+			<em>Capture</em> page.
+		</p>
+		<p>
+			<img border="0" src="images/sections.png"/>
+		</p>
+		<p>The 
+			<em>Section Description</em> element can be created under the 
+			<em>Page Description</em> element from the specific menu item.
+			<br/>The action creates a blank new 
+			<em>section</em> element. The 
+			<em>section</em> element is similar to the 
+			<em>page</em> element: it has an 
+			<em>Identifier</em>, a 
+			<em>Name</em> and a 
+			<em>Title Expression</em> properties, which all behave like the 
+			<em>page</em> ones. 
+		</p>
+		<p>
+			<span style="color:red">WARNING:</span> in the current Sirius version, the 
+			<em>Title Expression</em> is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.
+		</p>
+		<p>Inside a 
+			<em>Section Description</em> element, you can create 
+			<em>Activity</em> elements.
+		</p>
+		<h3 id="activity">Activity</h3>
+		<p>
+			<em>Activity</em> elements allow specifiers to describe actions. It contains the same properties as 
+			<em>section</em> and 
+			<em>page</em> elements (i.e. 
+			<em>Identifier</em>, 
+			<em>Name</em> and 
+			<em>Label Expression</em>).
+		</p>
+		<p>
+			<span style="color:red">WARNING:</span> in the current Sirius version, the 
+			<em>Title Expression</em> is not interpreted correctly so you will only be able to use a string directly. This string will be used as the title.
+		</p>
+		<p>An 
+			<em>activity</em> contains a 
+			<em>begin</em> element that allows user to specify a 
+			<a href="../general/Model_Operations.html#introduction">
+				<em>Model Operation</em>
+			</a>.
+		</p>
+		<p>Once created, the 
+			<em>activities</em> will appear in the workflow tile and the user will be able to click on these, and trigger the associated 
+			<em>Model Operation</em>.
+		</p>
+		<h3 id="context">Interpreted Expressions context</h3>
+		<p>When writing an 
+			<a href="../general/Specifying_Viewpoints.html#interpreted_expressions">
+				<em>Interpreted Expression</em>
+			</a>, the user must think of the context on which the expression will be applied. For workflows related element (for instance in the Title Expressions of Pages, Sections and Activities), only one context is available, 
+			<em>self</em>. In this case, 
+			<em>self</em> will be the 
+			<code>DAnalysis</code> of the Sirius session, which is a representation of the odesign file.
+		</p>
+		<h2 id="usage">Usage</h2>
+		<p>
+			<em>Workflow</em> elements are associated automatically with the 
+			<em>viewpoints</em> defined in the same odesign file. It means that to display the defined workflows in the correct section of the aird editor, the user will have to activate at least one of the viewpoints defined in the VSM.
+		</p>
+		<p>If several 
+			<em>workflows</em> are activated and shown in the workflow tile, they are all merged in the same workflow tile.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/specifier/workflows/images/aird_editor.png b/doc/6.0.x/specifier/workflows/images/aird_editor.png
new file mode 100644
index 0000000..54ed6db
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/images/aird_editor.png
Binary files differ
diff --git a/doc/6.0.x/specifier/workflows/images/new_workflow.png b/doc/6.0.x/specifier/workflows/images/new_workflow.png
new file mode 100644
index 0000000..f84eaf7
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/images/new_workflow.png
Binary files differ
diff --git a/doc/6.0.x/specifier/workflows/images/pages.png b/doc/6.0.x/specifier/workflows/images/pages.png
new file mode 100644
index 0000000..32b56d9
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/images/pages.png
Binary files differ
diff --git a/doc/6.0.x/specifier/workflows/images/sections.png b/doc/6.0.x/specifier/workflows/images/sections.png
new file mode 100644
index 0000000..015271c
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/images/sections.png
Binary files differ
diff --git a/doc/6.0.x/specifier/workflows/images/workflow_page.png b/doc/6.0.x/specifier/workflows/images/workflow_page.png
new file mode 100644
index 0000000..e99e1d2
--- /dev/null
+++ b/doc/6.0.x/specifier/workflows/images/workflow_page.png
Binary files differ
diff --git a/doc/6.0.x/user/Sirius User Manual.html b/doc/6.0.x/user/Sirius User Manual.html
new file mode 100644
index 0000000..3a6c8be
--- /dev/null
+++ b/doc/6.0.x/user/Sirius User Manual.html
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Sirius User Manual</title>
+		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SiriusUserManual">Sirius User Manual</h1>
+		<p>This document describes how to use modelers created using Sirius. This includes graphical, tabular and hierarchical (tree) modelers. The Sirius system includes everything necessary to easily 
+			<em>define</em>  these modelers (on any standard or Domain Specific Model/Language) and then 
+			<em>use</em> them to create and manipulate actual models. This document is targeted to end users who will use already defined modelers. If you want to learn how to define your own, refer to the 
+			<a href="../specifier/Sirius%20Specifier%20Manual.html">
+				<strong>Sirius Specifier Manual</strong>
+			</a>.
+		</p>
+		<p>Note that each specific modeler will have its own set of features, and not all of the make use of all the possibilities of Sirius while others may contain custom extensions. However they all share the same common behaviors, which are described here.</p>
+		<p>You will find the following sections:</p>
+		<ul>
+			<li>
+				<a href="general/Modeling%20Project.html">
+					<strong>Modeling Project</strong>
+				</a> explains how to use the simple UI to create and manage your models and their representations.
+			</li>
+			<li>
+				<a href="general/Aird_Editor.html">
+					<strong>Aird editor</strong>
+				</a> describes the Sirius entry point editor gathering all functionalities allowing to create and manage your models and representations and to enable/disable available viewpoints in a unified easy to use UI.
+			</li>
+			<li>
+				<a href="diagrams/Diagrams.html">
+					<strong>Diagrams</strong>
+				</a> shows all the common features of graphical modelers made with Sirius.
+			</li>
+			<li>
+				<a href="sequences/Sequence%20Diagrams.html">
+					<strong>Sequence Diagrams</strong>
+				</a> are a special case of diagram with some specific behaviors which are described here.
+			</li>
+			<li>
+				<a href="tables/Tables.html">
+					<strong>Tables</strong>
+				</a> covers how to use the two kinds of tabular representations supported by Sirius: edition tables and cross-tables.
+			</li>
+			<li>
+				<a href="trees/Trees.html">
+					<strong>Trees</strong>
+				</a> describes the behavior of tree (hierarchical) editors built with Sirius.
+			</li>
+			<li>
+				<a href="properties/Properties%20View.html">
+					<strong>Properties Views</strong>
+				</a> describes behaviors specific to Sirius-defined properties views.
+			</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/diagrams/Diagrams.html b/doc/6.0.x/user/diagrams/Diagrams.html
new file mode 100644
index 0000000..bdd4ce0
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/Diagrams.html
@@ -0,0 +1,1604 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Diagrams</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="DiagramEditors">Diagram Editors</h1>
+		<p>This document explains how to use diagram editors/modelers supported by Sirius which allow to view and manipulate data in a graphical way.</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#DiagramEditors">Diagram Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#features_overview">Features Overview</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#Creatingdiagrams">Creating diagrams</a>
+							</li>
+							<li>
+								<a href="#ManagingDiagrams">Managing Diagrams</a>
+							</li>
+							<li>
+								<a href="#Movingthediagram">Moving the diagram</a>
+							</li>
+							<li>
+								<a href="#zooming_diagram_id">Zooming the diagram</a>
+							</li>
+							<li>
+								<a href="#Resizingelements">Resizing elements</a>
+							</li>
+							<li>
+								<a href="#Movingelements">Moving elements</a>
+							</li>
+							<li>
+								<a href="#Manageedges">Manage edges</a>
+							</li>
+							<li>
+								<a href="#distribute">Distribute elements</a>
+							</li>
+							<li>
+								<a href="#reset_origin">Reset Diagram or Container Origin</a>
+							</li>
+							<li>
+								<a href="#Hidingelements">Hiding elements</a>
+							</li>
+							<li>
+								<a href="#Validatingthemodel">Validating the model</a>
+							</li>
+							<li>
+								<a href="#Filters">Filters</a>
+							</li>
+							<li>
+								<a href="#Exportingimages">Exporting images</a>
+							</li>
+							<li>
+								<a href="#Batchimagesexport">Batch images export</a>
+							</li>
+							<li>
+								<a href="#PortshiftingPortDragandDrop">Port shifting - Port Drag and Drop</a>
+							</li>
+							<li>
+								<a href="#copy_paste_format">Copy/paste of format</a>
+							</li>
+							<li>
+								<a href="#diagram_element_pinning">Diagram element pinning</a>
+							</li>
+							<li>
+								<a href="#Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</a>
+							</li>
+							<li>
+								<a href="#synchronized_diagram">Synchronized/Unsynchronized diagram</a>
+							</li>
+							<li>
+								<a href="#UsingRegularExpressionstoFindDiagramElements">Using Regular Expressions to Find Diagram Elements</a>
+							</li>
+							<li>
+								<a href="#quick_outline">Quick Outline</a>
+							</li>
+							<li>
+								<a href="#styleCustomizations">Style customizations </a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#reference">Reference</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#GraphicalArea">Graphical Area</a>
+							</li>
+							<li>
+								<a href="#Palette">Palette</a>
+							</li>
+							<li>
+								<a href="#ref_tabbar">Tab-bar</a>
+							</li>
+							<li>
+								<a href="#PropertiesView">Properties View</a>
+							</li>
+							<li>
+								<a href="#Outline">Outline</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#preferences">Preferences</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#GlobalPreferences">Global Preferences</a>
+							</li>
+							<li>
+								<a href="#Appearance">Appearance</a>
+							</li>
+							<li>
+								<a href="#Printing">Printing</a>
+							</li>
+							<li>
+								<a href="#RulersAndGrid">Rulers And Grid</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius provides support for diagrammatic representations, which represent information in a graphical way. Diagrams are the main and most sophisticated type of representations supported by Sirius.</p>
+		<p>	
+			<img border="0" src="images/diagram_sample1.png"/>
+		</p>
+		<p><div style="display:none">
+			<strong>TODO</strong> Add other sample screenshots showing various kinds of diagrams.</div>
+		</p>
+		<p>A diagram editor is divided in three areas:</p>
+		<ol>
+			<li>the 
+				<span style="color:orange">main graphical</span> area, which shows the elements and supports direct interaction with them;
+			</li>
+			<li>the 
+				<span style="color:red">palette</span>, which gives access to additional tools (for example creation tools to add new elements to the diagram);
+			</li>
+			<li>the 
+				<span style="color:green">
+					<em>tabbar</em>
+				</span> at the top of the graphical area, which provides additional, more global operations.
+			</li>
+		</ol>
+		<p>	
+			<img border="0" src="images/diagram_sample_annotated.png"/>
+		</p>
+		<p>In addition to these areas which are immediately visible inside the diagram editor, it is also possible to interact with the diagram and its elements through the 
+			<em>Properties View</em> and through 
+			<em>contextual menus</em> available on the graphical elements themselves and on the diagram&#8217;s background. When the current editor is a Sirius diagram, the Eclipse 
+			<em>Outline</em> view shows a graphical overview of the diagram which can be used to navigate inside it if the whole diagram is not visible in the main area.
+		</p>
+		<p>This document is structured in three parts. 
+			<a href="#features_overview">The first part</a> gives an overview of all the main features, and is organized from a functional perspective. For example it contains a section which explains the different ways available to control which elements are hidden or not on a diagram, with links to the corresponding parts of the reference section. 
+			<a href="#reference">The second part</a> is a reference and describes all the features available by looking at each of the main areas of the diagram editors (the palette, the tab-bar etc.). Finally, 
+			<a href="#preferences">the last part</a> gives a reference on all the preferences and configuration parameters which can affect the look and feel of diagrams.
+		</p>
+		<p>Note that as always with Sirius, some of the features described below may or may not be available with all specific kinds of diagrams. It all depends on which features the person who 
+			<em>specified</em> (configured) the diagram decided to support. For example, the names and effect of the tools available in the palette will be different for each graphical modeler. Refer to the documentation of the specific modeler if available for more precise details.
+		</p>
+		<h2 id="features_overview">Features Overview</h2>
+		<h3 id="Creatingdiagrams">Creating diagrams</h3>
+		<p>Creating new diagrams works in the same as for any other kinds of representation in Sirius. There are three main ways:</p>
+		<ol>
+			<li>In the 
+				<em>Model Explorer</em> view, find the semantic element you want to create a diagram on (it must be part of a semantic model inside a 
+				<em>Modeling Project</em>), and in the context menu (available with a right click), select the 
+				<em>New representation...</em> sub-menu. It will give you a list of all the representations which can be created on this object, some of which may be diagrams (there may be other kinds of representations available too, like tables for example). Just select the type of diagram you want, and enter the name of the new diagram in the dialog box which appears then. The newly created diagram will automatically open. 
+			</li>
+			<li>In the 
+				<em>Model Explorer</em> view, right-click on the 
+				<em>Modeling Project</em> which contains the semantic element to represent and select 
+				<em>Create Representation</em>. In the wizard which appears, first select the type of diagram to create (if diagrams are available), and in the next page, select the semantic element to create it on. Only the semantic elements which are compatible with the selected diagram type will be available. Just select the element you want to represent, finish the wizard, and enter the name of the new diagram in the dialog box which appears then. The newly created diagram will automatically open.
+			</li>
+			<li>Finally, on some representations (diagrams or other kinds), it may be possible to create new diagrams directly from the context menu of the element on which you want to create the diagram. If this is possible (this depends on the representations' configuration), it will be available in the 
+				<em>Navigate</em> category of the element&#8217;s context menu, with a name starting with 
+				<em>New detail:</em>. Once again, after selecting the type of diagram to create, enter the name of the new diagram in the dialog box which appears. The newly created diagram will automatically open.
+			</li>
+		</ol>
+		<p>Note that the set of diagrams you can create will depend both on the type of the selected element and on the set of viewpoints which are currently enabled.</p>
+		<p>When you create a new diagram, unless you have unchecked the 
+			<a href="#synchronized_diagram">
+				<em>Synchronized mode for new diagrams</em>
+			</a> preference, it will be initially populated with graphical elements according to its configuration and the current state of the semantic model(s) it represent. If the preference is checked, the diagram will be created empty, and only the elements you ask explicitly to be represented (through tools, which will be specific to each kind of diagram) will appear on the diagram.
+		</p>
+		<h3 id="ManagingDiagrams">Managing Diagrams</h3>
+		<p>Opening existing diagrams and renaming or deleting them works exactly as for any other kind of representation. Refer to the general documentation about the 
+			<em>Modeling Project</em> UI for details.
+		</p>
+		<h4 id="RulersGrid">Rulers &amp; Grid</h4>
+		<p>Several behaviors concerning the diagram elements editing is conditioned by properties of the diagram accessible through the 
+			<em>Rulers &amp; Grid</em> tab of the 
+			<em>Properties</em> view of the diagram.
+			<br/>
+			<img border="0" src="images/properties_view_rulers_and_grid_tab.png"/>
+		</p>
+		<h5 id="ShowRuler">Show Ruler</h5>
+		<p>
+			<em>Display/Show Ruler</em>: Display an horizontal and vertical ruler according to 
+			<em>Measurement/Ruler Units</em> property.
+		</p>
+		<h5 id="ShowGrid">Show Grid </h5>
+		<p>
+			<em>Display/Show Grid</em>: Display a grid in background of the diagram according to 
+			<em>Measurement/Grid Spacing</em> and 
+			<em>Grid Line</em> properties. This grid can be in front of all figures if the property 
+			<em>Grid In Front</em> is enabled.
+		</p>
+		<h5 id="Snaptogrid">Snap to grid</h5>
+		<p>Capability to allow edit parts to snap to the grid when editing (during creation, moving or resizing). It is also possible to have connection bendpoints snap to it. Grid snapping and visibility are two distinct properties, and it is possible to enable one without the other.</p>
+		<h5 id="snap_to_shapes">Snap to shapes</h5>
+		<p>The 
+			<em>Snap to shapes</em> feature allows you to quickly align parts being dragged or resized to other parts in the diagram or that share the same parent (e.g: edit parts inside a compartment can only snap to each other). The snap is effective on top, bottom, right, left and center of the figure. Feedback is shown in the form of a gray line when a part is being attached to another part.
+			<br/>This drag part of this feature is also available on border nodes since Sirius 4.1.0. Note: For border nodes, the snap is effective only on the center of the figure. This is why the resize part is not handled for border nodes.
+			<br/>
+			<img border="0" src="images/snap_to_shape.png"/>
+		</p>
+		<p>By pressing the <kdb>F4</kdb> shortcut key, it is possible to temporarily enable the snap to all shapes currently visible on the diagram. Some screenshots of this feature are shown below.
+			<br/>
+			<img border="0" src="images/snap_to_all_shapes.png"/>
+			<br/>
+			<img border="0" src="images/snap_to_all_shapes_2.png"/>
+		</p>
+		<h3 id="Movingthediagram">Moving the diagram</h3>
+		<p>When the diagram is larger than the editor area, you can move it in all directions by pressing the middle-button and dragging the mouse (keeping the button pressed).</p>
+		<p><video height="240" src="videos/moveInAllDirections.mp4" target="_self" autoplay="autoplay" loop="loop"></video></p>
+		<h3 id="zooming_diagram_id">Zooming the diagram</h3>
+		<p>The zoom on a diagram can be done by using the tools in the palette like explained in 
+			<a href="#standardToolId">Chapter Standard Tools</a>.
+			<br/>Or by using the combination of the keyboard key 
+			<em>CTRL</em> and the mouse wheel. Since Sirius 4.1.0, in this case, the zoom is done on the mouse location instead of the center of the editor.
+		</p>
+		<h3 id="Resizingelements">Resizing elements</h3>
+		<p>If the specifier has authorized it, it is possible to resize a shape by dragging them until they are the size that you want.</p>
+		<p>There are specific shortcuts to change the resize behavior:</p>
+		<ul>
+			<li>CTRL (or ALT for Mac users): Centered resize (expands the shape on both opposite sides)</li>
+			<li>SHIFT: Resize that keeps the ratio</li>
+			<li>ALT (or CTRL for Mac users): Resize without snap (temporarily disables the snap during the resize if it is activated). </li>
+			<li>F3: Resize with children location relative to the parent. If the shape is resized to the left, upwards, or both, the children (contained nodes for container and border nodes for all shapes) are moved with the same offset than the resize.</li>
+			<li>F4: Resize with snap to all shapes (if the 
+				<a href="#snap_to_shapes">Snap to shapes</a> is already activated for the current diagram)
+			</li>
+		</ul>
+		<h4 id="Compartments">Compartments</h4>
+		<p>The resize of compartments might evolve in future versions. The current behavior is to redistribute space between adjacent compartments and to resize the first/last compartment when the compartmented container is resized from top/bottom for a vertical stack and left/right for an horizontal one.</p>
+		<p>When resizing a compartmented container or a compartment from the top or from the left, the F3 shortcut configures the same behaviors than on standard containers (see previous section). </p>
+		<p>On 
+			<em>experimental</em> structures of containers with compartmented compartments, the F3 shortcut also allows to disable the resize propagation to manually correct the computed layout and remove empty space (
+			<em>experimental</em>). This might occur when there are several levels of compartments without the same number of compartments on each level. The corrective resize can be done on the last compartments of each compartmented container (from bottom for vertical stacks and from right for horizontal stacks).
+		</p>
+		<h3 id="Movingelements">Moving elements</h3>
+		<p>There are specific shortcuts to change the move behavior:</p>
+		<ul>
+			<li>SHIFT: Constrained move (only vertical or horizontal move is authorized at once).</li>
+			<li>ALT (or CTRL for Mac users): Ignore snap while dragging (temporarily disables the snap during the move if it is activated).</li>
+			<li>F3: Move the edge source and target if pressed during the edge move. See the &#8220;Move edge group&#8221; subsection below for more details. </li>
+			<li>F4: Move with snap to all shapes (if the 
+				<a href="#snap_to_shapes">Snap to shapes</a> is already activated for the current diagram)
+			</li>
+		</ul>
+		<h3 id="Manageedges">Manage edges</h3>
+		<h4 id="Snapbackedgelabels">Snap back edge labels</h4>
+		<p>All visible edge labels can be snapped back to their default position by using the action 
+			<em>Snap back label(s)</em>. This action is available within the edge contextual menu under the format section 
+			<em>Format/Snap back label(s)</em>:
+			<br/>
+			<img border="0" src="images/snap-back-label.png"/>
+		</p>
+		<p>The result of this action is visible here: 
+			<br/>
+			<img border="0" src="images/snapped-back-label.png"/>
+		</p>
+		<p>This action is also available individually for each visible label of an edge. To use it, you have to use the action 
+			<em>Snap Back</em> under the label contextual menu 
+			<em>Format/Snap Back</em>:
+			<br/>
+			<img border="0" src="images/snap-back-label-from-label.png"/>
+		</p>
+		<p>The result of this action is visible here: </p>
+		<p>
+			<img border="0" src="images/snapped-back-label-from-label.png"/>
+		</p>
+		<h4 id="Movebendpoints">Move bend-points</h4>
+		<p>It is possible to snap the bend-points to all shapes by pressing <kdb>F4</kdb> shortcut key during the move. This feature is only available if the 
+			<a href="#snap_to_shapes">Snap to shapes</a> is already activated for the current diagram. As for 
+			<em>Snap to grid</em>, and unlike to snap for node, there is no guide drawn during the move.
+		</p>
+		<h4 id="RemoveBendpoints">Remove Bend-points</h4>
+		<p>You can define some bend-points (or inflection points) on an edge. It is possible to remove bend-points to retrieve simple edge. 
+			<br/>For oblique edges, all bend-points will be removed to retrieve the original Straight edge.
+		</p>
+		<p>The edge state just after its creation:
+			<br/>
+			<img border="0" src="images/beforeBendpoints.png"/>
+		</p>
+		<p>The user defines some bend-points:
+			<br/>
+			<img border="0" src="images/withBendpoints.png"/>
+		</p>
+		<p>The user executes the &#8220;Remove Bend-points&#8221; action:
+			<br/>
+			<img border="0" src="images/afterRemoveBendpoints.png"/>
+		</p>
+		<p>For rectilinear edges, bend-points will be removed to retrieve a rectilinear edge with source and target connection points centered on the middle of the source or target node appropriate side. One additional  bend-point is inserted if source side and target side are in opposite direction. Two intermediates bend-points are inserted if source side and target side are in the same direction.
+			<br/>If number of bend-points can not be reduced, remove action will be inefficient (for example, case when the rectilinear edge is straight).
+		</p>
+		<p>The rectilinear edge after defining some bend-points:
+			<br/>
+			<img border="0" src="images/rectilinearWithBendpoints.png"/>
+		</p>
+		<p>The user executes the &#8220;Remove Bend-points&#8221; action:
+			<br/>
+			<img border="0" src="images/rectilinearAfterRemoveBendpoints.png"/>
+		</p>
+		<p>This action is available within the edge context menu or by using the shortcut &#8220;Ctrl&#8221; + &#8220;Shift&#8221; + &#8220;-&#8221; and it is not available on edges with a &#8220;Tree&#8221; routing style.</p>
+		<h4 id="straighten_an_edge">Straighten edges</h4>
+		<h5 id="Straightenasingleedge">Straighten a single edge</h5>
+		<p>There are eight actions to straighten an edge, i.e. to transform an edge to an horizontal, or vertical, straight edge (with only one starting point and one ending point).
+			<br/>If the edge is connected to a border node, the border node is moved too.
+		</p>
+		<p>These actions can be triggered on edge contextual menu 
+			<em>Layout/Straighten</em>: 
+		</p>
+		<p>
+			<img border="0" src="images/straightenToMenu.png"/>
+		</p>
+		<p>and also in the tabbar if at least one edge is selected: </p>
+		<p>
+			<img border="0" src="images/straightenToTabbarButton.png"/>
+		</p>
+		<p>There are two distinct kinds of straightening actions. The following examples show how they can be used.</p>
+		<p>Example for horizontal cases of result with the same initial state (the moved nodes are in red): </p>
+		<ul>
+			<li>Result after 
+				<em>Straighten to top</em> action: 
+				<img border="0" src="images/straightenToTop.png"/>
+			</li>
+			<li>Result after 
+				<em>Straighten with left side pinned</em> action: 
+				<img border="0" src="images/straightenWithLeftPinned.png"/>
+			</li>
+			<li>Result after 
+				<em>Straighten with right side pinned</em> action: 
+				<img border="0" src="images/straightenWithRightPinned.png"/>
+			</li>
+			<li>Result after 
+				<em>Straighten to bottom</em> action: 
+				<img border="0" src="images/straightenToBottom.png"/>
+			</li>
+		</ul>
+		<p>Example of initial state of vertical cases: 
+			<img border="0" src="images/straightenVerticalInitialState.png"/>
+		</p>
+		<ul>
+			<li>Result after 
+				<em>Straighten to left</em> or 
+				<em>Straighten with bottom side pinned</em> action: 
+				<img border="0" src="images/straightenToRight.png"/>
+			</li>
+			<li>Result after 
+				<em>Straighten to right</em> or 
+				<em>Straighten with top side pinned</em> action: 
+				<img border="0" src="images/straightenToLeft.png"/>
+			</li>
+		</ul>
+		<p>The action can be disabled (grayed menu) in some conditions:</p>
+		<ul>
+			<li>The action is not possible because it does not respect the source or target node boundaries.</li>
+			<li>The source and the target of the edge are not on the same &#8220;axis&#8221; (left and right sides, or, top and bottom sides).</li>
+			<li>After the action, the border node (source or target) would be overlapped by another border node.</li>
+			<li>A straighten action will be disabled if the 
+				<a href="../../specifier/diagrams/Diagrams.html#edgecentering">edge centering</a> constraint will be violated. For oblique edges, the action is disabled if at least one side is centered. For rectilinear edges, the action is disabled if the moved side is centered. There is an exception to this rule when the edge centering is activated on both source and target, and both source and target are border nodes.
+			</li>
+			<li>The source or the target of the edge is another edge.</li>
+			<li>The source and the target is the same element.</li>
+		</ul>
+		<p>The action is available (menu is displayed) if the selection contains at least one edge (note, labels and text attachments are not considered as edges). The menu will show all actions available for all edges in the selection. So if a straighten to top is available on one edge and straighten to left on another, both action will be available. Their execution will only affects the edges compatible with it.</p>
+		<h5 id="Straightenmanyedges">Straighten many edges</h5>
+		<p>The straighten actions can be triggered on one edge but also in case of a multi-selection containing more than one edges.</p>
+		<p>In this case the straighten actions available will be the union of actions available for each edges of the selection. I.e if an edge can be only straighten to top and another edge in the selection can be only straighten to top, then available actions on the selection of both edges will be both the top and left actions.</p>
+		<p>When executing a straighten action, only edges from the selection that can be affected by this action will be impacted (if a constraint prevent an edge to be straighten to the direction of the executed action, then it is untouched). </p>
+		<h4 id="move_edge_group">Move edge group</h4>
+		<p>In specific cases, we can find edges connected to border nodes. For example in a diagram representing data flows, exchanges are connected to port in and port out. When the user wants to move an exchange on a layouted diagram, he has to move the source port, then the target port and possibly move some bendpoints of the edge.
+			<br/>This feature aims to move the group {edge, labels, ports} in a single 
+			<i>drag like</i> operation when using the F3 shortcut and drag/move the edge. The F3 key has no effect if you attempt a reconnect by moving the first or last edge end.
+		</p>
+		<p>Example when activating the tool and moving the second edge toward the top:
+			<br/>
+			<img border="0" src="images/moveEdgeGroup1.png"/>
+		</p>
+		<p>The final result:
+			<br/>
+			<img border="0" src="images/moveEdgeGroup2.png"/>
+		</p>
+		<p>The edge group moving is authorized only if these conditions are met:</p>
+		<ul>
+			<li>A border node as source.</li>
+			<li>A border node as target.</li>
+			<li>Source node has only one connection: the moved edge.</li>
+			<li>Target node has only one connection: the moved edge.</li>
+			<li>Source and target are on the same &#8220;axis&#8221;:
+				<ul>
+					<li>located on west or east sides of their respective parent (could be the same).</li>
+					<li>located on north or south sides of their respective parent (could be the same).</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Examples of authorized moving:
+			<br/>
+			<img border="0" src="images/compoundmoves2.png"/>
+		</p>
+		<p>Furthermore, since Sirius 4.1, it is possible to move several edge groups at once. However, the selection needs to validate the following rules:</p>
+		<ul>
+			<li>each selected elements must be an edge with border nodes as source and target.</li>
+			<li>each edge groups must be horizontal (source and target on the west or east border) or vertical (source and target on the north or south border).</li>
+			<li>each edge groups must remain in its source and target parent bounds at the end of the move. Therefore, the move is not limited by the primary selection only (the edge that is grabbed to move the whole selection) but by each edge group.</li>
+		</ul>
+		<p>Note that an edge group new location corresponding to the former location of another edge group in the selection is valid.</p>
+		<h4 id="edge_label_attachment">Display attachment link between edge and its labels</h4>
+		<p>It is possible to display an attachment link between an edge and its labels when edge or label is selected. This is not the default behavior but it can be activated by a preference in 
+			<em>Sirius/Sirius Diagram/Connections</em> preference page.
+		</p>
+		<p>	
+			<img border="0" src="images/edgeLabelAttachment_preference.png"/>
+		</p>
+		<p>If the edge is selected, one attachment is displayed for all associated labels. </p>
+		<p>	
+			<img border="0" src="images/edgeLabelAttachment_edgeSelected.png"/>
+		</p>
+		<p>If a label is selected, only the attachment between the edge and this label is displayed.</p>
+		<p>	
+			<img border="0" src="images/edgeLabelAttachment_labelSelected.png"/>
+		</p>
+		<h3 id="distribute">Distribute elements</h3>
+		<p>Four new actions allow to distribute shapes: </p>
+		<p>
+			<img border="0" src="images/distribute_initialState.png"/>
+		</p>
+		<ul>
+			<li>Distribute centers horizontally: Distributes the selected shapes so that the gap between horizontal centers of each selected shapes will be the same.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/distribute_Centers.png"/>
+		</p>
+		<ul>
+			<li>Distribute gaps horizontally: Distributes the selected shapes so that the gap between the left side and the right side of each consecutive shapes will be the same.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/distribute_WithUniformGap.png"/>
+		</p>
+		<ul>
+			<li>Distribute centers vertically: Distributes the selected shapes so that the gap between vertical centers of each selected shapes will be the same.</li>
+		</ul>
+		<ul>
+			<li>Distribute gaps vertically: the gap between the bottom side and the top side of each consecutive shapes will be the same.</li>
+		</ul>
+		<p>These new actions are also available in contextual menu 
+			<em>Format/Distribute</em> or in menu bar _ Diagram/Distribute_.
+		</p>
+		<p>Only the top level shapes of the selection are retained for these actions: if inner shapes, border labels or edges are selected, they are ignored. 
+			<br/>These actions are enabled only if the selected shapes have the same direct parent. At least 3 shapes should be selected to enable distribute actions.
+			<br/>For border nodes, they will be enabled only if all selected border nodes have the same parent and are on the same axis (top and bottom sides for horizontal actions, left and right for vertical actions). The overlap is forbidden for border nodes, so in some conditions (location already used), these actions may not have accurate results.
+		</p>
+		<h4 id="Firstandlastshapes">First and last shapes</h4>
+		<p>For all distribute actions, the first and the last shapes do not move. The first and last shapes do not depend on the selection order. They depend on the location of each selected shapes and the chosen action.</p>
+		<p>For horizontal distribution with uniform gaps:</p>
+		<ul>
+			<li>the first shape is the leftmost one (with the minimum x location). If several shapes have the same x location, the highest one is the first.</li>
+			<li>the last shape is the rightmost one (with the right side with the maximum x coordinate). If several shapes are aligned to the right, the lowest one is the last.</li>
+		</ul>
+		<p>For horizontal centered distribution:</p>
+		<ul>
+			<li>the first shape is the leftmost one (with its center at the minimum x coordinate). If several shapes are aligned on center, the one with the highest center is the first.</li>
+			<li>the last shape is the rightmost one (with its center at the maximum x coordinate). If several shapes are aligned by center, the one with the lowest center is the last.</li>
+		</ul>
+		<p>For vertical distribution with uniform gaps:</p>
+		<ul>
+			<li>the first shape is the highest one (with the minimum y location). If several shapes have the same y location, the leftmost one is the first.</li>
+			<li>the last shape is the lowest one (with the bottom side with the maximum y coordinate). If several shapes are aligned to the bottom, the rightmost one is the last.</li>
+		</ul>
+		<p>For vertical centered distribution:</p>
+		<ul>
+			<li>the first shape is the highest one (with its center at the minimum y coordinate). If several shapes are aligned on middle, the leftmost one is the first.</li>
+			<li>the last shape is the lowest one (with the bottom side with the maximum y coordinate). If several shapes are aligned by middle, the rightmost one is the last.</li>
+		</ul>
+		<h3 id="reset_origin">Reset Diagram or Container Origin</h3>
+		<p>This action is available within the diagram or containers contextual menu (&#8220;Reset Origin&#8221;) or via &#8220;M1&#8221; + &#8220;HOME&#8221; shortcut.
+			<br/>The diagram (or container) bounds (the rectangle formed by the highest, the leftmost, the lowest and the rightmost elements) can have a negative origin or can be shifted toward the bottom-right with a blank zone at the top-left.
+			<br/>This action aims to move all diagram (or container) elements so that the diagram (or container) retrieves its origin while keeping the element layout.
+		</p>
+		<p>This action can be launched on several containers at same time.</p>
+		<p>This is an example of a diagram with a blank zone between the origin location and the figures bounds:
+			<br/>
+			<img border="0" src="images/reset_origin_before.png"/>
+		</p>
+		<p>After applying the action, the diagram figures are moved toward the top-left origin location:
+			<br/>
+			<img border="0" src="images/reset_origin_after.png"/>
+		</p>
+		<h4 id="Specificcases">Specific cases</h4>
+		<ul>
+			<li>Elements hidden by the user are not considered to compute the shift size but are shifted as the other shapes. That means if an hidden element is located at the top-left corner, the diagram coordinates will turn negative if the user reveals it after having executed the &#8220;Reset Origin&#8221; action.</li>
+			<li>Edges hidden because of a masked source or target are taken in account to compute the diagram bounds:</li>
+		</ul>
+		<p>
+			<img border="0" src="images/reset_origin_visible_edge.png"/>
+			<br/>After having scrolled the container, one of the edge end is masked so the edge is hidden. This one will be considered to compute the diagram bounds:
+			<br/>
+			<img border="0" src="images/reset_origin_masked_edge.png"/>
+		</p>
+		<h3 id="Hidingelements">Hiding elements</h3>
+		<p>Every graphical element on a diagram except compartments can be hidden explicitly. To do that, simply right click on the graphical element (or elements if you want to hide several elements at once) you want to hide. Then, choose 
+			<i>Show/Hide</i> / 
+			<i>Hide Element</i>. The graphical element is now hidden from view.
+		</p>
+		<p>The icon in the tool-bar changes showing a &#8220;check box&#8221; on it as soon as at least one element has been hidden, to remind you that what you see is not a complete view of the model being represented:</p>
+		<p>	
+			<img border="0" src="images/diagram_editor11.png"/>
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor12.png"/>
+		</p>
+		<p>The element can also be hidden from the tool-bar using the 
+			<i>Hide element</i> button.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor11_tabbar.png"/>
+		</p>
+		<p>It is also possible to hide an element from the outline view. Choose outline mode to see the semantic model in a tree viewer. You can now right click on an element and choose 
+			<em>Hide element</em>.
+		</p>
+		<p>There are two ways to reveal hidden elements:</p>
+		<ul>
+			<li>on the outline view, in outline mode, you can see every model element. The elements that are hidden have their names displayed in italic style and their icon is decorated with a yellow dot in the top left corner. To reveal one of this element, simply right click on it and choose 
+				<i>Show element</i>.
+			</li>
+		</ul>
+		<p>	
+			<img border="0" src="images/diagram_editor13.png"/>
+		</p>
+		<ul>
+			<li>Show/Hide elements using a tree viewer</li>
+		</ul>
+		<p>When there is no selected element on the diagram, the tab bar provides the button 
+			<em>Show/Hide</em>.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_show_hide_dialog1.png"/>
+		</p>
+		<p>This button opens a dialog to manage the shown and hidden elements on the diagram with a tree view, using various selection buttons (Check all, Uncheck all, Expand All and Collapse all) and various filters (All element, only checked elements and only unchecked elements).</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_show_hide_dialog2.png"/>
+		</p>
+		<p>Some elements might be grayed in this tree (compartments, Sequence diagram elements, ..), their selection will have no effect. Their grayed status indicates that they can not be hidden from the wizard but their children might support it.</p>
+		<p>You can also use 
+			<a href="#UsingRegularExpressionstoFindDiagramElements">regular expressions</a> to easily retrieve the elements you want to hide/reveal. 
+		</p>
+		<h4 id="Hidinglabels">Hiding labels</h4>
+		<p>It is also possible to hide the label of graphical elements (see the node labels section for nodes supported case).</p>
+		<p>The approach is the same as for other elements, except that there are a specific menus named &#8220;Hide/Show Label&#8221;. It is possible to call this menu directly on the label or on its element.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_hide_label_1.png"/>
+		</p>
+		<p>The tool-bar button 
+			<em>Hide label</em> can also be used.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_hide_label_tabbar.png"/>
+		</p>
+		<p>It is also possible to hide or reveal a label from the outline view, in outline mode. The elements whose label is hidden have their names displayed in italic style and their icon is decorated with a 
+			<i>L</i> in the bottom right corner. To reveal a label, simply right click on it and choose 
+			<i>Show label</i>.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_hide_label_outline.png"/>
+		</p>
+		<p>When there is no selected element on the diagram, 
+			<em>Show/Hide</em> tab bar button allows to manage the labels too.
+		</p>
+		<h5 id="ContainersListsandcompartmentslabels">Containers, Lists and compartments labels</h5>
+		<p>Labels of containers, lists and compartment might be hidden by default. You can choose to display them using the outline, contextual menu or 
+			<em>Show/Hide</em> tree view.
+		</p>
+		<h5 id="Nodeslabels">Nodes labels</h5>
+		<p>It is possible to hide the node label only if it is on the border of its node. Those nodes can have their label hidden by default. You can choose to display them using the outline, contextual menu or 
+			<em>Show/Hide</em> tree view.
+		</p>
+		<h5 id="Edgeslabels">Edges labels</h5>
+		<p>It is also possible to hide the edge labels. </p>
+		<p>The approach is the same than the nodes labels with the specific menus &#8220;Hide/Show Label&#8221; called from the edge or its label.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_hide_edge_label_1.png"/>
+		</p>
+		<p>Note that if a label of an edge is hidden (center, begin or end), all the labels of the edge will be hidden. Same behavior for the reveal action, if a label of an edge is revealed (center, begin or end), all the labels of the edge will be revealed.</p>
+		<h4 id="HidingiconsoflabelsonShapesorConnectors">Hiding icons of labels on Shapes or Connectors</h4>
+		<p>When working on 
+			<em>big</em> diagrams, you may want to hide the icons of the labels on all shapes or connectors, in order to improve the readability of your representations. To do so, open the Eclipse Preferences (
+			<em>Window</em>/ 
+			<em>Preferences</em>), and select the &#8220;Appearance&#8221; category (
+			<em>Sirius</em>/ 
+			<em>Sirius Diagram</em>/ 
+			<em>Appearance</em>).
+		</p>
+		<p>The options 
+			<em>"Hide label icons on shapes"</em> and 
+			<em>"Hide label icons on connectors"</em> will allow you to do so.
+		</p>
+		<p>By default, no shapes neither connectors are hidden :</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_hide_label_icon_1.png"/>
+		</p>
+		<p>If you check both  "
+			<em>Hide label icons on shapes</em>" and  "
+			<em>Hide label icons on connectors</em>", next time you will open your diagram, all label icons of shapes and connectors will be hidden :
+		</p>	
+		<img border="0" src="images/diagram_editor_hide_label_icon_2.png"/>
+		<h4 id="Collapsingcompartments">Collapsing compartments</h4>
+		<p>When working with compartmented containers, you may want to collapse the compartments. Select a compartment and collapse/expand it using the handle visible on the following illustration. The collapse handle&#8217;s location varies depending on the label alignment to avoid overlapping (depending on the list elements alignment for a list with an hidden label).</p>
+		<p>
+			<img border="0" src="images/compartments_collapse3.png"/> 
+		</p>
+		<h3 id="Validatingthemodel">Validating the model</h3>
+		<p>On a diagram, you can have validation rules. These rules were previously created by the architect who created the diagram&#8217;s configuration. As a user of the modeler, you can validate these rules on your model.</p>
+		<p>To validate the rules open the context menu of the diagram itself (by right-clicking on its background) and choose the 
+			<i>Validate</i> action.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor16.png"/>
+		</p>
+		<p><div style="display:none">
+			<br/>TODO fix the family.odesign validation rules on Persons diagram before update this screenshot
+			<br/>	
+			<img border="0" src="images/diagram_editor17.png"/>
+			<br/></div>
+		</p>
+		<h3 id="Filters">Filters</h3>
+		<p>Filters are created by the architect who created the diagram&#8217;s configuration. Applying a filter on a diagram will hide the graphical elements which match the filter&#8217;s criterion. To apply a filter, open the 
+			<a href="#ref_tabbar_diagram">
+				<em>Filters</em> menu in the tab-bar
+			</a> to select which filters should be enabled or disabled.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor18.png"/>
+		</p>
+		<p>To see more easily if one or more filters are activated, the icon in the tab-bar changes, showing a small check mark if at least one filter is activated.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_filter_toolbar_activated.png"/>
+		</p>
+		<h3 id="Exportingimages">Exporting images</h3>
+		<p>You can export a diagram to an image file. To do that right-click on the diagram and choose the menu  
+			<i>Export diagram as image.</i> or on this icon present in the tab-bar 
+			<img border="0" src="images/diagram_export_image_tabbar.png"/> . After selecting the file path, you can choose the image format and if you want to overwrite an existing file without warning.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor19.png"/>
+		</p>
+		<p>On the first export of diagram as image the name is set by default with the representation name. After there is an history to select the last export.</p>
+		<p>	
+			<img border="0" src="images/diagram_export_history.png"/>
+		</p>
+		<p>If you do not specify the file extension, the extension is determined from the selected image format. You can choose the directory in which to create the file using the 
+			<em>Browse</em> button.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_export_one_image.png"/>
+		</p>
+		<p>If you enter a path with an unsupported extension the file path is created with the wrong extension with selected extension in image format append to.</p>
+		<p>	
+			<img border="0" src="images/diagram_export_wrong_extension.png"/>
+		</p>
+		<p>Two checkboxes are available to customize the export:</p>
+		<ul>
+			<li>
+				<em>Export decorations</em>: if checked, some decorations which can appear in diagram elements and are declared as transient in the modeler definition (for example validation errors) are exported in the image.
+			</li>
+			<li>
+				<em>Export to HTLM</em>: if checked, the export will produce a 
+				<code>.html</code> file which references the exported image in addition to the image file itself.
+			</li>
+		</ul>
+		<p>Besides, an image size control is available to determine the size level of exported diagrams. If 
+			<em>Image Size</em> is set to 
+			<em>Max</em>, diagram will be exported with the maximum possible size (limited by system-specific limitations) while keeping its aspect ratio. This can produce higher resolution images (but also larger files and so long export time). If 
+			<em>Image Size</em> is set to level 
+			<em>Nominal</em>, diagram will be exported with nominal size (quality will be lower but export time will be shorter).
+		</p>
+		<p>For example, on this Family diagram:
+			<br/>	
+			<img border="0" src="images/exportSampleSource.png"/>
+			<br/>You can observe these different quality, file size and time generation with nominal size, max size and between both of them:
+			<br/>	
+			<img border="0" src="images/exportSample.png"/>
+		</p>
+		<p>
+			<em>
+				<strong>Note:</strong>
+			</em> Due to some technical limitations, not all export format support all the features of diagrams. For example, exporting to PNG files will not show gradients on diagram elements. The JPG format is the one which currently produces the best result in terms of fidelity to what you see in the diagram editors. 
+		</p>
+		<h3 id="Batchimagesexport">Batch images export</h3>
+		<p>It is possible to export all diagram of a representations file at once. To do that, select your representations file (
+			<code>aird</code> file) and right-click on it. Then choose the menu 
+			<i>Export diagrams as image...</i>. On the opened pop-up select the path of the folder where the images will be exported.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor20.png"/>
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor21.png"/>
+		</p>
+		<p>The same functionality is available on every semantic elements which has representations from the 
+			<em>Model Explorer</em> view. In this case, only the diagrams of the selected element will be exported.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor20b.png"/>
+		</p>
+		<h3 id="PortshiftingPortDragandDrop">Port shifting &#8211; Port Drag and Drop</h3>
+		<p>Drag and drop is a feature which can be enabled by the specifier in the Viewpoint Specification Model. It is turned off by default.</p>
+		<h4 id="Selectionhandles">Selection handles</h4>
+		<p>If the resize of the port is disabled by the specifier in the Viewpoint Specification Model, there is 4 selection handles to indicate the selection, one at each corner of the figure. Only the shifting is authorized.</p>
+		<p>
+			<img border="0" src="images/port_selection_handles1.png"/> 
+			<img border="0" src="images/port_selection_handles2.png"/>
+		</p>
+		<p>If the resize of the port is enabled by the specifier in the Viewpoint Specification Model, there is more than 4 selection handles to indicate the selection. To shift the port, you should not click on one of this handles.</p>
+		<p>
+			<img border="0" src="images/port_selection_handles3.png"/> 
+			<img border="0" src="images/port_selection_handles4.png"/>
+		</p>
+		<h4 id="Portshiftinganddraganddrop">Port shifting and 'drag and drop'</h4>
+		<p>Ports are special shapes because they are linked to a parent container, but are sometimes laid out over two containers.</p>
+		<p>When you try to shift a port, if you click over the port at a location where it is not over the parent container, a virtual area is built around the parent container. This virtual area is not visible and its size is calculated to cover the container and the port itself.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_dnd01.png"/> 
+			<img border="0" src="images/diagram_editor_dnd02a.png"/> 	
+			<img border="0" src="images/diagram_editor_dnd03a.png"/>
+		</p>
+		<p>The port shifting is protected against unexpected drag and drop in the container above mouse location.</p>
+		<p>If you want to drag and drop the port in a new container, just drag the port with the mouse beyond this virtual area (e.g., on screenshots, drag farther than right edge of port).</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_dnd01.png"/> 
+			<img border="0" src="images/diagram_editor_dnd02b.png"/> 	
+			<img border="0" src="images/diagram_editor_dnd03b.png"/>
+		</p>
+		<p>The port is dropped in the container above the mouse location and linked to its closest edge.</p>
+		<h3 id="copy_paste_format">Copy/paste of format</h3>
+		<p>It is possible to duplicate format of diagram elements, that is to say to replicate mutual organization and style of diagram elements from one diagram to another. This replication only applies to the same semantic elements between diagrams.
+			<br/>By default, this copy/paste replicates the layout (x, y width and height) AND the style (colors, font, ...).
+		</p>
+		<p>But it is also possible to only 
+			<em>Paste Layout</em> or only 
+			<em>Paste Style</em>. The initial copy is always a 
+			<em>Copy Format</em> in all cases.
+		</p>
+		<p>The next picture shows a partial view of a diagram. The tool to replicate the format is called &#8220;Copy Format&#8221; and can be activated from the tab-bar when the diagram elements are selected, from the contextual menu (see 
+			<em>Edit</em> section) or through the 
+			<em>Ctrl+Alt+Shift+C</em> shortcut. In this picture, format of John Doe and Earvin Johnson persons will be replicated to another diagram.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_copy_format.png"/>
+		</p>
+		<h4 id="PasteLayout">Paste Layout</h4>
+		<p>The next picture shows the diagram where the layout will be replicated. The tool to paste layout is called &#8220;Paste Layout&#8221; and can be activated from the tab-bar or from the contextual menu (see 
+			<em>Edit</em> section).
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_layout1.png"/>
+		</p>
+		<p>The layout applies to John Doe and Earvin Johnson and is exactly the same as the original one (compare John Doe and Earvin Johnson each other positions with first screenshot).</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_layout2.png"/>
+		</p>
+		<p>
+			<strong>Warning</strong> : This copy/paste operation copies exactly what you see on a diagram. When using low zoom level, some diagram elements can be twisted and the paste operation will duplicate theses twistings on the other diagram. Please, zoom in to reduce twistings.
+		</p>
+		<h4 id="PasteStyle">Paste Style</h4>
+		<p>The next picture shows the diagram where the layout will be replicated. The tool to paste style is called &#8220;Paste Style&#8221; and can be activated from the tab-bar or from the contextual menu (see 
+			<em>Edit</em> section).
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_style1.png"/>
+		</p>
+		<p>The red font applies to John Doe.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_style2.png"/>
+		</p>
+		<h4 id="PasteFormat">Paste Format</h4>
+		<p>The next picture shows the diagram where the layout will be replicated. The tool to paste format is called &#8220;Paste Format&#8221; and can be activated from the tab-bar when the diagram is selected, from the contextual menu (see 
+			<em>Edit</em> section) or through the 
+			<em>Ctrl+Alt+Shift+V</em> shortcut.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_format1.png"/>
+		</p>
+		<p>The result is the same as applying 
+			<em>Paste Format</em> and 
+			<em>Paste Style</em>.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_paste_format2.png"/>
+		</p>
+		<h3 id="diagram_element_pinning">Diagram element pinning</h3>
+		<h4 id="Introduction">Introduction</h4>
+		<p>It is possible to mark specific elements in a diagram as having a fixed location so that they are not moved by the 
+			<i>Arrange All</i> action.
+		</p>
+		<p>Diagram element pinning allows you to combine both methods: manually arranging the position and size of elements when it is important while still being able to call 
+			<i>Arrange All</i> for the rest, without the risk of destroying your manual layouts.
+		</p>
+		<h4 id="Pinunpinactions">Pin/unpin actions</h4>
+		<p>The next picture shows a diagram with three persons.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin01.png"/>
+		</p>
+		<p>
+			<i>Arrange All</i> action lays out all diagram elements in order to produce the &#8220;best&#8221; layout. As we can see on the next picture, all diagram elements are moved.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin02.png"/>
+		</p>
+		<p>But we would like to have a fixed location for 
+			<i>John Doe</i> and 
+			<i>Jane Smith</i>. So theses elements must be marked as pinned thanks to the contextual menu.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin03.png"/>
+		</p>
+		<p>Now 
+			<i>John Doe</i> and 
+			<i>Jane Smith</i> are pinned, a new 
+			<i>Arrange All</i> action will preserve their locations.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin04.png"/>
+		</p>
+		<p>It is also possible to pin/unpin diagram elements thanks to the palette. Multiple element selections can be achieved by holding simultaneously 
+			<i>Ctrl + Mouse-left-click</i> on each diagram elements to pin or unpin.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin05.png"/>
+		</p>
+		<p>Notes:</p>
+		<ul>
+			<li>Pin/unpin information are persistent and saved in 
+				<i>.aird</i> session file.
+			</li>
+			<li>it is not possible to pin/unpin edges or compartments.</li>
+		</ul>
+		<h4 id="Configuration">Configuration</h4>
+		<p>Every diagram elements that you move will be pinned by default and will need an unpin operation to be &#8220;moveable&#8221; again.</p>
+		<p>This default behavior can be changed in Eclipse preferences, as can be seen in the next picture.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin_configuration01.png"/>
+		</p>
+		<h4 id="PinUnpinonNotes">Pin/Unpin on Notes</h4>
+		<p>The notes can be pinned if they are attached to a pinned diagram element. If a note is attached to several elements of which at least one is pinned then the note is pinned.</p>
+		<p>Otherwise for notes linked to any elements, it&#8217;s possible to use the preferences &#8220;Move unlinked notes during layout&#8221;. By default, this preference is disabled, in this case the unlinked notes are pinned.</p>
+		<p>This default behavior can be changed in Eclipse preferences, as can be seen in the next picture.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_note_pin_configuration01.png"/>
+		</p>
+		<h4 id="PinUnpinelementsusingatreeviewer">Pin/Unpin elements using a tree viewer</h4>
+		<p>When there is no selected element on the diagram, the tab bar provides the button 
+			<em>Pin/Unpin</em>.
+		</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin_dialog1.png"/>
+		</p>
+		<p>This button opens a dialog to manage the pinned and unpinned elements of the diagram with a tree view, using various selection buttons (Check all, Uncheck all, Expand All and Collapse all) and various filters (All element, only checked elements and only unchecked elements).</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin_dialog2.png"/>
+		</p>
+		<p>Some elements might be grayed in this tree (compartments, Sequence diagram elements, ..), their selection will have no effect. Their grayed status indicates that they do not support the Pin/Unpin but their displayed children might support it. Edges will not be shown as they will never have children in this tree.</p>
+		<p>You can also use 
+			<a href="#UsingRegularExpressionstoFindDiagramElements">RegularExpressions</a> to easily retrieve the elements you want to pin/unpin.
+		</p>
+		<p>To see more easily if one or more graphical elements are pinned, the icon in the toolbar change, showing a &#8220;checked&#8221; if an element is pinned.</p>
+		<p>	
+			<img border="0" src="images/diagram_editor_pin_toolbar_activated.png"/>
+		</p>
+		<h3 id="Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</h3>
+		<p>When you only want to do layout operations (e.g. arrange a diagram by moving nodes or edges), you may modify the semantic models without paying attention. For example, when organizing bordered nodes, you may change the container of the semantic element, without wanting do so.</p>
+		<p>When this mode is enabled, the following operations are changed:</p>
+		<ul>
+			<li>direct edit is disabled on all elements;</li>
+			<li>moving elements by dragging them can be used to change their position, but will never trigger a drag and drop operation;</li>
+			<li>moving the extremity of an edge to adjust its connection point (to the source or target element) is possible, but will never trigger a reconnection operation.</li>
+		</ul>
+		<p>Note that other operations which can change the semantic model are still possible. Only the operations listed above, which are easy to misuse, are disabled/modified. 
+			<strong>Layout Mode is not a &#8220;read-only&#8221; mode and does not guarantee that the semantic model is not modified when it is enabled.</strong>
+		</p>
+		<p>
+			<strong>Layouting mode</strong> can be activated/disabled on a diagram through the tab bar (when there is no selected element) : 
+		</p>
+		<p>
+			<img border="0" src="images/layouting_mode_tabbar_activate.png"/>
+		</p>
+		<p>The diagram&#8217;s status line then indicates that the diagram is currently in 
+			<em>Layouting mode</em> : 
+		</p>
+		<p>
+			<img border="0" src="images/layoutingMode_forbidden_dnd.png"/>
+		</p>
+		<p>In this example, as 
+			<em>Layouting mode</em> is activated, reconnecting the Edge from 
+			<em>Abstrat Customer</em> to 
+			<em>Company</em> is forbidden. You can arrange this edge (change start location, add bending points...) without risking to modify the underlying semantic model.
+		</p>
+		<p>When a diagram is closed, the 
+			<em>Layouting mode</em> is automatically disabled.
+		</p>
+		<h3 id="synchronized_diagram">Synchronized/Unsynchronized diagram</h3>
+		<p>The contextual menu on the background of the diagram provides an action to toggle between 
+			<i>Synchronized</i> / 
+			<i>Unsynchronized</i> modes.
+		</p>
+		<p>
+			<img border="0" src="images/synchronized_diagram1.png"/>
+		</p>
+		<p>When the action is checked, the mode is 
+			<i>Unsynchronized</i>. Otherwise, the mode is 
+			<i>Synchronized</i>. 
+			<br/>When the editor is activated, the status bar informs if the diagram is 
+			<i>Synchronized</i> or 
+			<i>Unsynchronized</i> (according to preference 
+			<a href="#show_status_line">
+				<em>Sirius/Sirius Diagram/Show status line</em>
+			</a> ).
+			<br/>
+			<img border="0" src="images/synchronized_diagram_statusbar.png"/>
+			<br/>It is also possible to see this status with a decorator at the bottom-right corner of the diagram (according to preference 
+			<a href="#show_sync_decorator">_Sirius/Sirius Diagram/Show synchronize status decorator on diagram</a> )
+			<br/>
+			<img border="0" src="images/decoratorsSyncStatus.png"/>
+		</p>
+		<p>With 
+			<i>Synchronized</i> mode, the displayed diagram represents what is provided by the modeler. However, with 
+			<i>Unsynchronized</i> mode, the diagram may not display all elements provided by the modeler, but only the elements that the user selected.
+		</p>
+		<p>For instance, we will consider having a semantic model with a root element that contains a child element. In the Viewpoint Specification Model, the feature 
+			<i>Synchronization</i> (See the Common Attributes section of the specifier guide) of the mapping for the elements is defined as 
+			<i>Not synchronized</i> and the edge mapping specifies an 
+			<i>Unsynchronizable</i> behavior (default feature). To start we only have the root displayed.
+		</p>
+		<p>	
+			<img border="0" src="images/synchronized_diagram3.png"/>
+		</p>
+		<p>Then, we will drag and drop the child element from 
+			<i>Model Explorer</i> view. With 
+			<i>Synchronized</i> mode, the edges related to this dropped element will be displayed.
+		</p>
+		<p>	
+			<img border="0" src="images/synchronized_diagram4.png"/>
+		</p>
+		<p>Note: If the edge mapping was defined as 
+			<i>Synchronized</i>, the result will be the same. But if it is 
+			<i>Not synchronized</i>, the edges will not be displayed.
+		</p>
+		<p>However, with 
+			<i>Unsynchronized</i> mode, only the dropped element will be displayed.
+		</p>
+		<p>	
+			<img border="0" src="images/synchronized_diagram5.png"/>
+		</p>
+		<p>Note: If the edge mapping was defined as 
+			<i>Not Synchronized</i>, the result will be the same. But if it is 
+			<i>Synchronized</i>, the edges will be displayed.
+		</p>
+		<p>The 
+			<i>Synchronized</i> / 
+			<i>Unsynchronized</i> status of a diagram on creation can be set by default with a preference in the  preferences. You can access it by menu 
+			<i>Window</i> / 
+			<i>Preferences...</i> / 
+			<i>Sirius</i> / 
+			<i>Sirius Diagram</i>. The property is 
+			<i>Synchronized mode for new diagrams</i>. If you want your new diagrams be 
+			<i>unsynchronized</i>, uncheck this property.
+		</p>
+		<p>	
+			<img border="0" src="images/synchronized_diagram2.png"/>
+		</p>
+		<h3 id="UsingRegularExpressionstoFindDiagramElements">Using Regular Expressions to Find Diagram Elements</h3>
+		<h4 id="Rules">Rules</h4>
+		<p>Several dialogs of the Diagram Editor (like the 
+			<em>Pin/Unpin</em> or 
+			<em>Hide/Reveal</em> dialogs) allow you to filter Diagram elements using regular expressions.
+		</p>
+		<p>Those regular expressions support only the 
+			<em>'*'</em> and 
+			<em>'?'</em> wild-cards.
+		</p>
+		<ol>
+			<li>All Diagram elements which name is 
+				<strong>beginning</strong> with the given regular expression is conform to this regular expression ;
+			</li>
+			<li>Case is not relevant (i.e. 
+				<em>'a'</em> and 
+				<em>'A'</em> are strictly equivalent);
+			</li>
+			<li>A &#8216;?&#8217; wild-card can be used to replace exactly 1 character in the search ;</li>
+			<li>A &#8216;*&#8217; wild-card can be used to replace exactly 0 or more characters in the search.</li>
+		</ol>
+		<h4 id="Examples">Examples</h4>
+		<p>Consider that you have a Diagram containing the following Diagram elements :</p>
+		<ul>
+			<li>myPackage (Package)</li>
+			<li>myClass1 (Class)</li>
+			<li>MyClass2 (Class)</li>
+			<li>myAttribute1 (Attribute)</li>
+			<li>myAttribute2 (Attribute)</li>
+			<li>isaBot (Attribute)</li>
+			<li>isaBoot (Attribute)</li>
+			<li>isaBT (Attribute)</li>
+		</ul>
+		<p>Elements matching the regular expression 
+			<em>"m"</em> are all elements that starts with the letter 
+			<em>'m'</em> (any case) :
+		</p>
+		<ul>
+			<li>myPackage</li>
+			<li>myClass1</li>
+			<li>MyClass2</li>
+			<li>myAttribute1</li>
+			<li>myAttribute2</li>
+		</ul>
+		<p>Notice that you will obtain the same result with 
+			<em>"my"</em>.
+		</p>
+		<p>Elements matching the regular expression 
+			<em>"isab?t"</em> are the following elements :
+		</p>
+		<ul>
+			<li>isaBot</li>
+		</ul>
+		<p>As &#8216;?&#8217; stands for 
+			<strong>exactly</strong> one character, 
+			<em>isaBoot</em> and 
+			<em>isaBt</em> aren&#8217;t matching this regular expression.
+		</p>
+		<p>Elements matching the regular expression 
+			<em>"*1"</em> are all elements that contain the 
+			<em>'1'</em> character :
+		</p>
+		<ul>
+			<li>myClass1</li>
+			<li>myAttribute1</li>
+		</ul>
+		<p>Elements matching the regular expression _"my*a*2" are the following elements :</p>
+		<ul>
+			<li>myClass2</li>
+			<li>myAttribute2</li>
+		</ul>
+		<p>Here you can notice that for 
+			<em>myAttribute2</em> the first 
+			<em>'*'</em> represents no character.
+		</p>
+		<h3 id="quick_outline">Quick Outline</h3>
+		<p>A quick outline is available with the shortcut 
+			<code>Ctrl</code> + 
+			<code>O</code>. This allows you to rapidly search text in the displayed name or the contained String attributes of your diagram elements elements.
+		</p>
+		<p>The star, 
+			<code>*</code>, is a joker character, allowing you to search with more complicated patterns. Regarding this, an element is found if there is a word in its name or one of its attributes that match with the text in the filter, so if you want to search within words too, add 
+			<code>*</code> at the start of your pattern. Also, you can navigate along the matching elements with the &#8220;Up&#8221; and &#8220;Down&#8221; arrow keys, and go to the selected element in your editor with 
+			<code>Enter</code>.
+		</p>
+		<h3 id="styleCustomizations">Style customizations </h3>
+		<p>Although the style of the diagram elements is defined in the VSM, it can be customized for each diagram elements. This customization can be applied from the tool bar, from the &#8220;Style&#8221; and &#8220;Appearance&#8221; tab of the property view, from the &#8220;Diagram&#8221; menu or from the contextual menu Format.</p>
+		<p>You have the possibility to customize :</p>
+		<ul>
+			<li>in container style : the background color, the background style, the border size, the foreground color, the label alignment, the label size and the label format.</li>
+			<li>in node style: the border size, the color, the label alignment, format, position and size.</li>
+			<li>in edge style: the folding style, the color,  the label alignment, format, position and size, the line and routing style, the size and the target and source arrow.</li>
+		</ul>
+		<p>Theses customizations can be reset by the &#8220;Reset style customization&#8221; button available in the &#8220;Appearance&#8221; tab of the property view and in the diagram editor tool bar.</p>
+		<p>NOTE: in case a user customized a Node with a WorkspaceImage style (through the &#8220;Set style to workspace image&#8221; action), it is considered in its whole customized then it can&#8217;t be updated by the refresh action, only the &#8220;Reset style properties to default values&#8221; action can update it by reset it.</p>
+		<h4 id="routingStylePref">Customize edge routing style from preferences</h4>
+		<p>You have the possibility to customize the routing style of all new edges from the preferences. In the preference page 
+			<em>Sirius/Sirius Diagram/Connections</em>, you can enable 
+			<em>user specific default values</em> and select a default routing style for all new edges.
+		</p>
+		<p>
+			<img border="0" src="images/preferences_sirius_diagram_connections.png"/>
+		</p>
+		<p>For example:</p>
+		<ul>
+			<li>The 
+				<em>user specific default values</em> is enabled and the line style is set to 
+				<em>Rectilinear</em>.
+			</li>
+			<li>You create a new edge.</li>
+			<li>The routing style is set to 
+				<em>Rectilinear</em> (regardless of the value specified in the VSM) and the 
+				<em>routingStyle</em> is considered as custom.
+			</li>
+			<li>If you call the action 
+				<em>Reset style to default value</em> on this edge, then it keeps its routing style (because the preference is considered as the default value).
+			</li>
+		</ul>
+		<h2 id="reference">Reference</h2>
+		<p>This section describes all the features which are (or can be) available on graphical modelers</p>
+		<h3 id="GraphicalArea">Graphical Area</h3>
+		<h3 id="Palette">Palette</h3>
+		<p>All Sirius diagrams have a palette of tools, which by default is docked on the right hand side of the main graphical area. The top row of the palette contains some general tools which are available on all Sirius diagrams, while the rest contains tools specific to each graphical modeler.</p>
+		<h4 id="ManagingThePalette">Managing The Palette</h4>
+		<p>By default, the palette appears with a pre-defined size on the right hand side of the diagram.</p>
+		<p>
+			<i>Resizing</i>. You can resize it to take more or less horizontal space by dragging the vertical separator between the palette and the diagram with your mouse.
+		</p>
+		<p>	
+			<img border="0" src="images/palette_resizing.png"/>
+		</p>
+		<p>
+			<i>Folding</i>. You can also fold the palette to hide it almost completely by clicking on the triangular icon in the corner of the palette header. When folded, you can restore it by clicking again on the same triangular icon. You can also keep it folded except when needed: when it is folded, a single click in the vertical folded area will reveal the palette temporarily so that you can select a tool. It will automatically hide again if you select a tool or click elsewhere.
+		</p>
+		<p>	
+			<img border="0" src="images/palette_folding.png"/>
+		</p>
+		<p>
+			<i>Moving</i>. If you prefer, you can move the palette to the left side of the diagram editor by dragging the palette&#8217;s header with the mouse, or right-clicking on the header and choosing 
+			<em>Dock On &gt; Left</em> or 
+			<em>Dock On &gt; Right</em>.
+		</p>
+		<p>	
+			<img border="0" src="images/palette_moving.png"/>
+		</p>
+		<h4 id="standardToolId">Standard Tools</h4>
+		<p>A few general tools are available in standard on all Sirius diagrams. They appear in the top row of the palette, just below the header.</p>
+		<p>	
+			<img border="0" src="images/palette_tools.png"/>
+		</p>
+		<p>
+			<i>Selection</i>. The 
+			<em>selection</em> tool is the default one initially selected when you open a diagram. To select an element on a diagram while this tool is active, simply click on it. To select several elements at the same time, you can either draw a rectangle on the diagram, or click on each element individually while keeping the 
+			<em>Ctrl</em> key pressed. When selecting elements which are already selected using this method, by clicking on them or drawing a rectangle around them, they are removed from the selection. You can combine both methods (de/selection by single click or by zone) to build complex selection incrementally by always keeping the 
+			<em>Ctrl</em> key pressed.
+			<br/>The selection of several elements by drawing a rectangle has 2 modes:
+		</p>
+		<ul>
+			<li>Selection from left to right: all the elements completely contained in the rectangle will get selected</li>
+			<li>Selection from right to left: all the elements that intersect the rectangle will get selected (except the container under the initial mouse location)</li>
+		</ul>
+		<p>To allow selection by drawing a rectangle on a container, you must simultaneously press the ALT key (otherwise the container is drag&#8217;n&#8217;dropped).</p>
+		<p>Selected elements have an outline and anchors drawn on their border. Note that when a selection contains multiple elements, exactly one of them has black selection anchors; the rest have white anchors. The element with the black anchors is called the primary selection, and some tools treat it differently than the others (for example alignment tools).</p>
+		<p>
+			<i>Zoom</i>. Next in the palette come two buttons to control the zoom level of the main diagram area. When the 
+			<em>Zoom in</em> (resp. 
+			<em>Zoom out</em>) button is active, clicking anywhere on the diagram will increment (resp. decrement) the zoom level by 25%. The current zoom level is visible in the tabbar when no diagram element is selected (see the section on the tabbar buttons for more ways to control the zoom level).
+		</p>
+		<p id="notes">
+			<i>Notes, Link Notes and Note attachments</i>. All Sirius diagrams support the creation of notes and text elements, which can be attached to diagram elements. These elements are purely graphical annotations, and have no effect on the semantic model. The tools used to create them are available in a combo-box in the palette&#8217;s top row. By default, the 
+			<em>Note</em> tool (represented by a yellow sticky note) is selected. If you click on the small arrow next to the sticky note, a menu appears where you can select one of the available tools: 
+			<em>Note</em>, 
+			<em>Link Note</em>, 
+			<em>Text</em> or 
+			<em>Note attachment</em>.
+		</p>
+		<p>
+			<em>Notes</em>, 
+			<em>Link Notes</em> and 
+			<em>Text</em> elements are created in a similar way: either a single click somewhere on the diagram (which creates an element with a default size), or a click-drag to create the element with a custom initial size. Once created, one can edit the text inside the note or text zone usual the standard &#8220;direct edit&#8221; behavior (
+			<em>F2</em>, a slow double click, or by directly starting to enter alpha-numeric text). The only difference between notes and text zones is the visual presentation; notes have a yellow background (by default) and a border which represents a sticky not with a folded top-right corner. 
+		</p>
+		<p>A 
+			<em>Link Note</em> is a special kind of note which references any existing representation in the project. When creating a link note, a the target representation must be selected from a dialog. The link note displays the name of the target representation and its icon as the note header. It is possible to navigate to the target representation by double clicking on a link note. When the targeted representation is deleted, all link notes that reference it are deleted automatically. Just like normal notes, link notes have a text field for free text and can be attached to other elements with the note attachment tool. It is also possible to set a new target representation for an existing link note by selecting 
+			<em>Set target representation ...</em> from the link note&#8217;s context menu.
+		</p>
+		<p>
+			<em>Note attachments</em> can be created to link either notes or text zone to diagram elements (including other notes and text attachments). To create an attachment, activate the tool and then click once on the source element and once on the target element. You can also click and drag from the source to the target elements.
+		</p>
+		<p>
+			<em>Generic Edge Creation Tool</em> allows to create an edge by selecting first the source and the target before choosing the concrete edge creation tool. That allows to restrict the list of possible edge creation tools between two elements. The tool is allowed when the mouse is hovering the first element if at least one edge creation tool is applicable from this element. the same is applies for the target.
+			<br/>If only one edge creation tool is available, the tool will be applied once the source and target have been selected. If several edge creation tools are applicable, a menu displaying the list of possible tools makes possible to select which one to apply.
+		</p>
+		<p id="pinning">
+			<i>Pin/Unpin</i>. The final standard tools which are available in the top row of all the palette allow to mark or unmark diagram elements as 
+			<em>pinned</em>. Pinning an element on the diagram means that when an automatic layout of the diagram is requested (see the 
+			<i>Arrange All</i> action), the element will not be moved or resized: it will stay at the exact same position as you placed it. Pinned element can still be moved manually. To pin or unpin an element, simply select the appropriate tool (using the arrow right next to the icon to make the menu appear), and when the tool is active, click on the element to mark as pinned or un-pinned.
+		</p>
+		<h4 id="PaletteContents">Palette Contents</h4>
+		<p>Below the palette&#8217;s header, which contains the general tools described above, you will find all the custom tools which have been configured for your modeler. Note that depending on which 
+			<em>Viewpoints</em> and 
+			<em>Layers</em> are currently enabled, some tools may or may not be visible for a given modeler. Refer to your specific designer/modeler&#8217;s documentation for details about which tools are available and how they are organized.
+		</p>
+		<p>
+			<em>Tool Drawers</em>. Tools in the palette may be organized in expandable 
+			<em>drawers</em> to group them by category. To expand a drawer and show its content, simply click once in the drawer&#8217;s header. Click again to fold it back and hide its tools. When you expand a drawer, some others may be folded automatically if there is not enough space to show all of them. To prevent this, you can &#8220;pin&#8221; a drawer opened by clicking on the &#8220;pin&#8221; icon in the drawer&#8217;s title area when it is expanded. This will force it to be kept opened, and its tools available, at all times.
+		</p>
+		<p>	
+			<img border="0" src="images/palette_tool_drawer.png"/>
+		</p>
+		<p>
+			<em>Tool Groups</em>. Most entries in the palette correspond to a single tool, but some of them represent tool groups. Tool groups are identified by a small right-facing arrow on the left of the tool&#8217;s icon. They behave like combo-boxes: click on the arrow to expand the group and reveal all the tools available in this group. Click on the tool you want to activate to make it the default and close the group. You can then use the selected tool as any other, but you have to re-open the popup menu if you want to enable a different one. When the group is expanded, you can click on the &#8220;pin&#8221; icon to the right to of the top-most tool to force the group to stay expanded, so that you can easily have access to all the tools. 
+		</p>
+		<p>	
+			<img border="0" src="images/palette_tool_group.png"/>
+		</p>
+		<h4 id="UsingTheToolsFromThePalette">Using The Tools From The Palette</h4>
+		<p>There are different interaction modes possible for the tools available in the palette. The basic pattern is to select the tool in the palette with a simple left-click on in it the palette, and then apply it once on the diagram.</p>
+		<p>Normally, when you have used a tool once, it does not stay selected; if you want to reuse it a second time, you have to re-select it in the palette. If you want to apply the same tool several times in a row, simply hold the 
+			<em>Ctrl</em> key pressed while using it; it will stay &#8220;armed&#8221; until you release the 
+			<em>Ctrl</em> key or select another tool.
+		</p>
+		<p>To deselect a tool without executing it, simply press the 
+			<em>Esc</em> key, or select another one (for example the default 
+			<em>Selection</em> tool).
+		</p>
+		<p>When a tool is selected and you move the mouse on the diagram, you will notice that the mouse cursor&#8217;s shape changes depending on where it is, to indicate whether or not the selected tool can be applied at this particular location. For example some elements can only be created at the top-level of the diagram (in the diagram&#8217;s background itself), and not inside other elements. For such a tool, if you put the cursor on top of another diagram element, the mouse cursor will change to indicate the action is not allowed. Note that the exact shape of the mouse cursor depends on the operating system.</p>
+		<p>
+			<em>Direct Action Tools</em>. Direct action tools are the simplest and most common one. They require a single click somewhere on the diagram (as long as it is allowed). The most common direct action tools are element creation tools.
+		</p>
+		<p>
+			<em>Edge Creation Tools</em>. Edge creation tools are a little more complex, in that they require the specification of both the source and target element of the new edge. Once the tool is selected, there are two possible usage modes:
+		</p>
+		<ol>
+			<li>First do a single click on the source element, then move the mouse to the target element (which may be the same) and click a second time to finish the edge creation.</li>
+			<li>Alternatively, you can click on the source element, keep the mouse button pressed, move the mouse to the target element and release it there. Both methods are equivalent.</li>
+		</ol>
+		<p>
+			<em>Tools With Selection Dialog</em>. Some complex tools require additional information to perform their jobs. In particular, tools with selection dialogs will open a dialog box when you use them on a diagram element to ask for more information. The details will vary from tool to tool, but to complete the interaction simply select the requested information and finish the dialog/wizard.
+		</p>
+		<p>
+			<em>Other Tools</em>. Finally, because Sirius is an extremely extensible system, graphical modelers may be configured with tools which have more complex interaction patterns. These will usually be custom tools very specific to a particular domain or modeler. Refer to their documentation for details.
+		</p>
+		<h3 id="ref_tabbar">Tab-bar</h3>
+		<p>The top area of all Sirius diagram editors is filled with the 
+			<em>tab-bar</em>, which provides access to many operations on diagrams and their elements. The content of the tab-bar will depend on whether the current selection is the diagram itself (i.e. no element is selected) or one or several diagram elements.
+		</p>
+		<h4 id="ref_tabbar_diagram">Tab-bar Actions Available on Diagram</h4>
+		<p>	
+			<img border="0" src="images/tabbar01.png"/>
+		</p>
+		<p>When the diagram itself (and not a specific element) is selected, the tab-bar contains the following buttons:</p>
+		<p>
+			<img border="0" src="images/tabbar_automatic_layout_tools.png"/> 
+			<em>Automatic Layout Tools</em>. The first group of tools are used to trigger an automatic layout of the elements on the diagram. Automatic layout uses a generic algorithm which tries to arrange the position and sizes of the elements on the diagram in a nice, readable way. In particular it makes sure, unless specific constraints prevent it, that no elements overlap each other, and that elements which contain others (i.e. containers) are large enough to show all their contents. It also tries to minimize the crossing of edges. The two ways to invoke the automatic layout algorithms are available as a drop-down menu on the left-most icon in the tab-bar.
+		</p>
+		<ul>
+			<li>
+				<em>Arrange All</em>. This is the action available by default. It launches the layout algorithm on all the elements in the diagram. Note that elements which have been 
+				<em>pinned</em> to their position will 
+				<strong>not</strong> be moved by the algorithm.
+			</li>
+			<li>
+				<em>Arrange Linked Border Nodes</em> This special action will only concerns nodes which are on the border of another element and which are either the source or the target of at least one edge. When invoked, the action will try to move these bordered nodes on the border of their parent on the most &#8220;natural&#8221; side of their parent element depending on the direction of the edge. For example if a border node is on the top side of an element but has an edge which goes down to a target element below its parent, this action will move the border node to the bottom side so that the edge does not cross the parent element.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/tabbar_selection_tools.png"/> 
+			<em>Selection Tools</em>. The next group of tab-bar tools, also organized in a drop-down menu, can be used to select groups of diagram elements in a single operation.
+		</p>
+		<ul>
+			<li>
+				<em>Select All</em>. This is the default operation and will select all the elements visible on the diagram. It is also available via the 
+				<em>Ctrl+A</em> keyboard shortcut.
+			</li>
+			<li>
+				<em>Select All Connectors</em>. This action will select all connectors (aka 
+				<em>edges</em>) between diagram elements which are visible on the diagram, and only them.
+			</li>
+			<li>
+				<em>Select All Shapes</em>. This action will select all diagram elements which are not connectors/edges which are visible on the diagram.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/tabbar_refresh.png"/> 
+			<em>Refresh</em>. This operation, which can also be invoked with the 
+			<em>F5</em> keyboard shortcut, will force an update of the diagram&#8217;s content according to the latest version of the underlying semantic model. The default operational mode for Sirius is to automatically refresh the diagram&#8217;s content whenever any relevant change is detected in the semantic model. This can be disabled using the 
+			<em>Automatic Refresh</em> preference (see 
+			<em>Window &gt; Preferences &gt; Sirius</em>). When in manual refresh mode (i.e. 
+			<em>Automatic Refresh</em> is unchecked), you must manually use the 
+			<em>Refresh</em> operation whenever you want the diagram to take into account changes in the model. Even in automatic refresh mode, it may be sometimes necessary to invoke an explicit, manual refresh using this operation if Sirius got confused.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_layers_selection.png"/> 
+			<em>Layers Selection</em>. The various kinds of elements which can appear on a diagram, and the tools which are available to manipulate them, are organized in 
+			<em>Layers</em>. Each diagram has a default layer which is always enabled, but may also have additional layers. Additional layers can be optional or not. You can enable or disable the optional layers at will, to hide or reveal new kinds of elements. Note that the list of layers available to you on a diagram may depend on which 
+			<em>Viewpoints</em> are currently enabled in the 
+			<em>Modeling Project</em>, as some viewpoints can contribute additional layers to diagrams. The set of layers currently enabled can be controlled using the drop-down menu in the tab-bar. Note that mandatory layers can not be disabled and are not displayed in this menu. Simply click on the button to reveal the menu, and check or un-check the optional layers you want to have enabled or disabled. A tick-mark is visible on the tab-bar button if at least one optional layer is currently enabled.
+		</p>
+		<p>
+			<img border="0" src="images/diagram_editor7.png"/>
+		</p>
+		<p id="transientLayer">Transient layers are displayed, in the drop down menu, after the non transients&#8217;s. They are separated with an horizontal separator. 
+			<br/>
+			<img border="0" src="images/diagram_editor_transient_layer.png"/>
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_filters_selection.png"/> 
+			<em>Filters Selection</em>. Diagram configurations may define 
+			<em>filters</em>, than you can enable or disable to hide (or show) diagram elements depending on semantic conditions. For example on a UML class diagram, a filter may be defined to hide all abstract classes and interfaces, so that only concrete classes are visible. The set of filters currently enabled can be controlled using the drop-down menu in the tab-bar. Simply click on the button to reveal the menu, and check or un-check the filters you want to have enabled or disabled. A tick-mark is visible on the tab-bar button if at least one filter is currently enabled.
+		</p>
+		<p>
+			<img border="0" src="images/diagram_editor8.png"/>
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_show_hide.png"/> 
+			<em>Show/Hide</em>. You can chose to hide (or reveal) specific diagram elements (or just their labels) independently of the conditions in pre-defined filters. This can be useful if you want to concentrate on specific parts of your model, or if you want hide parts which are not relevant to simplify communication with other people. You can hide elements from their context menu (using the 
+			<em>Show/Hide</em> sub-menu) or more globally by using the 
+			<em>Show/Hide</em> button in the tab-bar. This button opens a dialog box which presents all the elements visible on the diagram, organized in a hierarchical way which corresponds to their graphical organization. Note that because a single semantic element may have multiple representations on the diagram, they may appear multiple times in the dialog box. Making one representation hidden will not hide the other graphical representations of the same element. You can chose which elements should be visible (resp. hidden) on the diagram by checking (resp. unchecking) them in the dialog. For some elements (e.g. compartments), the hide is not supported and is disabled, these elements will be grayed in the dialog box and checking them will have no effect. The top area of the dialog box contains various buttons to help you find the elements you want, by show only the checked (i.e. visible) or unchecked (i.e. hidden) elements, by expanding or collapsing the tree viewer, or by checking or un-checking all elements at once. You can also search for elements by their name using the search box. For some elements (e.g. edges), you can hide the label (or labels) while keeping the element itself visible. When this is possible, the label is presented as a sub-item of the element in the dialog box, with its own check-box.
+		</p>
+		<p>
+			<img border="0" src="images/diagram_editor_show_hide_dialog2.png"/>
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_pin_unpin.png"/> 
+			<em>Pin/Unpin</em>. You can chose to pin (or unpin) elements on the diagram. Pinned elements are kept in their position by the automatic layout algorithms (see 
+			<em>Arrange All</em>), while unpinned elements can be moved and resized. You can pin/unpin elements from their context menu (using the 
+			<em>Layout</em> sub-menu) or more globally by using the 
+			<em>Pin/Unpin</em> button in the tab-bar. This button opens a dialog box which presents all the elements on the diagram, organised in a hierarchical way which corresponds to their graphical organization. Note that because a single semantic element may have multiple representations on the diagram, they may appear multiple times in the dialog box. Making one representation pinned will not pin the other graphical representations of the same element. You can chose which elements should be pinned (resp. unpinned) on the diagram by checking (resp. unchecking) them in the dialog. The top area of the dialog box contains various buttons to help you find the elements you want, by show only the checked (i.e. visible) or unchecked (i.e. hidden) elements, by expanding or collapsing the tree viewer, or by checking or un-checking all elements at once. You can also search for elements by their name using the search box. Note that pinning has currently no effect on edges.
+		</p>
+		<p>
+			<img border="0" src="images/diagram_editor_pin_dialog2.png"/>
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_paste_layout.png"/> 
+			<em>Paste Layout</em>. This button is only enabled if you have previously copied the layout of some elements in the clipboard, using the 
+			<em>Copy layout</em> action (only visible in the tab-bar when elements are select). 
+			<em>Paste layout</em> will apply the same size and positions which were copied in the clipboard to the corresponding elements in the current diagram. For the purpose of this command, the &#8220;corresponding elements&#8221; are the graphical elements which represent the same semantic objects.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_zoom.png"/> 
+			<em>Zoom Controls</em>. Next in the tab-bar is a set of buttons to control the zoom level. The 
+			<em>Zoom in</em> and 
+			<em>Zoom out</em> buttons behave similarly to their equivalents in the palette. The combo-box shows the current zoom level and allows you to choose among some pre-defined levels. You can also manually enter a specific zoom level (e.g. &#8220;42&#8221;) and hit 
+			<em>Return</em> to apply it.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_export_image.png"/> 
+			<em>Export As Image</em>. This button can be used to export the current diagram as an image file stored on disk. When you select it, a dialog box appears 
+			<img border="0" src="images/diagram_export_one_image.png"/> 
+			<br/>in which you can chose the file&#8217;s destination and format. Note that not all formats are currently equally supported; they may not all produce the same result. For diagrams which are tool large to export as a single image, the 
+			<em>Export to HTML</em> check-box can be used: when it is checked, instead of exporting a single image Sirius will split it in a matrix of smaller images, and produce an HTML file while loads them all arranged in a table to reproduce the original image.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_layouting_mode.png"/> 
+			<em>Layout Mode</em>. This button enables a special &#8220;layout mode&#8221;, in which some operations are prevented from having an effect on the semantic model. It can be used when you want to tweak the layout of a diagram and want to be sure to only make graphical changes, and not semantic ones by mistake. Click on the button to enable the &#8220;layout mode&#8221;, and click again when finished to return to the normal model. When this mode is enabled, the following operations are changed:
+		</p>
+		<ul>
+			<li>direct edit is disabled on all elements;</li>
+			<li>moving elements by dragging them can be used to change their position, but will never trigger a drag and drop operation;</li>
+			<li>moving the extremity of an edge to adjust its connection point (to the source or target element) is possible, but will never trigger a reconnection operation.</li>
+		</ul>
+		<p>Note that other operations which can change the semantic model are still possible. Only the operations listed above, which are easy to misuse, are disabled/modified. 
+			<strong>Layout Mode is not a &#8220;read-only&#8221; mode and does not guarantee that the semantic model is not modified when it is enabled.</strong>
+		</p>
+		<p>The diagram&#8217;s status line indicates when 
+			<em>Layouting mode</em> is enabled: 
+		</p>
+		<p>
+			<img border="0" src="images/layoutingMode_forbidden_dnd.png"/>
+		</p>
+		<p>When a diagram is closed, the 
+			<em>Layouting mode</em> is automatically disabled.
+		</p>
+		<h4 id="ref_tabbar_element">Tab-bar Actions Available on Diagram Elements</h4>
+		<p>The tab-bar contains a different set of actions when at least one element is selected.</p>
+		<p>	
+			<img border="0" src="images/tabbar02.png"/>
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_arrange_selection.png"/> 
+			<em>Arrange Selection</em>. This action launches the layout algorithm only for the diagram elements which are selected (and not pinned). All the other elements on the diagram, whether pinned or not, will not be moved. Note that edges may be re-arranged if one of their ends is part of the selection.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_alignment_control.png"/> 
+			<em>Alignment Control</em>. This menu contains several operations which can be used to align several graphical elements in various ways. The actions in this menu are only enabled when several elements are selected.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_distribute_actions.png"/> 
+			<em>Distribute Elements</em>. This menu contains several actions which can be used to distribute the selected diagram elements horizontally/vertically with a same space between their centers or their bounds. The actions in this menu are enabled only for selected nodes with same direct parent. At least 3 shapes should be selected to enable distribute actions.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_pin_unpin_02.png"/> 
+			<em>Pin/Unpin</em>. These two buttons can be used to mark all the selected elements as pinned or not.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_copy_layout.png"/> 
+			<em>Copy Layout</em>. This tool can be used to duplicate the layout of some diagram elements from this diagram into another. This replication only applies to the same semantic elements between diagrams. First, select the set of elements of interest, and use this 
+			<em>Copy layout</em> action. Then go to the target diagram, and choose the 
+			<em>Paste layout</em> action from the tab-bar there.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_hide.png"/> 
+			<em>Hide</em>. This button hides all the selected elements from view. It can also be invoked with the 
+			<em>Ctrl+H</em> keyboard shortcut. To reveal elements which have been hidden, you can for example deselect all element, and in the diagram&#8217;s tab-bar, choose the 
+			<em>Show/Hide</em> button, which opens a dialog box to control the elements' visibility.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_hide_label.png"/> 
+			<em>Hide</em>. This button hides the label of the selected elements. It can also be invoked with the 
+			<em>Ctrl+L</em> keyboard shortcut. To reveal hidden labels, you can for example deselect all element, and in the diagram&#8217;s tab-bar, choose the 
+			<em>Show/Hide</em> button, which opens a dialog box to control the elements' visibility. You can also select an element without label and use the 
+			<em>Show/Hide / Show label</em> menu.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_delete_from_diagram.png"/> 
+			<em>Delete from Diagram</em>. This action removes the selected graphical element from the diagram, but does not delete the corresponding semantic elements. It is only available on un-synchronized diagrams or element types.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_delete_from_model.png"/> 
+			<em>Delete from Model</em>. This action removes both the selected graphical element and the corresponding semantic elements. The exact effect of deletion on the semantic model depends on how the diagram was configured, and may have other consequences (i.e. removing or modifying other parts of the model to keep everything consistent).
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_font_controls.png"/> 
+			<em>Font Controls</em>. The next set of buttons can be used to control the font attributes (bold or italic), the font color, and the font to use itself, for the labels of the select elements. Note that all font-related attributes 
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_color_style_controls.png"/> 
+			<em>Color and Visual Style Controls</em>. The next group of buttons can be used to control some graphical attributes of the selected elements: fill color, line color and line style. The 
+			<em>Workspace image</em> button can be used to replace the graphical representation of an element by an image that you can select from anyware in your Eclipse workspace.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_cancel_custom_style.png"/> 
+			<em>Cancel Custom Style</em>. As soon as you modify manually any of the graphical properties of an element, the element&#8217;s style is marked as 
+			<em>customized</em>, and is not refreshed if its definition changes. The 
+			<em>Cancel Custom Style</em> button resets all the style attributes of an element to its default values and un-marks it as customized.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_apply_style.png"/> 
+			<em>Apply Style</em>. Use this button to reproduce the visual style of an element onto others. This action will apply the style of the last selected element to the others. When you click on this button, all the visual attributes from the last element which can are compatible with the other elements will be applied to them.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_make_same_size.png"/> 
+			<em>Make Same Size</em>. When multiple elements are selected, clicking on this tool will resize all of them to have the same size (both width and height). The element used for reference to decide the size to apply is the last selected. For region containers, if the selected region containers have the same number of regions, the regions will have the same size. If the region container used for reference has more regions than the other(s), the last region of others will have the size of all remaining regions in the one used for reference. If the region container used for reference has less region than the other(s), the action has no effect.
+		</p>
+		<p>
+			<img border="0" src="images/tabbar_auto_size.png"/> 
+			<em>Auto-Size</em>. This button marks the selected elements as auto-sized. Auto-sized elements will adjust their width an height dynamically according to their contents.
+		</p>
+		<h4 id="ref_tabbar_4x">Tab-bar in Eclipse 4.2 and 4.3</h4>
+		<p>Due to a current limitation, on Eclipse 4.2 and 4.3, the tab-bar content does not depend on the current selection and extensibility is not available:
+			<br/>
+			<img border="0" src="images/tabbar4x01.png"/>
+		</p>
+		<p>The tab-bar content enablement changes when at least one element is selected:	
+			<br/>
+			<img border="0" src="images/tabbar4x02.png"/>
+		</p>
+		<p>See the previous sections for content description.</p>
+		<h3 id="PropertiesView">Properties View</h3>
+		<p>In the Properties view, you will find several tabs which will not be the same if an element is selected on the diagram or not.</p>
+		<p>If an element is selected on the diagram, you will have on the 
+			<i>Properties</i> view the following tabs:
+		</p>
+		<ul>
+			<li>Semantic : This tab shows the properties of the semantic element selected. You will find the same informations as in the properties view of an Ecore editor.</li>
+			<li>Style : This tab presents the properties about the graphical representation of the element. You will find informations like label size and format, shape of the graphical object, background and foreground colors...</li>
+			<li>Appearance : This tab allows to choose the style and size of text fields contained by the element.</li>
+		</ul>
+		<p>	
+			<img border="0" src="images/diagram_editor3.png"/>
+		</p>
+		<p>If you do not select an element, you will have in the 
+			<i>Properties view</i> the properties of the diagram itself :
+		</p>
+		<ul>
+			<li>Semantic : The diagram has a semantic element which is the element on which we have created the diagram in the 
+				<i>Model Explorer</i> view. The content is the same as presented previously.
+			</li>
+			<li>Filters : You can apply filters on your diagram. Filters will be presented in a following part.</li>
+			<li>Documentation : This tab provides a text area for the current diagram documentation.</li>
+			<li>Rulers &amp; Grid : Allow the user to display vertical and horizontal rulers and also a grid on the diagram. You can choose how is displayed the grid (Solid style, Dash style, Dot style...).</li>
+			<li>Appearance : This tab allows to choose the style and size of text fields of every elements of diagram which have not been specifically set on the Representation Diagram.</li>
+		</ul>
+		<p>	
+			<img border="0" src="images/diagram_editor4.png"/>
+		</p>
+		<h3 id="Outline">Outline</h3>
+		<p>The outline view has two display modes that you can select in its upper toolbar:</p>
+		<ul>
+			<li>In 
+				<em>Outline</em> mode, it shows the content of the model in a tree view:
+			</li>
+		</ul>
+		<p>	
+			<img border="0" src="images/diagram_editor5.png"/>
+		</p>
+		<p>To hide/reveal an element or its label in the editor, simply right click an element in the tree and choose one of the 
+			<i>Hide element</i>, 
+			<i>Hide label</i>, 
+			<i>Show element</i>, 
+			<i>Show label</i> menus. The availability of the menus depends on the state of each element and its support of the &#8220;Show/Hide&#8221; feature.
+		</p>
+		<p>The hidden elements have their label displayed in italic style and their icon is decorated with a yellow dot in the top left corner.
+			<br/>The elements whose label is hidden have their label displayed in italic style and their icon is decorated with a 
+			<i>L</i> in the bottom right corner.
+		</p>
+		<ul>
+			<li>In 
+				<em>Overview</em> mode, it shows a complete overview of the active diagram. If the diagram is too big to be seen entirely on the diagram modeler, the overview is an easy way to navigate on the active diagram.
+			</li>
+		</ul>
+		<p>	
+			<img border="0" src="images/diagram_editor6.png"/>
+		</p>
+		<h2 id="preferences">Preferences</h2>
+		<p>Some preferences and configuration parameters are available for you to customize your experience. They can affect either the look or the behavior of diagrams. </p>
+		<h3 id="GlobalPreferences">Global Preferences</h3>
+		<p>Global preferences are global to a Sirius installation, or more precisely to an Eclipse workspace. If you change them, they will affect all the modeling projects and all their diagrams for the current workspace. They are available through the standard Eclipse preference UI (menu 
+			<em>Window &gt; Preferences</em>), under the category 
+			<em>Sirius &gt; Sirius Diagram</em> and its sub-categories:
+		</p> 
+		<img border="0" src="images/preferences_sirius_diagram.png"/>
+		<p>The illustration above shows the default value of all these preferences.</p>
+		<ul>
+			<li>
+				<em>Show connector handles:</em> This has no effect for Sirius diagram (it is inherited from the standard GMF settings).
+			</li>
+			<li>
+				<em>Show popup bars:</em> If checked, and if the diagram&#8217;s configuration supports this feature, then when you keep the mouse cursor still for a small delay on a diagram element, a 
+				<em>popup bar</em> will appear with buttons corresponding to all the tools which can be applied in this context. The tools which appear are the same as the ones available on the palette, but it can be more convenient sometimes to use the popup bar instead of going back to the palette to select the tool:
+			</li>
+		</ul> 
+		<img align="center" border="0" src="images/popup_bar.png"/>
+		<ul>
+			<li>
+				<em>Enable animated layout:</em> If checked, then when you launch an automatic layout (
+				<em>Arrange all</em>), the shapes will move smoothly to their final location. This makes the arrangement operation take a little longer, but it is easier to follow where your elements have been moved.
+			</li>
+			<li>
+				<em>Enable animated zoom:</em> If checked, when you change the zoom value, Sirius will show intermediate steps to smooth the change.
+			</li>
+			<li>
+				<em>Enable anti-aliasing:</em> If checked, the graphics on the diagram will use anti-aliasing. This preference does not take effect on all platforms.
+			</li>
+			<li>
+				<span id="show_status_line">
+					<em>Show status line:</em>
+				</span> This allows to display the GMF status line. It is used in Sirius to display the synchronize status of the diagram..
+			</li>
+		</ul>
+		<ul>
+			<li>
+				<em>Auto-size containers during arrange-all action:</em> Container elements which have an explicit size are normally not resized during an 
+				<em>Arrange All</em>. This can be problematic if the elements they contain are re-arranged so that the container&#8217;s size is not appropriate anymore. When this preference is enabled, the arrange all action will treat all containers as if they are &#8220;auto-sized&#8221;, and adjust their size to the computed arrangement for their content. After the arrange all action is finished, the containers which had an explicit size before will still have an explicit size (although potentially different); they are only switched to auto-size mode during the arrange all action. 
+			</li>
+			<li>
+				<em>Move unlinked notes during layout:</em> If checked, then the 
+				<em>Arrange all</em> will consider all 
+				<a href="#notes">notes</a> on the diagram and arrange them. If unchecked, only the notes which are attached to non-note diagram elements are moved by the layout; the rest (which are considered just comments on the diagram itself), are not touched. 
+			</li>
+			<li>
+				<em>Automatically mark moved elements as pinned:</em> If checked, then as soon as you explicitly move a element (node or container) on the diagram, Sirius will mark it as 
+				<a href="#pinning">pinned</a> and consider it should not be moved by the automatic layout. You can still explicitly 
+				<a href="#pinning">unpin</a> these elements.
+			</li>
+			<li>
+				<span id="synchronized_preference">
+					<em>Synchronized mode for new diagrams:</em>
+				</span> If checked, all newly created diagrams will initially be in 
+				<a href="#synchronized_diagram">synchronized</a> mode. You can still change the mode manually after the diagram is created.
+			</li>
+			<li>
+				<span id="show_sync_decorator">
+					<em>Show synchronize status decorator on diagram:</em>
+				</span> If checked, a decorator in the bottom-right corner of the diagram is displayed to show the 
+				<a href="#synchronized_diagram">synchronize</a> status of the diagram. A value change of this preference will be applied on the next status changed for already opened diagrams.
+			</li>
+			<li>
+				<em>Remove/hide note when the annotated element is removed/hidden:</em> If checked, then notes attached to a diagram element will be deleted if the element is deleted, or hidden if the element is hidden.
+			</li>
+			<li>
+				<em>Export as image Scaling</em>: determines default level of scaling when exporting diagrams as image and its initial value in the 
+				<em>Export as image</em> dialog. 
+				<em>Max</em> level means an optimal quality export whereas 
+				<em>nominal</em> means nominal quality export. 
+			</li>
+		</ul>
+		<h3 id="Appearance">Appearance</h3>
+		<p>The 
+			<em>Appearance</em> preferences page (see below) gives you two preferences to control whether or not to show the labels on shapes (nodes, containers, bordered nodes) and connectors (edges). It also allows you to customize the default font and colors used for some basic diagram elements. Diagram configurations already specify default values for these style attributes, so in practice these preferences are mostly useful for notes.
+		</p> 
+		<img border="0" src="images/preferences_sirius_diagram_appearance.png"/>
+		<p>The 
+			<em>Authorize decoration overlapping</em> preference lets, if checked, the decorations of different positions overlapping each other or displaying outside the diagram element bounding. If unchecked, decorations may be grouped in a 
+			<em>list decorator</em> to avoid overlapping.
+		</p>
+		<h3 id="Printing">Printing</h3>
+		<p>The 
+			<em>Printing</em> page (see below) gives you various preferences related to page layout for layout printing.
+		</p> 
+		<img border="0" src="images/preferences_sirius_diagram_printing.png"/>
+		<p>The 
+			<em>Print decoration</em> preference allows to print decorations displayed on diagram graphical elements.
+		</p>
+		<h3 id="RulersAndGrid">Rulers And Grid</h3>
+		<p>Finally, the 
+			<em>Rulers And Grid</em> page (see below) contains preferences to control whether or not new diagrams should initially show the rulers and/or grids, and whether to enable the 
+			<em>Snap to grid</em> and 
+			<em>Snap to shapes</em> behavior by default. The preferences on this page are only taken into account as starting values for new diagrams. Each diagram has its own configuration of rulers and grid which can be modified  in the 
+			<em>Rulers &amp; Grid</em> section of the 
+			<em>Properties</em> view of the diagram itself.
+		</p> 
+		<img border="0" src="images/preferences_sirius_diagram_rulers_grid.png"/>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/diagrams/images/afterRemoveBendpoints.png b/doc/6.0.x/user/diagrams/images/afterRemoveBendpoints.png
new file mode 100644
index 0000000..051e9b5
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/afterRemoveBendpoints.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/beforeBendpoints.png b/doc/6.0.x/user/diagrams/images/beforeBendpoints.png
new file mode 100644
index 0000000..96d8da3
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/beforeBendpoints.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/compartments_collapse3.png b/doc/6.0.x/user/diagrams/images/compartments_collapse3.png
new file mode 100644
index 0000000..8da9f22
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/compartments_collapse3.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/compoundmoves2.png b/doc/6.0.x/user/diagrams/images/compoundmoves2.png
new file mode 100644
index 0000000..2a074f0
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/compoundmoves2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/decoratorsSyncStatus.png b/doc/6.0.x/user/diagrams/images/decoratorsSyncStatus.png
new file mode 100644
index 0000000..63ada92
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/decoratorsSyncStatus.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor11.png b/doc/6.0.x/user/diagrams/images/diagram_editor11.png
new file mode 100644
index 0000000..119b25f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor11.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor11_tabbar.png b/doc/6.0.x/user/diagrams/images/diagram_editor11_tabbar.png
new file mode 100644
index 0000000..92f16da
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor11_tabbar.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor12.png b/doc/6.0.x/user/diagrams/images/diagram_editor12.png
new file mode 100644
index 0000000..674600b
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor12.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor13.png b/doc/6.0.x/user/diagrams/images/diagram_editor13.png
new file mode 100644
index 0000000..01ab782
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor13.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor16.png b/doc/6.0.x/user/diagrams/images/diagram_editor16.png
new file mode 100644
index 0000000..69a9c16
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor16.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor17.png b/doc/6.0.x/user/diagrams/images/diagram_editor17.png
new file mode 100644
index 0000000..cdb33a9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor17.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor18.png b/doc/6.0.x/user/diagrams/images/diagram_editor18.png
new file mode 100644
index 0000000..78370d6
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor18.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor19.png b/doc/6.0.x/user/diagrams/images/diagram_editor19.png
new file mode 100644
index 0000000..6a928fa
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor19.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor20.png b/doc/6.0.x/user/diagrams/images/diagram_editor20.png
new file mode 100644
index 0000000..9d26489
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor20.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor20b.png b/doc/6.0.x/user/diagrams/images/diagram_editor20b.png
new file mode 100644
index 0000000..199ca05
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor20b.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor21.png b/doc/6.0.x/user/diagrams/images/diagram_editor21.png
new file mode 100644
index 0000000..ba1df55
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor21.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor3.png b/doc/6.0.x/user/diagrams/images/diagram_editor3.png
new file mode 100644
index 0000000..4115f93
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor3.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor4.png b/doc/6.0.x/user/diagrams/images/diagram_editor4.png
new file mode 100644
index 0000000..345f660
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor4.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor5.png b/doc/6.0.x/user/diagrams/images/diagram_editor5.png
new file mode 100644
index 0000000..d63906d
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor5.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor6.png b/doc/6.0.x/user/diagrams/images/diagram_editor6.png
new file mode 100644
index 0000000..46d7c5e
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor6.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor7.png b/doc/6.0.x/user/diagrams/images/diagram_editor7.png
new file mode 100644
index 0000000..e366b0c
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor7.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor8.png b/doc/6.0.x/user/diagrams/images/diagram_editor8.png
new file mode 100644
index 0000000..5fc04a1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor8.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_copy_format.png b/doc/6.0.x/user/diagrams/images/diagram_editor_copy_format.png
new file mode 100644
index 0000000..f695bb5
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_copy_format.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_dnd01.png b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd01.png
new file mode 100644
index 0000000..bd885a8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02a.png b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02a.png
new file mode 100644
index 0000000..c748aa4
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02a.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02b.png b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02b.png
new file mode 100644
index 0000000..3b8d433
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd02b.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03a.png b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03a.png
new file mode 100644
index 0000000..2a15980
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03a.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03b.png b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03b.png
new file mode 100644
index 0000000..cd87f6b
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_dnd03b.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_filter_toolbar_activated.png b/doc/6.0.x/user/diagrams/images/diagram_editor_filter_toolbar_activated.png
new file mode 100644
index 0000000..f14d385
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_filter_toolbar_activated.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_edge_label_1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_edge_label_1.png
new file mode 100644
index 0000000..49311ac
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_edge_label_1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_1.png
new file mode 100644
index 0000000..756782a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_1.png
new file mode 100644
index 0000000..42bac1e
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_2.png
new file mode 100644
index 0000000..56d4580
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_icon_2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_outline.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_outline.png
new file mode 100644
index 0000000..07d213d
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_outline.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_tabbar.png b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_tabbar.png
new file mode 100644
index 0000000..2c9a087
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_hide_label_tabbar.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_note_pin_configuration01.png b/doc/6.0.x/user/diagrams/images/diagram_editor_note_pin_configuration01.png
new file mode 100644
index 0000000..b8445da
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_note_pin_configuration01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format1.png
new file mode 100644
index 0000000..e03e459
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format2.png
new file mode 100644
index 0000000..398999f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_format2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout1.png
new file mode 100644
index 0000000..94d8a9a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout2.png
new file mode 100644
index 0000000..9147270
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_layout2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style1.png
new file mode 100644
index 0000000..bb55dcf
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style2.png
new file mode 100644
index 0000000..18c2b4a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_paste_style2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin01.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin01.png
new file mode 100644
index 0000000..b76fb2b
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin02.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin02.png
new file mode 100644
index 0000000..6abf974
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin02.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin03.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin03.png
new file mode 100644
index 0000000..c82edd8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin03.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin04.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin04.png
new file mode 100644
index 0000000..9770450
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin04.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin05.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin05.png
new file mode 100644
index 0000000..9a30c06
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin05.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin_configuration01.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_configuration01.png
new file mode 100644
index 0000000..0c1ae42
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_configuration01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog1.png
new file mode 100644
index 0000000..5bff512
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog2.png
new file mode 100644
index 0000000..33ba02b
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_dialog2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_pin_toolbar_activated.png b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_toolbar_activated.png
new file mode 100644
index 0000000..4487bc6
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_pin_toolbar_activated.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog1.png b/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog1.png
new file mode 100644
index 0000000..90421f3
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog2.png b/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog2.png
new file mode 100644
index 0000000..996d84f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_show_hide_dialog2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_editor_transient_layer.png b/doc/6.0.x/user/diagrams/images/diagram_editor_transient_layer.png
new file mode 100644
index 0000000..a133501
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_editor_transient_layer.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_export_history.png b/doc/6.0.x/user/diagrams/images/diagram_export_history.png
new file mode 100644
index 0000000..1305006
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_export_history.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_export_image_tabbar.png b/doc/6.0.x/user/diagrams/images/diagram_export_image_tabbar.png
new file mode 100644
index 0000000..bf12106
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_export_image_tabbar.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_export_one_image.png b/doc/6.0.x/user/diagrams/images/diagram_export_one_image.png
new file mode 100644
index 0000000..a69284d
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_export_one_image.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_export_wrong_extension.png b/doc/6.0.x/user/diagrams/images/diagram_export_wrong_extension.png
new file mode 100644
index 0000000..397362a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_export_wrong_extension.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_sample1.png b/doc/6.0.x/user/diagrams/images/diagram_sample1.png
new file mode 100644
index 0000000..03dfbe9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_sample1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/diagram_sample_annotated.png b/doc/6.0.x/user/diagrams/images/diagram_sample_annotated.png
new file mode 100644
index 0000000..53e10a7
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/diagram_sample_annotated.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/distribute_Centers.png b/doc/6.0.x/user/diagrams/images/distribute_Centers.png
new file mode 100644
index 0000000..74c50d8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/distribute_Centers.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/distribute_WithUniformGap.png b/doc/6.0.x/user/diagrams/images/distribute_WithUniformGap.png
new file mode 100644
index 0000000..21944de
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/distribute_WithUniformGap.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/distribute_initialState.png b/doc/6.0.x/user/diagrams/images/distribute_initialState.png
new file mode 100644
index 0000000..33e0439
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/distribute_initialState.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_edgeSelected.png b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_edgeSelected.png
new file mode 100644
index 0000000..6afb62c
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_edgeSelected.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_labelSelected.png b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_labelSelected.png
new file mode 100644
index 0000000..5c7c57e
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_labelSelected.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_preference.png b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_preference.png
new file mode 100644
index 0000000..a1eeacf
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/edgeLabelAttachment_preference.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/exportSample.png b/doc/6.0.x/user/diagrams/images/exportSample.png
new file mode 100644
index 0000000..7ac6ce3
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/exportSample.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/exportSampleSource.png b/doc/6.0.x/user/diagrams/images/exportSampleSource.png
new file mode 100644
index 0000000..82dcde1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/exportSampleSource.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/layoutingMode_forbidden_dnd.png b/doc/6.0.x/user/diagrams/images/layoutingMode_forbidden_dnd.png
new file mode 100644
index 0000000..c82aeef
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/layoutingMode_forbidden_dnd.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/layouting_mode_tabbar_activate.png b/doc/6.0.x/user/diagrams/images/layouting_mode_tabbar_activate.png
new file mode 100644
index 0000000..c6e8330
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/layouting_mode_tabbar_activate.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/moveEdgeGroup1.png b/doc/6.0.x/user/diagrams/images/moveEdgeGroup1.png
new file mode 100644
index 0000000..e621e64
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/moveEdgeGroup1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/moveEdgeGroup2.png b/doc/6.0.x/user/diagrams/images/moveEdgeGroup2.png
new file mode 100644
index 0000000..fce0889
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/moveEdgeGroup2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_folding.png b/doc/6.0.x/user/diagrams/images/palette_folding.png
new file mode 100644
index 0000000..15101a8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_folding.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_moving.png b/doc/6.0.x/user/diagrams/images/palette_moving.png
new file mode 100644
index 0000000..a31b2ff
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_moving.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_resizing.png b/doc/6.0.x/user/diagrams/images/palette_resizing.png
new file mode 100644
index 0000000..9890cc4
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_resizing.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_tool_drawer.png b/doc/6.0.x/user/diagrams/images/palette_tool_drawer.png
new file mode 100644
index 0000000..86efacd
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_tool_drawer.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_tool_group.png b/doc/6.0.x/user/diagrams/images/palette_tool_group.png
new file mode 100644
index 0000000..e50ee39
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_tool_group.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/palette_tools.png b/doc/6.0.x/user/diagrams/images/palette_tools.png
new file mode 100644
index 0000000..c41215f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/palette_tools.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/popup_bar.png b/doc/6.0.x/user/diagrams/images/popup_bar.png
new file mode 100644
index 0000000..ac15be9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/popup_bar.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/port_selection_handles1.png b/doc/6.0.x/user/diagrams/images/port_selection_handles1.png
new file mode 100644
index 0000000..b94a613
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/port_selection_handles1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/port_selection_handles2.png b/doc/6.0.x/user/diagrams/images/port_selection_handles2.png
new file mode 100644
index 0000000..2fb3099
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/port_selection_handles2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/port_selection_handles3.png b/doc/6.0.x/user/diagrams/images/port_selection_handles3.png
new file mode 100644
index 0000000..75734b9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/port_selection_handles3.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/port_selection_handles4.png b/doc/6.0.x/user/diagrams/images/port_selection_handles4.png
new file mode 100644
index 0000000..4bbd81b
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/port_selection_handles4.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram.png
new file mode 100644
index 0000000..60ca1b7
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_appearance.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_appearance.png
new file mode 100644
index 0000000..fa5fc45
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_appearance.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_connections.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_connections.png
new file mode 100644
index 0000000..f0e0835
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_connections.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_pathmaps.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_pathmaps.png
new file mode 100644
index 0000000..e2328f1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_pathmaps.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_printing.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_printing.png
new file mode 100644
index 0000000..2ab091d
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_printing.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_rulers_grid.png b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_rulers_grid.png
new file mode 100644
index 0000000..263ec95
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/preferences_sirius_diagram_rulers_grid.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/properties_view_rulers_and_grid_tab.png b/doc/6.0.x/user/diagrams/images/properties_view_rulers_and_grid_tab.png
new file mode 100644
index 0000000..0b0fc9f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/properties_view_rulers_and_grid_tab.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/rectilinearAfterRemoveBendpoints.png b/doc/6.0.x/user/diagrams/images/rectilinearAfterRemoveBendpoints.png
new file mode 100644
index 0000000..eb55619
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/rectilinearAfterRemoveBendpoints.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/rectilinearWithBendpoints.png b/doc/6.0.x/user/diagrams/images/rectilinearWithBendpoints.png
new file mode 100644
index 0000000..0f0cf4d
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/rectilinearWithBendpoints.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/reset_origin_after.png b/doc/6.0.x/user/diagrams/images/reset_origin_after.png
new file mode 100644
index 0000000..6c375ce
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/reset_origin_after.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/reset_origin_before.png b/doc/6.0.x/user/diagrams/images/reset_origin_before.png
new file mode 100644
index 0000000..be33cd1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/reset_origin_before.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/reset_origin_masked_edge.png b/doc/6.0.x/user/diagrams/images/reset_origin_masked_edge.png
new file mode 100644
index 0000000..647ab4f
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/reset_origin_masked_edge.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/reset_origin_visible_edge.png b/doc/6.0.x/user/diagrams/images/reset_origin_visible_edge.png
new file mode 100644
index 0000000..99dd0a3
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/reset_origin_visible_edge.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snap-back-label-from-label.png b/doc/6.0.x/user/diagrams/images/snap-back-label-from-label.png
new file mode 100644
index 0000000..0d64ad8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snap-back-label-from-label.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snap-back-label.png b/doc/6.0.x/user/diagrams/images/snap-back-label.png
new file mode 100644
index 0000000..b26db27
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snap-back-label.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snap_to_all_shapes.png b/doc/6.0.x/user/diagrams/images/snap_to_all_shapes.png
new file mode 100644
index 0000000..a02d8f6
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snap_to_all_shapes.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snap_to_all_shapes_2.png b/doc/6.0.x/user/diagrams/images/snap_to_all_shapes_2.png
new file mode 100644
index 0000000..ad76b93
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snap_to_all_shapes_2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snap_to_shape.png b/doc/6.0.x/user/diagrams/images/snap_to_shape.png
new file mode 100644
index 0000000..dba8a12
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snap_to_shape.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snapped-back-label-from-label.png b/doc/6.0.x/user/diagrams/images/snapped-back-label-from-label.png
new file mode 100644
index 0000000..2ceb5a0
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snapped-back-label-from-label.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/snapped-back-label.png b/doc/6.0.x/user/diagrams/images/snapped-back-label.png
new file mode 100644
index 0000000..912b3c7
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/snapped-back-label.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenHorizontalInitialState.png b/doc/6.0.x/user/diagrams/images/straightenHorizontalInitialState.png
new file mode 100644
index 0000000..40546d9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenHorizontalInitialState.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToBottom.png b/doc/6.0.x/user/diagrams/images/straightenToBottom.png
new file mode 100644
index 0000000..9c71f08
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToBottom.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToLeft.png b/doc/6.0.x/user/diagrams/images/straightenToLeft.png
new file mode 100644
index 0000000..3c579ca
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToLeft.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToMenu.png b/doc/6.0.x/user/diagrams/images/straightenToMenu.png
new file mode 100644
index 0000000..d686ea1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToMenu.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToRight.png b/doc/6.0.x/user/diagrams/images/straightenToRight.png
new file mode 100644
index 0000000..a92f59c
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToRight.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToTabbarButton.png b/doc/6.0.x/user/diagrams/images/straightenToTabbarButton.png
new file mode 100644
index 0000000..2173ddb
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToTabbarButton.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenToTop.png b/doc/6.0.x/user/diagrams/images/straightenToTop.png
new file mode 100644
index 0000000..ccc9eee
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenToTop.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenVerticalInitialState.png b/doc/6.0.x/user/diagrams/images/straightenVerticalInitialState.png
new file mode 100644
index 0000000..6917350
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenVerticalInitialState.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenWithLeftPinned.png b/doc/6.0.x/user/diagrams/images/straightenWithLeftPinned.png
new file mode 100644
index 0000000..74bad50
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenWithLeftPinned.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/straightenWithRightPinned.png b/doc/6.0.x/user/diagrams/images/straightenWithRightPinned.png
new file mode 100644
index 0000000..0f5c24a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/straightenWithRightPinned.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram1.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram1.png
new file mode 100644
index 0000000..39d6d61
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram1.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram2.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram2.png
new file mode 100644
index 0000000..6877a48
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram2.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram3.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram3.png
new file mode 100644
index 0000000..4a95bc8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram3.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram4.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram4.png
new file mode 100644
index 0000000..7b195af
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram4.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram5.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram5.png
new file mode 100644
index 0000000..2690c09
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram5.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/synchronized_diagram_statusbar.png b/doc/6.0.x/user/diagrams/images/synchronized_diagram_statusbar.png
new file mode 100644
index 0000000..6436527
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/synchronized_diagram_statusbar.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar01.png b/doc/6.0.x/user/diagrams/images/tabbar01.png
new file mode 100644
index 0000000..6a71098
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar02.png b/doc/6.0.x/user/diagrams/images/tabbar02.png
new file mode 100644
index 0000000..ca5cf92
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar02.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar4x01.png b/doc/6.0.x/user/diagrams/images/tabbar4x01.png
new file mode 100644
index 0000000..4128e20
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar4x01.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar4x02.png b/doc/6.0.x/user/diagrams/images/tabbar4x02.png
new file mode 100644
index 0000000..e5c53cd
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar4x02.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_alignment_control.png b/doc/6.0.x/user/diagrams/images/tabbar_alignment_control.png
new file mode 100644
index 0000000..86bc077
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_alignment_control.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_apply_style.png b/doc/6.0.x/user/diagrams/images/tabbar_apply_style.png
new file mode 100644
index 0000000..dab7fd9
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_apply_style.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_arrange_selection.png b/doc/6.0.x/user/diagrams/images/tabbar_arrange_selection.png
new file mode 100644
index 0000000..6b3c5d2
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_arrange_selection.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_auto_size.png b/doc/6.0.x/user/diagrams/images/tabbar_auto_size.png
new file mode 100644
index 0000000..7d39ddc
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_auto_size.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_automatic_layout_tools.png b/doc/6.0.x/user/diagrams/images/tabbar_automatic_layout_tools.png
new file mode 100644
index 0000000..230c0e5
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_automatic_layout_tools.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_cancel_custom_style.png b/doc/6.0.x/user/diagrams/images/tabbar_cancel_custom_style.png
new file mode 100644
index 0000000..da854ab
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_cancel_custom_style.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_color_style_controls.png b/doc/6.0.x/user/diagrams/images/tabbar_color_style_controls.png
new file mode 100644
index 0000000..e365bef
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_color_style_controls.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_copy_layout.png b/doc/6.0.x/user/diagrams/images/tabbar_copy_layout.png
new file mode 100644
index 0000000..0f5f9b5
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_copy_layout.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_delete_from_diagram.png b/doc/6.0.x/user/diagrams/images/tabbar_delete_from_diagram.png
new file mode 100644
index 0000000..a9f3beb
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_delete_from_diagram.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_delete_from_model.png b/doc/6.0.x/user/diagrams/images/tabbar_delete_from_model.png
new file mode 100644
index 0000000..65bcca1
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_delete_from_model.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_distribute_actions.png b/doc/6.0.x/user/diagrams/images/tabbar_distribute_actions.png
new file mode 100644
index 0000000..e370d93
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_distribute_actions.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_export_image.png b/doc/6.0.x/user/diagrams/images/tabbar_export_image.png
new file mode 100644
index 0000000..c64e78a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_export_image.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_filters_selection.png b/doc/6.0.x/user/diagrams/images/tabbar_filters_selection.png
new file mode 100644
index 0000000..df398c8
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_filters_selection.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_font_controls.png b/doc/6.0.x/user/diagrams/images/tabbar_font_controls.png
new file mode 100644
index 0000000..9f31faa
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_font_controls.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_hide.png b/doc/6.0.x/user/diagrams/images/tabbar_hide.png
new file mode 100644
index 0000000..2e44d15
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_hide.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_hide_label.png b/doc/6.0.x/user/diagrams/images/tabbar_hide_label.png
new file mode 100644
index 0000000..5fff9cd
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_hide_label.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_layers_selection.png b/doc/6.0.x/user/diagrams/images/tabbar_layers_selection.png
new file mode 100644
index 0000000..2d59363
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_layers_selection.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_layouting_mode.png b/doc/6.0.x/user/diagrams/images/tabbar_layouting_mode.png
new file mode 100644
index 0000000..7043991
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_layouting_mode.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_make_same_size.png b/doc/6.0.x/user/diagrams/images/tabbar_make_same_size.png
new file mode 100644
index 0000000..1281c23
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_make_same_size.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_paste_layout.png b/doc/6.0.x/user/diagrams/images/tabbar_paste_layout.png
new file mode 100644
index 0000000..50e7fe3
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_paste_layout.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin.png b/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin.png
new file mode 100644
index 0000000..5bcb47e
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin_02.png b/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin_02.png
new file mode 100644
index 0000000..3ea18e5
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_pin_unpin_02.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_refresh.png b/doc/6.0.x/user/diagrams/images/tabbar_refresh.png
new file mode 100644
index 0000000..a80361a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_refresh.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_selection_tools.png b/doc/6.0.x/user/diagrams/images/tabbar_selection_tools.png
new file mode 100644
index 0000000..f3e792a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_selection_tools.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_show_hide.png b/doc/6.0.x/user/diagrams/images/tabbar_show_hide.png
new file mode 100644
index 0000000..804f768
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_show_hide.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/tabbar_zoom.png b/doc/6.0.x/user/diagrams/images/tabbar_zoom.png
new file mode 100644
index 0000000..e13cbda
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/tabbar_zoom.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/images/withBendpoints.png b/doc/6.0.x/user/diagrams/images/withBendpoints.png
new file mode 100644
index 0000000..c4fc32a
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/images/withBendpoints.png
Binary files differ
diff --git a/doc/6.0.x/user/diagrams/videos/moveInAllDirections.mp4 b/doc/6.0.x/user/diagrams/videos/moveInAllDirections.mp4
new file mode 100644
index 0000000..2c64e83
--- /dev/null
+++ b/doc/6.0.x/user/diagrams/videos/moveInAllDirections.mp4
Binary files differ
diff --git a/doc/6.0.x/user/general/Aird_Editor.html b/doc/6.0.x/user/general/Aird_Editor.html
new file mode 100644
index 0000000..2bd0a5c
--- /dev/null
+++ b/doc/6.0.x/user/general/Aird_Editor.html
@@ -0,0 +1,440 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Aird_Editor</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="AirdEditor">Aird Editor</h1>
+		<p>This document describes the new form-based editor for 
+			<code>aird</code> files introduced in version 5.0. This editor is associated to 
+			<code>*.aird</code> files (which contains Sirius representations data) and provides end-users complete overview of their models and representations, and direct access to the most common operations.
+		</p>
+		<p>This document assumes you are already faimiliar with the vocabulary associated with Sirius; if that is not the case, please refer to 
+			<a href="Modeling%20Project.html">the Modeling Project documentation</a> which describes in details the more &#8220;traditional&#8221; Sirius UI and the associated concepts.
+		</p>
+		<p>
+			<em>Note:</em> This new editor has been introduced with Sirius 5.0. While it is already functional, it should be considered as a first iteration, and its UI is subject to change without warnings in later versions based on experience and user feedback.
+		</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#AirdEditor">Aird Editor</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#overview">Overview</a>
+					</li>
+					<li>
+						<a href="#opening">Opening the Aird Editor</a>
+					</li>
+					<li>
+						<a href="#closing">Closing the Aird Editor and unloading models</a>
+					</li>
+					<li>
+						<a href="#semantic_models">Managing the Semantic Models</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#LoadinganExistingModel">Loading an Existing Model</a>
+							</li>
+							<li>
+								<a href="#model_creation_wizard">Creating New Models</a>
+							</li>
+							<li>
+								<a href="#removing_model">Removing Model Dependencies And Representations From The Aird Editor</a>
+							</li>
+							<li>
+								<a href="#removing_representation">Removing Representations From The Aird Editor</a>
+							</li>
+							<li>
+								<a href="#quick_editing">Models Quick Editing</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#representations">Managing Representations and Viewpoints</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#visualize_viewpoints_representations">Visualizing Viewpoints and Representations</a>
+							</li>
+							<li>
+								<a href="#enable_disable_viewpoints">Enabling and Disabling Viewpoints</a>
+							</li>
+							<li>
+								<a href="#create_remove_representations">Creating and Removing Representations</a>
+							</li>
+							<li>
+								<a href="#open_representation">Opening a Sirius Modeler From a Representation</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="overview">Overview</h2>
+		<p>The traditional Sirius UI is centered on the 
+			<em>Modeling</em> perspective, and in particular on the 
+			<em>Model Explorer</em> view. For some use cases, especially when Sirius representations are not the primary focus of the user but only a secondary feature to support their main task, this reliance on a specific perspective or view can be inconvenient. The Aird editor is designed to provide an alternative UI to interact with Sirius that is better suited for these use cases. Because the editor is available from any perspective and directly exposes the most common user operations inside its UI, it makes it more convenient to use Sirius in a variety of contexts.
+		</p>
+		<p>Note that most of the features available from the aird editor are also available from the 
+			<em>Model Explorer</em>'s UI; the editor simply provides alternative ways to use them that can be more convenient in some contexts. There are two exceptions, described in more details below, which are currently specific to the Aird editor: the generic 
+			<a href="#model_creation_wizard">model creation wizard</a> and the ability to 
+			<a href="#quick_editing">add/remove elements directly</a> from the semantic models.
+		</p>
+		<p>Using Sirius to display and manipulate your domain models requires telling Sirius:</p>
+		<ul>
+			<li>which are the models (files) your are interested in;</li>
+			<li>which of the compatible representation types you want to make use of.</li>
+		</ul>
+		<p>Representation types are defined in plug-ins which extend Sirius and that you need to install in your environment. Which ones will be available to you depend on what concrete modelers you have installed. Sirius-based modelers can provide many alternative representation types for the same semantic models, and organize them in 
+			<em>viewpoints</em>, which corresponds to the different activities or point of views that can be applied to the models.
+		</p>
+		<p>This organization is reflected in the editor, which presents two main blocks:</p>
+		<p>
+			<img border="0" src="images/aird_editor_full.png"/>
+		</p>
+		<p>On the left, the 
+			<em>Models</em> block shows the raw semantic models, which can come from multiple files (resources), and allows you to configure which models should be loaded, to navigate inside them, to perform some basic editing tasks, and finally to create and manage Sirius representations on them.
+		</p>
+		<p>On the right the 
+			<em>Representations</em> block displays all the types of representations available and all the concrete ones already created, organized by viewpoint (by default). It also allows you to manage the representations and viewpoints. The representation types available to you will depend both on the kind of models you have loaded and which modeler plug-ins you have installed in your environment. For example if you have installed 
+			<a href="http://www.umldesigner.org/">UML Designer</a> 
+			<strong>and</strong> have at least one 
+			<code>*.uml</code> model loaded, you will find there the different kinds of UML diagrams implemented in 
+			<em>UML Designer</em>.
+		</p>
+		<h2 id="opening">Opening the Aird Editor</h2>
+		<p>The Aird editor is the default editor associated to the 
+			<code>*.aird</code> files in Eclipse. In some perspectives (e.g. 
+			<em>Java</em>), double-clicking on an 
+			<code>aird</code> file will open the editor and automatically load all the files/models needed if that it not already the case. In other contexts where double-click performs a different operation you may need to open the context menu and select 
+			<i>Open With &gt; Aird Editor</i>.
+		</p>
+		<p>It is also possible to configure Sirius to automatically open the Aird editor when an 
+			<code>*.aird</code> file is first loaded. When this mode is enabled, opening/expanding a 
+			<em>Modeling Project</em> from the 
+			<em>Model Explorer</em>, which triggers the loading of the models, will also open the editor. This behavior can be enabled via the Sirius preference 
+			<strong>
+				<i>Automatically open the aird editor when an aird file is loaded</i>
+			</strong>: 
+		</p>
+		<p>
+			<img border="0" src="images/aird_editor_pref.png"/>
+		</p>
+		<p>When this preference is activated, then aird editor is opened automatically in the following situations:</p>
+		<ul>
+			<li>After clicking 
+				<i>Finish</i> button of the 
+				<i>Create a modeling project</i> wizard, the project is created as well as its aird file. The newly created aird file is automatically opened in the editor.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_modeling_project_creation_wizard.png"/>
+		</p>
+		<ul>
+			<li>When a project with the 
+				<em>Modeling</em> nature is opened from 
+				<i>Model Explorer</i> or 
+				<i>Project Explorer</i>, the aird editor is also automatically opened if it contains a main aird file.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_open_project_modeling_explorer.png"/>
+		</p>
+		<ul>
+			<li>When the aird file is first expanded from a project with 
+				<em>Modeling</em> nature from 
+				<i>Model Explorer</i> or 
+				<i>Project Explorer</i> view, the aird editor is also opened automatically. 
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_expand_aird_file.png"/>
+		</p>
+		<h2 id="closing">Closing the Aird Editor and unloading models</h2>
+		<p>You have four different ways to close the aird editor. But not all the ways have the same behaviour.</p>
+		<p>There is one thing to take in consideration when it comes to close the aird editor:</p>
+		<ul>
+			<li>An opened aird editor has all its referenced models loaded in memory as well as any representation opened in a Sirius editor. For big models and big representations, this can have a big memory footprint. So when you want to close the aird editor you must ask yourself if you want to free the memory used by the loaded aird or not. Then you have to choose the right way to close the editor accordingly. Indeed some way to close the editor will not free this memory and some others will.</li>
+		</ul>
+		<p>The closing mechanism which does not unload models and representations is the following:</p>
+		<ul>
+			<li>Clicking on the editor white cross on the top right corner of editor&#8217;s tab. This will only close the aird editor and will not free memory used by loaded models and representations opened in Sirius editors.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_close_editor_with_cross.png"/>
+		</p>
+		<p>The closing mechanisms which do unload models and representations from memory are the following:</p>
+		<ul>
+			<li>If your aird editor refers to an aird file on a 
+				<em>Modeling Project</em>, the only way to unload models and representations from memory is to close it.
+			</li>
+		</ul>
+		<ul>
+			<li>If your aird editor does not refer to an aird file on a 
+				<em>Modeling Project</em>, a button 
+				<em>Unload models</em> is provided by the editor and allows to close the aird editor and free memory used by loaded models and representations.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_close_editor_with_button.png"/>
+		</p>
+		<ul>
+			<li>When aird editor is not in a 
+				<em>Modeling Project</em>, 
+				<em>Close</em> action in contextual menu of the aird file is available. This action is reachable in any view showing the aird as an IFile like 
+				<em>Model Explorer</em>, 
+				<em>Package Explorer</em> etc... 
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_close_editor_with_right_click.png"/>
+		</p>
+		<h2 id="semantic_models">Managing the Semantic Models</h2>
+		<p>This section describes how to manage the semantic models associated to your aird file, which are visible in the 
+			<em>Models</em> block on the left side of the editor:
+		</p>
+		<p>
+			<img border="0" src="images/aird_editor_models_block.png"/>
+		</p>
+		<p>The 
+			<em>Models</em> block displays a tree showing all semantic models associated to the aird file, organized in two categories:
+		</p>
+		<ul>
+			<li>The models located in the same workspace project as the one containing the aird file from which editor has been opened. These are visible as root items on the graphical tree.</li>
+		</ul>
+		<ul>
+			<li>The models located in a project that is different from the project containing the aird file from which the editor has been opened. These models are visible under the 
+				<em>Project Dependencies</em> category.
+			</li>
+		</ul>
+		<p>For example:</p>
+		<p>
+			<img border="0" src="images/aird_editor_model_loading.png"/>
+		</p>
+		<p>Regardless of the category they appear in, all the semantic models associated with an aird file are fully loaded, and you can expand the tree elements to navigate inside your models. The tree can be filtered on the elements labels using the search box at the top to quickly locate specific model elements:</p>
+		<p>
+			<img border="0" src="images/aird_editor_filter_models_elements.png"/>
+		</p>
+		<p>In addition to the actual semantic elements, this view also includes all existing representations (diagrams, tables, trees). As in the case of the 
+			<em>Model Explorer</em>, the representations are available directly below the semantic element they represent, and can be opened by double-clicking on them.
+		</p>
+		<h3 id="LoadinganExistingModel">Loading an Existing Model</h3>
+		<p>To be able to edit a semantic model with a Sirius modeler, you must first tell the aird it can edit that model. There are two mechanisms to do so:</p>
+		<ul>
+			<li>An automatic one were, if your project has 
+				<em>Modeling</em> nature, any model file added inside the project will be automaticall added to the aird file.
+			</li>
+			<li>A manual one were you have two different buttons in the editor:
+				<ul>
+					<li>The 
+						<strong>
+							<i>New...</i>
+						</strong> button, which opens a wizard allowing to create a new model from any registered package and in any project you want (see the next section for more details on the wizard). The newly created model will be loaded automatically in the aird file.
+					</li>
+					<li>The 
+						<strong>
+							<i>Add</i>
+						</strong> button, which allows to load into the aird file an already existing model either from the same project or from another one.
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>Note that you can also add a new semantic model to a session by simply drag and dropping the model file from the workpace (from any Eclipse view) into the 
+			<em>Models</em> block on the left side of the editor.
+		</p>
+		<h3 id="model_creation_wizard">Creating New Models</h3>
+		<p>The aird editor features a generic model creation wizard that can be used to create new models files of any kind supported in the environement (i.e. instances of any installed meta-model). To create a new model, select the 
+			<i>New...</i> button. It opens a creation wizard:
+		</p>
+		<ul>
+			<li>The first page asks you to select which kind of model you want to create. It will present you all the EMF metamodels available in your installation (e.g. UML or BPMN). You can use the text field to filter among all the meta-models available (in large installations, there may be hundreds of them).</li>
+		</ul>
+		<p>
+			<img border="0" src="images\aird_editor_create_new_model.png"/>
+		</p>
+		<ul>
+			<li>Once the metamodel is selected, the second page asks for the type of the root element in the new model file. By default Sirius will try to infer good candidates for this root element type, and show only those. You can deselect the 
+				<em>Show only suggested root types</em> checkbox to reveal 
+				<strong>all</strong> the concrete types defined in the metamodel you selected.
+			</li>
+			<li>Finally, the third page of the wizard will ask you for the name and location of the new file to create. By default, the file will be created in the same project as the 
+				<code>aird</code> file and have a generated name.
+			</li>
+		</ul>
+		<h3 id="removing_model">Removing Model Dependencies And Representations From The Aird Editor</h3>
+		<p>To remove 
+			<strong>models dependencies</strong>, you must select the root model items and click on the 
+			<strong>
+				<i>Remove</i>
+			</strong> button:
+		</p>
+		<p>
+			<img border="0" src="images/aird_editor_remove_semantic_model.png"/>
+		</p>Note that this action does not delete the physical model file.
+		<p>The removal can be applied only if some rules are respected. If they are not, the remove button will still be active and its activation, will inform you of the reasons why you cannot proceed the removal.</p>
+		<p>The rules regarding models dependencies removal are the following :</p>
+		<ul>
+			<li>A model dependency cannot be removed if at least one of its element contains a representation. Note that the representation can be invisible if the viewpoint providing it is not enabled.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_remove_semantic_model_representation.png"/>
+		</p>
+		<ul>
+			<li>A model dependency cannot be removed if you are working inside a project with the 
+				<em>Modeling</em> nature and the semantic model is located inside this project. Indeed, the 
+				<em>Modeling</em> nature ensures that all model files stored inside the project are always loaded in the project&#8217;s 
+				<code>aird</code> file.
+			</li>
+		</ul>
+		<ul>
+			<li>A model dependency cannot be removed if it is a fragment of a model. In this situation you need to use the 
+				<strong>
+					<i>Uncontrol</i>
+				</strong> action to remove it.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_remove_semantic_model_uncontrol.png"/>
+		</p>
+		<h3 id="removing_representation">Removing Representations From The Aird Editor</h3>
+		<p>To remove a 
+			<strong>representation</strong> from the aird file, you can either select it in the editor and use the right click contextual action 
+			<strong>
+				<i>Delete</i>
+			</strong> or the 
+			<strong>
+				<i>DEL</i>
+			</strong> keyboard key.
+		</p>
+		<h3 id="quick_editing">Models Quick Editing</h3>
+		<p>The normal way to display and edit models with Sirius is to do it through one or several Sirius-defined representations (
+			<em>modelers</em>), which define domain-specific ways to represent and manipulate the data, and ensure some level of consistency.
+		</p>
+		<p>In some situations you may need to manipulate the model elements more directly, even if no Sirius-based modeler or tool has been defined to support your use case. The 
+			<em>aird editor</em> provides support for &#8220;quick editing&#8221; of the semantic models independently of a Sirius representation. It works like any generic EMF models editor:
+		</p>
+		<ul>
+			<li>You can right-click on a semantic element to create new children inside, or to delete it. </li>
+			<li>When you have selected an element, you can use the 
+				<em>Properties</em> view to edit its features. Note that the content of this view depends on which 
+				<em>viewpoints</em> are currently enabled. If you have enabled viewpoints which define specific properties views for your elements, these will be used instead of a generic one, so not all direct model operations may be available.
+			</li>
+		</ul>
+		<p>Keep in mind that editing the semantic models this way bypasses any high-level restrictions and rules that may be  brought by Sirius modelers. Depending on the semantic models, these direct manipulation may break domain constraints. Use with care.</p>
+		<h2 id="representations">Managing Representations and Viewpoints</h2>
+		<p>To use a Sirius modeler to edit a model element, you need to create a graphical representation for it. This representation is then editable with a Sirius modeler that can be a diagram, a tree or a table editor. Concrete representations are created from a 
+			<em>representation type</em>, which are provided by Sirius-based modelers, and organized by 
+			<em>viewpoints</em>.
+		</p>
+		<p>In addition to providing representation types from which representation can be created, viewpoints can also provide extensions to other viewpoints' representation types, adding for example new tools to them.</p>
+		<p>The following sections describe how to create/remove representations and the related functionalities.</p>
+		<h3 id="visualize_viewpoints_representations">Visualizing Viewpoints and Representations</h3>
+		<p>The aird editor has a block named 
+			<em>Representation</em> which displays all the available viewpoints (compatible with the semantic models loaded), the representation types they define, and the actual concrete representations that have been created. All these elements are organized in a tree:
+		</p>
+		<p>
+			<img border="0" src="images/aird_editor_representations_block.png"/>
+		</p>
+		<p>This 
+			<em>Representations</em> block is separated in two parts:
+		</p>
+		<ul>
+			<li>The left is the tree showing viewpoints with their representations types (showing the number of representations it contains) and representations.</li>
+			<li>The right part shows the documentation of the viewpoint of the selected element. It allows to find what viewpoint provides the representation type providing Sirius modeler functionalities fitting your needs to edit graphically your models.</li>
+		</ul>
+		<p>To the bottom of these two parts are two checkboxes, that can be used to control which elements are displayed:</p>
+		<ul>
+			<li>
+				<strong>
+					<i>Group representations by viewpoint</i>
+				</strong>: when active (the default), viewpoints items are shown in the tree. When deactivated, only representation types and their representations are shown.
+			</li>
+			<li>
+				<strong>
+					<i>Show disabled viewpoints</i>
+				</strong>: when active (the default), 
+				<strong>all</strong> the available viewpoints (and their content) which apply to the semantic elements currently loaded are displayed, even if they are currently disabled. This is useful when starting a new project as it shows you immediatly all the features that are available to you, even if you have not yet enabled any. Once you have enabled the viewpoints you need, you may want to hide the others to help focus. 
+			</li>
+		</ul>
+		<p>A viewpoint is grayed out if it is disabled. Otherwise it is enabled in the aird file.</p>
+		<p>The viewpoints shown are all the viewpoints available in your environment that are compatible with the models loaded in the aird file. So if your environment does not contain any viewpoint compatible with your models or if you have no models loaded, then the graphical representations component will be empty.</p>
+		<p>Representations can also be seen directly in the models graphical component of the aird editor under the associated model&#8217;s element if the viewpoint containing the representation type used to create the representation is activated. If not the representation will not be visible.</p>
+		<p>
+			<img border="0" src="images/aird_editor_rep_under_model.png"/>
+		</p>
+		<p>To open an exisiting representation, simply double-click on it (this works both in the 
+			<em>Representations</em> tree and in the 
+			<em>Semantics</em> tree).
+		</p>
+		<h3 id="enable_disable_viewpoints">Enabling and Disabling Viewpoints</h3>
+		<p>A viewpoint provides representation types and/or extension for other representation types. In some cases you want need to disable functionalities brought by these extensions or on the contrary to enable them. </p>
+		<p>To enable/disable a viewpoint, you can either:</p>
+		<ul>
+			<li>double click on a viewpoint item on the representations graphical component of the aird editor. It will enable or disable the viewpoint depending on its current state.</li>
+			<li>use the 
+				<strong>
+					<i>Enable</i>
+				</strong> 
+				<strong>
+					<i>Disable</i>
+				</strong> buttons after having selected one or more viewpoints.
+			</li>
+			<li>create a new representation defined in a previously disabled viewpoint. It will activate the viewpoint of the corresponding representation type.</li>
+		</ul>
+		<p>Some viewpoints have dependencies to another ones. Enabling a viewpoint will automatically enable all its dependencies. Disabling a viewpoint that is a dependency of another one will ask you to confirm its disabling as well as the ones depending on it.</p>
+		<h3 id="create_remove_representations">Creating and Removing Representations</h3>
+		<p>After having identified the representation type providing Sirius modeler functionalities you need, three methods are available to create a new representation from it and a model element to edit its content:</p>
+		<ul>
+			<li>First you can double click on a representation type from the representations graphical component of the aird editor. It opens the 
+				<strong>
+					<i>Create a new representation</i>
+				</strong> wizard. You then have to select a model element compatible with the description from which the new representation will be created.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_create_rep_double_click.png"/>
+		</p>
+		<ul>
+			<li>Second you can click on the 
+				<strong>
+					<i>New</i>
+				</strong> button of the representations graphical component of the aird editor. It opens the wizard were you have first to select the representation type from which you want to create a representation before choosing the model element.
+			</li>
+		</ul>
+		<ul>
+			<li>The last method is to use the contextual menu action 
+				<strong>
+					<i>New representation</i>
+				</strong> available on right click on a model element from the models graphical component:
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/aird_editor_new_rep_menu.png"/>
+		</p>
+		<p>The menu shows only representation types compatible with the selected model element and that belong to activated viewpoints. When choosing 
+			<strong>
+				<i>Other...</i>
+			</strong> the wizard to create new representation is opened and show the representation types compatible with the selected element whether they belong to a viewpoint activated or deactivated. If you create a representation defined in a viewpoint that was previously disabled, it will be enabled automatically.
+		</p>
+		<p>You can 
+			<em>remove</em> a representation either from the representations or models graphical components of the aird editor by:
+		</p>
+		<ul>
+			<li>using the 
+				<i>Remove</i> action in the representation&#8217;s context menu;
+			</li>
+			<li>using the 
+				<i>Remove</i> button of representations block when the representation to remove is selected there; 
+			</li>
+			<li>select the representation and hit the 
+				<i>Del</i> key.
+			</li>
+		</ul>
+		<h3 id="open_representation">Opening a Sirius Modeler From a Representation</h3>
+		<p>To open a representation to edit graphically the model&#8217;s element it is associated to, you just have to double-click on it either in the models or representations graphical component of the aird editor. </p>
+		<p>If you double click on a representation in the 
+			<em>Representations</em> block that belong to a disabled viewpoint, this viewpoint will automatically be enabled before opening the representation.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/general/Modeling Project.html b/doc/6.0.x/user/general/Modeling Project.html
new file mode 100644
index 0000000..ae3fb17
--- /dev/null
+++ b/doc/6.0.x/user/general/Modeling Project.html
@@ -0,0 +1,574 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Modeling Project</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="ModelingProjectsandRepresentations">Modeling Projects and Representations</h1>
+		<p>In this document you will learn how to create and manage Modeling Projects, which are used in Sirius to organize your models and their representations (diagrams, tables, etc.).</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#ModelingProjectsandRepresentations">Modeling Projects and Representations</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#Introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#FormerUsers">Note to Users of Previous Versions</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#Migration">Migration of Existing Representation Files</a>
+							</li>
+							<li>
+								<a href="#UICHanges">User Interface Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#ModelingPerspective">The Modeling Perspective</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#ModelExplorer">The Model Explorer View</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#MP">Modeling Projects</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#MPCreation">Creating a New Modeling Project</a>
+							</li>
+							<li>
+								<a href="#MPConversion">Converting an Existing Project into a Modeling Project</a>
+							</li>
+							<li>
+								<a href="#MPConversionReverse">Removing the Modeling Nature from a Project</a>
+							</li>
+							<li>
+								<a href="#ViewpointSelection">Selecting Which Viewpoints to Enable</a>
+							</li>
+							<li>
+								<a href="#ProjectDependencies">Project Dependencies</a>
+							</li>
+							<li>
+								<a href="#ModelsInMP">Models in Modeling Projects</a>
+							</li>
+							<li>
+								<a href="#ModelActions">Actions Available on Model Elements</a>
+							</li>
+							<li>
+								<a href="#AirdFiles">Representations Files</a>
+							</li>
+							<li>
+								<a href="#AirdStructure">Structure of a _Representations File_</a>
+							</li>
+							<li>
+								<a href="#repair">Repair action</a>
+							</li>
+							<li>
+								<a href="#MPConstraints">Constraints</a>
+							</li>
+							<li>
+								<a href="#Lifecycle">Modeling Project Lifecycle</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#Representations">Representations</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#ReprCreation">Creating a Representation</a>
+							</li>
+							<li>
+								<a href="#ReprManagement">Managing Representations</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#LegacyMode">Legacy Mode </a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="Introduction">Introduction</h2>
+		<p>The Sirius system is used to create, visualize and edit your 
+			<em>models</em> using interactive editors called 
+			<em>modelers</em>. These modelers can be of different kinds, depending on the type of visual representations. Out of the box, Sirius supports three different 
+			<em>dialects</em> (kinds of representations) 
+			<em>diagrams</em> (graphical modelers), 
+			<em>tables</em>, and 
+			<em>trees</em> (hierarchical representations). New dialects can be added through programming.
+		</p>
+		<p>Provided with the right configuration file (something called a 
+			<em>Viewpoint Specification Model</em> or 
+			<em>VSM</em> for short), Sirius can represent any model which is compatible with EMF (the de facto standard for modeling tools in the Eclipse world). This includes standards like UML, SysML, TOGAF etc., but also any 
+			<em>Domain Specific Model</em> (
+			<em>DSM</em>) which you can create to better suit your specific needs. For one kind of model (e.g. TOGAF, which is used to describe Enterprise Architectures), several Sirius configurations can be created, each one specific to a particular 
+			<em>viewpoint</em>. Different kinds of users can thus see the same model through different viewpoints, each adapted to his preoccupations: from the same TOGAF model, the 
+			<acronym title="Chief Executing Officer">CEO</acronym> will want to see a general overview of how the company is organized, the 
+			<acronym title="Chief Operating Officer">COO</acronym> may want a view more oriented towards processes, and a system administrator will need a view on just the parts which concern software systems put in place to implement these processes.
+		</p>
+		<p>Sirius makes it easy for architects to create 
+			<em>Viewpoint Specification Model</em> suited for any kind of model. These are then packaged as Eclipse plug-ins that you can install to use their modelers. Note that Sirius itself must also be installed for the viewpoints to run (they are not self-sufficient).
+		</p>
+		<p>As an end-user, you will use already configured modelers specially adapted to your needs. If you want to create your own modelers, please refer to the 
+			<a href="../../specifier/Sirius%20Specifier%20Manual.html">Sirius Specifier Manual</a>. Simple modelers do not require any programming to create, and once you know the basics, a new graphical modeler can be created from scratch in less than an hour.
+		</p>
+		<p>To use already existing modelers (assuming the plug-ins which provide them are installed), you will need to know the following notions (see also 
+			<a href="../../Glossary.html">the Glossary</a> ):
+		</p>
+		<ul>
+			<li>a 
+				<em>resource</em> is a file (in your workspace or inside a plug-in) which contains a model;
+			</li>
+			<li>the 
+				<em>semantic model</em> is the model (or models) which contains your business data. It can be stored in one of several resources (files) which can reference each other. The type of semantic model can be different for each user. It can be based on a standard (for example 
+				<code>.uml</code> files for UML models) or based on a 
+				<em>Domain Specific Model</em> (sometimes called 
+				<em>Domain Specific Language</em>) which was specially created for your needs.
+			</li>
+			<li>a 
+				<em>dialect</em> is a kind of representation supported by Sirius. Out of the box, Sirius supports three dialects: diagrams, tables, and trees. Sequence diagrams and cross-tables, which are special kinds of diagrams (resp. tables) can also be considered of as dialects, although technically they are not.
+			</li>
+			<li>a 
+				<em>representation</em> is a particular diagram, table, or tree which you created on your semantic model. It is simply a more general term than &#8220;diagram&#8221; which is also usable for other dialects.
+			</li>
+			<li>a 
+				<em>representation file</em> is a file in which Sirius stores all informations related to which representations you created, what appears on them, the positions and colors of the elements, etc. This files have a 
+				<code>.aird</code> extension (typically 
+				<code>representations.aird</code>). Representation files reference the semantic model(s) they contain representations for, but you semantic models are kept unaware (and unpolluted) of any Sirius-specific data.
+			</li>
+			<li>a 
+				<em>viewpoint</em> is a set of representation descriptions which provide a specific point of view on some kind of semantic model. For example we could have a 
+				<em>UML Structural</em> viewpoint, which describes the sub-set of all the standard UML diagrams which deal only with structural aspects of UML models (as opposed to behavioral or requirements aspects). Viewpoints are defined in 
+				<em>Viewpoint Specification Models</em> and packaged as Eclipse plug-ins. Once you install such a plug-in, the viewpoints it defines will be available to you (with all the representations they define) on all compatible semantic models.
+			</li>
+			<li>a 
+				<em>modeling project</em> is a special kind of project in your workspace which makes it easy to manipulate representation files and semantic models in a consistent way.
+			</li>
+		</ul>
+		<p>The rest of this document explains how you can use the Sirius UI to create and manipulate representations of your semantic models. Each viewpoint and representation is specific. We will use the 
+			<em>Family</em> example for illustration purpose, but note that not all features may be available with all kinds of models and all viewpoints.
+		</p>
+		<h2 id="FormerUsers">Note to Users of Previous Versions</h2>
+		<p>New users can skip this section safely. For users of previous version who have existing models, this section explains the required steps to use their models with this version, and gives an overview of the main UI changes. See also the 
+			<a href="../../Release_Notes.html">release notes</a> for more details.
+		</p>
+		<h3 id="Migration">Migration of Existing Representation Files</h3>
+		<p>Representation files are now automatically migrated when opened. This migration is transparent for the end-user. While a representation file is not saved, the automatic migration will be replayed at the next opening.</p>
+		<h3 id="UICHanges">User Interface Changes</h3>
+		<p>You will notice some radical changes in the user interface. The most important change is the disappearance of the 
+			<em>Model Content</em> view. It has been replaced with a streamlined UI which integrates directly into the Eclipse explorer view. The notion of &#8220;Local Session&#8221; has disappeared from the user interface; its management has been made as transparent as possible so you do not have to deal with it except in some very specific circumstances.
+		</p>
+		<p>The recommended way to use Sirius is now to use the new notion of 
+			<em>Modeling Project</em> described below. If you already have existing Sirius representation files (
+			<code>aird</code> files), a 
+			<a href="#MPConversion">conversion</a> is necessary. Modeling projects have some constraints on how the files are organized. If you do not want or can not convert your models to the new recommended way, a 
+			<a href="#LegacyMode">legacy mode</a> is provided which does not require any change to your projects organisation (beyond the files' migration). Note that the support for this legacy mode is not guaranteed to be maintained in all future versions of Sirius.
+		</p>
+		<h2 id="ModelingPerspective">The Modeling Perspective</h2>
+		<p>When you first start Sirius, it opens on the 
+			<em>Modeling</em> perspective. This new perspective provides all the required views, wizards and menus to exploit designers as an end user.
+		</p> 
+		<img border="0" src="images/modeling_perspective.png"/>
+		<p>The Modeling perspective provides the following views by default:</p>
+		<ul>
+			<li>A 
+				<a href="#ModelExplorer">
+					<em>Model Explorer</em>
+				</a>, which is the main UI to interact with your models. (For users of previous versions, this explorer includes directly all the features which were found in the &#8220;Model Content&#8221; view before).
+			</li>
+			<li>An 
+				<em>Outline</em> view, which provides a structural overview of the document or model currently opened. For diagrams, it shows a miniature view of the whole diagram on which you can easily navigate to other parts of the diagram for large ones.
+			</li>
+			<li>The 
+				<em>Properties</em> view gives detailed information about the currently selected element. Depending on the nature of the selected element, some of these properties can be edited directly in the 
+				<em>Properties</em> view with immediate effect.
+			</li>
+			<li>The 
+				<em>Problems</em> view contains information markers of different severities (information only, warnings, or errors). This is where you will find validation errors on your models for example. 
+			</li>
+		</ul>
+		<p>This perspective also provides useful actions available by right-clicking in the view 
+			<a href="#ModelExplorer">
+				<em>Model Explorer</em>
+			</a>.
+		</p>
+		<p>As usual in Eclipse, this perspective can be customized at will by adding, moving or removing views, shortcuts, etc.</p>
+		<h3 id="ModelExplorer">The Model Explorer View</h3>
+		<p>The 
+			<em>Model Explorer</em> view shows all the projects in you workspace and the files they contain. It adds some special capabilities to 
+			<em>Modeling Projects</em>, to allow you to view and manipulate your semantic models and their Sirius representations directly inside the explorer.
+		</p>
+		<p>For instance, inside the 
+			<em>Model Explorer</em>, semantic models and representation files which are part of a 
+			<em>Modeling Project</em>  or model files can be expanded to display their content directly:
+		</p> 
+		<img border="0" src="images/model_explorer_view.png"/>
+		<p>In the example above, the 
+			<code>example</code> modeling project (note the blue &#8220;M&#8221; decorator on the project icon) contains a single semantic model, the 
+			<code>example.ecore</code> file, and a single representation file 
+			<code>representations.aird</code>. Both can be expanded directly from inside the 
+			<em>Model Explorer</em> view, to discover the structure of the semantic model and the graphical representations which already exist.
+		</p>
+		<p>The 
+			<em>Model Explorer</em> supports the &#8220;Link with Editor&#8221; feature, which can be enabled by pressing the icon in the top right corner of the view (the one with two horizontal arrows, pressed in the screenshot above). When this mode is enabled, if you have a representation opened, clicking anywhere on it will automatically select the corresponding semantic element(s) inside the 
+			<em>Model Explorer</em> (expanding the project and files if necessary). Conversely, if you select one or several semantic element(s) from one of your semantic models in the 
+			<em>Model Explorer</em> view and if these elements are represented somewhere on the opened editor, they will be automatically selected. This can be very useful when you have many projects and representation or large representations to avoid getting lost.
+		</p>
+		<p>The 
+			<em>Model Explorer</em> also supports filtering of elements from inside 
+			<em>Modeling Projects</em> (and only these elements): if you enter some text in the search box at the top of the view, the view will filter out all the elements which do not match your text. For example if you enter 
+			<code>Element</code> in the search box, only the model elements whose name starts with 
+			<code>Element</code> will be shown. You can use the 
+			<code>*</code> and 
+			<code>?</code> special characters in your search string to mean respectively &#8220;any text&#8221; (including none) and &#8220;any single character&#8221;. For example the search string 
+			<code>*Element</code> will show all elements whose name 
+			<em>contains</em> the string 
+			<code>Element</code> anywhere.
+		</p>
+		<p>The 
+			<em>Model Explorer</em> allows to group tree items with an intermediary level. This feature clearly enhances the expand time on huge models.
+			<br/>  
+			<img border="0" src="images/groupItems.png"/>
+			<br/>You can customize this feature with three preferences:
+		</p>
+		<ul>
+			<li>Enable/disable this feature globally</li>
+			<li>Increase/decrease the threshold that triggers the intermediary level</li>
+			<li>Increase/decrease the group size</li>
+		</ul> 
+		<img border="0" src="images/groupItems_1.png"/>
+		<p>
+			<strong>Note:</strong> We see that this feature need to be enabled and have a hierarchy context above the threshold to be triggered.
+			<br/>In another hand, to keep a consistency, the threshold and group size value need to follow these rules:
+		</p>
+		<ul>
+			<li>The threshold needs to be higher or equal to the group size. Otherwise the threshold value will be ignored and the group size value will be used instead.</li>
+			<li>The group size value needs to be higher than zero.</li>
+		</ul>
+		<p>When you update these preferences, you need to make a refresh (F5) on all resources already expanded to get an updated tree items.</p>
+		<p>
+			<img border="0" src="images/groupItems_2.png"/>
+		</p>
+		<p>This feature is also enabled on tree selection wizards in Sirius diagram tools.</p>
+		<p>
+			<img border="0" src="images/groupItems_3.png"/>
+		</p>
+		<h2 id="MP">Modeling Projects</h2>
+		<p>Modeling Projects, which are used in Sirius to organize and manage your models and their representations (diagrams, tables, etc.).</p>
+		<p>Modeling projects are responsible for storing the representation data (diagrams, tables, etc.) in special 
+			<em>representation files</em> with the extension 
+			<code>.aird</code>. Modeling projects can also be used to store the semantic data of your models but this is not mandatory. Semantic data can be stored anywhere, but representation data 
+			<strong>must be stored in 
+				<code>aird</code> files within modeling projects
+			</strong> (the only exception is the 
+			<a href="#LegacyMode">legacy mode</a> supported for compatibility with previous versions).
+		</p>
+		<p>Moreover, modeling projects provide 
+			<em>actions to manage viewpoints and representations</em>: viewpoints are associated to a modeling project, so the viewpoints that will be available for a given Modeling Project&#8217;s representations are the one attached to this project. Viewpoints selection is made by right-clicking on a Modeling Project and choosing 
+			<em>Viewpoints Selection</em>.
+		</p>
+		<h3 id="MPCreation">Creating a New Modeling Project</h3>
+		<p>To create a new 
+			<em>Modeling Project</em>, simply right-click in the 
+			<a href="#ModelExplorer">Model Explorer</a> (or use the 
+			<em>File &gt; New...</em> menu) and select 
+			<em>New &gt; Modeling Project</em>.
+		</p> 
+		<img border="0" src="images/new_project1.png"/>
+		<p>A wizard opens, asking for a mandatory project name. Entering an invalid project name will result in an error message. By default, the modeling project will be created in the workspace&#8217;s location, but this can be changed: just uncheck &#8220;Use default location&#8221; and enter the path to the location where you want your modeling project to be created.</p> 
+		<img border="0" src="images/new_project2.png"/>
+		<p>When you are done, click 
+			<em>Finish</em> to actually create the modeling project. It will appear in the 
+			<em>Model Explorer</em>, and by default contains two elements:
+		</p>
+		<ul>
+			<li>
+				<em>Project Dependencies</em>, where you can add external dependencies you rely on, i.e. models you will depend on but which are stored oustide of the project;
+			</li>
+			<li>
+				<code>representations.aird</code>, which is the top-level representation file for the project. 
+			</li>
+		</ul> 
+		<img border="0" src="images/new_project3.png"/>
+		<h3 id="MPConversion">Converting an Existing Project into a Modeling Project</h3>
+		<p>It can be useful to convert an existing project into a Modeling Project, since it is necessary for example to be able to create representations in it. An action is available to do this. Right-click on any project, then select 
+			<em>Configure... &gt; Convert to Modeling Project</em>.
+		</p> 
+		<img border="0" src="images/convert_to_modeling_project1.png"/>
+		<p>This action does not alter in any way the nature of the project. For example, if the project was a Java project, it will still be a Java project afterwards. The action just adds the 
+			<em>Modeling Project</em> nature to the selected project.
+		</p> 
+		<img border="0" src="images/convert_to_modeling_project2.png"/>
+		<p>If there is a suitable representation file, it will be considered to be the top-level representation file for the converted project. Otherwise, a new representation file named 
+			<em>representations.aird</em> will be created automatically at the root of the project.
+		</p>
+		<h3 id="MPConversionReverse">Removing the Modeling Nature from a Project</h3>
+		<p>If for some reason you want to revert the conversion of a project into a 
+			<em>Modeling Project</em>, you can use the 
+			<em>Configure... &gt; Remove Modeling Project Nature</em> action on the context menu of the project.
+		</p>
+		<p>The action will simply remove the nature from the project itself, but will not remove or alter the representation files stored inside. You will still be able to use your representations using the 
+			<a href="#LegacyMode">legacy mode</a>.
+		</p>
+		<h3 id="ViewpointSelection">Selecting Which Viewpoints to Enable</h3>
+		<p>Each modeling project has a set of viewpoints which are 
+			<em>enabled</em>. This controls what kind of representations you can create on the semantic models inside the project. The set of viewpoints which are available to you will depend on what plug-ins you have installed, and on the type of semantic models which are inside the modeling projects. For example, even if you have installed the <a href="http://marketplace.obeonetwork.com/module/uml" target="_blank">UML Designer</a>, you will only be able to enable to corresponding viewpoints if your project contains UML models (
+			<code>.uml</code> files).
+		</p>
+		<p>To select which viewpoints are enable on your project, simply use the 
+			<em>Viewpoints Selection</em> action in the context menu of the project itself. A dialog box will open which will show you all the viewpoints which are compatible with your project (depending on the kind of models it contains). You can check or un-check each viewpoint individually to enable or disable it, and click 
+			<em>OK</em> to validate your choice. Note that some viewpoints depend on other ones (especially viewpoints which extend other ones). If your selection of viewpoints does not include all the required dependencies, a message will be shown to indicate which dependencies are not resolved. You can then adjust your selection and re-validate it.
+		</p> 
+		<img border="0" src="images/viewpoint_selection1.png"/> 
+		<img border="0" src="images/viewpoint_selection2.png"/>
+		<h3 id="ProjectDependencies">Project Dependencies</h3>
+		<p>A modeling project will always have an element called 
+			<em>Project Dependencies</em> available. This is used to import external models, which are stored outside of the modeling project but used in it, for instance for certain representations of the project.
+		</p>
+		<p>To use a semantic model stored outside of the current modeling project, it must be added to the project dependencies. That will not change its location but will simply allow access to its content.
+			<br/>To add an external model to a modeling project, right-click on 
+			<em>Project Dependencies</em> then select 
+			<em>Add Model</em>.
+			<br/>Project dependencies can contain both semantic models and graphical models (
+			<em>i.e. representations files</em>)
+		</p> 
+		<img border="0" src="images/project_dependencies1.png"/>
+		<p>A wizard page opens, allowing you to enter the URI of the model to add. If the model is in the workspace, you can use the button 
+			<em>Browse Workspace</em> to look for it. If the model in in the file system, you can use the button 
+			<em>Browse File System...</em> to find it. Otherwise, you must enter the model&#8217;s URI manually.
+		</p> 
+		<img border="0" src="images/project_dependencies2.png"/>
+		<p>Once the model&#8217;s URI is entered, click 
+			<em>OK</em>. The model is added under 
+			<em>Project Dependencies</em> and a pop-up window is displayed to allow you to select the viewpoints you need. Just select or unselect the viewpoints you want and click 
+			<em>OK</em> when you&#8217;re done.
+		</p> 
+		<img border="0" src="images/project_dependencies3.png"/>
+		<p>Referenced models can be removed if they are not used, just right-click on the model in the 
+			<em>Model Dependencies</em> and select 
+			<em>Remove</em>.
+		</p> 
+		<img border="0" src="images/remove_dependencies1.png"/>
+		<p>
+			<strong>Note:</strong> If the referenced model is a non-modeling project in the workspace, the corresponding file will be decorated with an 
+			<em>M</em> in the upper right corner to indicate that this model is used in a Modeling Project. This decorator disappears if the modeling projects that use this model are closed.
+		</p> 
+		<img border="0" src="images/decorated_model1.png"/>
+		<h3 id="ModelsInMP">Models in Modeling Projects</h3>
+		<p>Any model available in a modeling project, whether physically located in the modeling project or just referenced by it (
+			<em>via</em> the 
+			<em>Project Dependencies</em>), will be expandable. This means that the content of any model used or referenced in a modeling project can be browse directly in the modeling project, in the view 
+			<a href="#ModelExplorer">Model Explorer</a>.
+		</p> 
+		<img border="0" src="images/models_content1.png"/>
+		<h3 id="ModelActions">Actions Available on Model Elements</h3>
+		<p>When browsing a model in a modeling project, several actions can be accessed by right-clicking on a model element:</p>
+		<ul>
+			<li>
+				<em>New Representation</em> allows you to create a new representation. The availability of this action depends on the kind of model and selected viewpoints, the action being displayed only when it makes sense;
+			</li>
+			<li>
+				<em>Export diagrams as images</em> allows you to export the diagrams related to this element (those that are displayed directly under this element) in image files.
+			</li>
+		</ul>
+		<h3 id="AirdFiles">Representations Files</h3>
+		<p>Representations files are used to store representations. They have the extension 
+			<code>.aird</code>.
+			<br/>Such files contain the data needed to display the diagrams (or other kinds of representations) but they do not contain semantic data, which are stored by the models themselves.
+			<br/>Representations files located in modeling projects can be unfolded to browse their content.
+		</p>
+		<h3 id="AirdStructure">Structure of a 
+			<em>Representations File</em>
+		</h3>
+		<p>The content of a 
+			<em>representations file</em> is structured in three levels:
+		</p>
+		<ul>
+			<li>Viewpoint 1
+				<ul>
+					<li>Representation Type 1.1
+						<ul>
+							<li>Representation 1.1.1</li>
+							<li>Representation 1.1.2</li>
+						</ul>
+					</li>
+					<li>Representation Type 1.2
+						<ul>
+							<li>Representation 1.2.1</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>Viewpoint 2
+				<ul>
+					<li>Representation Type 2.1
+						<ul>
+							<li>Representation 2.1.1</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+		</ul>
+		<p>The first level displays the available viewpoints, which match the viewpoints selected on the 
+			<em>modeling project</em>.
+			<br/>The second level, inside a given viewpoint, displays 
+			<em>representation types</em>. Only 
+			<em>representation types</em> for which at least one representation exists are displayed.
+			<br/>The third level, inside a 
+			<em>representation type</em>, displays the representations actually present for this type.
+		</p> 
+		<img border="0" src="images/aird_unfolded1.png"/>
+		<h3 id="repair">Repair action</h3>
+		<p>A repair action is available in representations file context menu
+			<br/>In some case, you will need to execute a repair action on your representations file, especially when you have modified the VSM (odesign file). 
+		</p>
+		<h4 id="Operationsdoneduringrepairexecution">Operations done during repair execution</h4>
+		<ul>
+			<li>Deleting representations without semantic target.</li>
+			<li>Deactivating behavior, filter, rules that no longer exist in VSM.</li>
+			<li>Saving all diagram elements state (such as style, bounds, expended bounds for collapsed node).</li>
+			<li>Deleting diagram elements that will be recreated by refresh.</li>
+			<li>Refresh all representations.</li>
+			<li>Restore diagram elements state.</li>
+		</ul>
+		<h4 id="Caseswhereusingrepairaction">Cases where using repair action</h4>
+		<ul>
+			<li>After removing behavior, rules or filter into VSM.</li>
+			<li>After removing or updating some mapping.</li>
+			<li>After removing some semantic elements.</li>
+		</ul>
+		<p>In most of case, a simple refresh of representation should be enough. Note that repair action could take some time depending on representations file size.</p>
+		<h3 id="MPConstraints">Constraints</h3>
+		<p>There is one important constraint regarding 
+			<em>modeling projects</em>. They can only contain 
+			<strong>one</strong> top-level 
+			<em>representations file</em>.
+		</p>
+		<p>A top-level 
+			<em>representations file</em> is a file that stores representations. Such files can be modularized, which means they can be split in several files, but there is always one 
+			<em>master</em> file which references the others and is referenced by none. This file is the top-level file, and there can be only one per 
+			<em>modeling project</em>.
+			<br/>To say this differently: If you want to have several independent 
+			<em>representations files</em>, each of them must be placed in its own 
+			<em>modeling project</em>.
+		</p>
+		<h3 id="Lifecycle">Modeling Project Lifecycle</h3>
+		<p>As mentioned before, models in a 
+			<em>Modeling Project</em> are automatically loaded when first needed. They are not unloaded automatically. If you want them to be unloaded (and retreive the associated memory), you must close the modeling project itself.
+		</p>
+		<p>Besides, all representations of a given 
+			<em>modeling project</em> are part of the same model. Any modification to one of these representations will cause all of them to go dirty (which means that a little * symbol will be displayed in the editor title to indicate that the file contains unsaved modifications). Conversely, saving any representation of a 
+			<em>modeling project</em> saves all of them. What is actually saved is the 
+			<em>representations file</em>, which contains all the representations.
+		</p>
+		<h2 id="Representations">Representations</h2>
+		<p>Representations are stored in 
+			<code>*.aird</code> files. An 
+			<code>*.aird</code> file is called a 
+			<a href="#AirdFiles">
+				<strong>Representations File</strong>
+			</a>.
+			<br/>A representation can be a diagram, a table, a cross-table, a tree, etc.
+		</p>
+		<p>
+			<strong>Note:</strong> 
+			<em>Representations files</em> located in 
+			<em>modeling projects</em> are loaded automatically.
+		</p>
+		<h3 id="ReprCreation">Creating a Representation</h3>
+		<p>There are two ways of creating a representation. Both take place in the 
+			<em>Model Explorer</em>.
+		</p>
+		<p>The first way of creating a representation is to navigate in a model to an element for which you know there is a 
+			<em>representation type</em> available. Right-click on this element, then select 
+			<em>New Representation &gt; &lt;Representation type&gt;</em>.
+		</p> 
+		<img border="0" src="images/create_representation1.png"/>
+		<p>The other way consists in right-clicking on the 
+			<em>Modeling Project</em> itself. Select 
+			<em>Create Representation</em>.
+		</p> 
+		<img border="0" src="images/create_representation1_alt.png"/>
+		<p>This opens a wizard that displays available viewpoints and available 
+			<em>representation types</em> in these viewpoints.
+			<br/>Just select the type of representation you want to create and click 
+			<em>Next &gt;</em>.
+		</p> 
+		<img border="0" src="images/create_representation2.png"/>
+		<p>The wizard then displays the available models (those that are in the current modeling project and those that are imported). When you browse the content of these models, you will notice that their content is filtered to display only elements that are relevant for the selected representation type.
+			<br/>Select the element for which you want to create a representation and click 
+			<em>Finish</em>.
+		</p> 
+		<img border="0" src="images/create_representation3.png"/>
+		<p>Either way, a pop-up window appears, where you can enter a name for the new representation. A default name is proposed. Click 
+			<em>OK</em>.
+		</p> 
+		<img border="0" src="images/create_representation4.png"/>
+		<p>If there are several 
+			<em>representations files</em> in the current 
+			<em>modeling project</em>, a pop-up window appears before the actual creation to allow you to select the 
+			<em>representations file</em> that will contain the representation.
+		</p> 
+		<img border="0" src="images/create_representation5.png"/>
+		<p>The representation is then created and opened.</p>
+		<h3 id="ReprManagement">Managing Representations</h3>
+		<p>Available representations can be accessed by browsing 
+			<em>representation files</em> to the third level. Right-clicking on a representation then offers several actions:
+		</p> 
+		<img border="0" src="images/managing_representation1.png"/>
+		<ul>
+			<li>
+				<strong>Open</strong> opens the representation in the relevant editor. You can also open the representation by double-click on it;
+			</li>
+			<li>
+				<strong>Delete</strong> deletes the representation: Del key can be used as shortcut (
+				<strong>Warning:</strong> this cannot be undone);
+			</li>
+			<li>
+				<strong>Rename</strong> opens a pop-up window where you can enter a new name for the representation: F2 key can be used as shortcut;
+			</li>
+			<li>
+				<strong>Copy</strong> duplicates the representation, opening a pop-up window where you can enter the name of the copy;
+			</li>
+			<li>
+				<strong>Move</strong> (only if there are several 
+				<em>representations files</em> in the current 
+				<em>modeling project</em>) allows you to move a representation to another 
+				<em>representations file</em>;
+			</li>
+			<li>
+				<strong>Extract to .aird file ...</strong> extracts the selected element to another 
+				<em>representations file</em>, which will be located in the workspace. A pop-up window opens to let you select the destination file, and the new file is automatically added to the project&#8217;s dependencies if needed;
+			</li>
+			<li>
+				<strong>Export Diagrams as images</strong> allows you to export all the diagrams stored inside a representation file in one operation. You can choose the destination folder and image format..
+			</li>
+		</ul>
+		<h2 id="LegacyMode">Legacy Mode </h2>
+		<p>The legacy UI mode is made available for users of previous versions of Sirius who can not or do not want to convert their projects into 
+			<em>Modeling Projects</em>. As such, it works with all existing representation files (provided they have been migrated if required), even if they are inside non-Modeling projects or if there are several top-level representation files inside the same project.
+		</p>
+		<p>When using the legacy mode, you must explicitly 
+			<em>open</em> a representation file using the 
+			<em>Open</em> action in the context menu of the file. This is equivalent to opening a 
+			<em>session</em> in previous versions of Sirius. Once the representation file is open, you can expand it, and inside you will find all the same elements that you would find inside a normal 
+			<em>Modeling Project</em>: the semantic model(s) associated to the representation file, and the representations themselves.
+		</p> 
+		<img border="0" src="images/legacy_mode1.png"/>
+		<p>All the actions which are normally performed on the modeling project itslef, like selecting which viewpoints are enabled, are available in the context menu of the representation file itself:</p> 
+		<img border="0" src="images/legacy_mode2.png"/>
+		<p>Note that the 
+			<em>Project dependencies</em> entry is not available in legacy mode. To associate new semantic models to the representation file, use the 
+			<em>Add model</em> action directly on the representation file.
+		</p>
+		<p>Once you have finished using the models and or representations, you must explitly close it (equivalent to closing the 
+			<em>session</em> in previous versions) by using the 
+			<em>Close</em> action on the top-level representation file.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/general/images/aird_editor_close_editor_with_button.png b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_button.png
new file mode 100644
index 0000000..f455f51
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_button.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_close_editor_with_cross.png b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_cross.png
new file mode 100644
index 0000000..138801f
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_cross.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_close_editor_with_right_click.png b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_right_click.png
new file mode 100644
index 0000000..666b7eb
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_close_editor_with_right_click.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_create_new_model.png b/doc/6.0.x/user/general/images/aird_editor_create_new_model.png
new file mode 100644
index 0000000..c9ad149
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_create_new_model.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_create_rep_double_click.png b/doc/6.0.x/user/general/images/aird_editor_create_rep_double_click.png
new file mode 100644
index 0000000..dfa3b84
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_create_rep_double_click.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_expand_aird_file.png b/doc/6.0.x/user/general/images/aird_editor_expand_aird_file.png
new file mode 100644
index 0000000..c5eff57
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_expand_aird_file.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_filter_models_elements.png b/doc/6.0.x/user/general/images/aird_editor_filter_models_elements.png
new file mode 100644
index 0000000..ea2a0c8
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_filter_models_elements.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_full.png b/doc/6.0.x/user/general/images/aird_editor_full.png
new file mode 100644
index 0000000..878376c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_full.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_model_loading.png b/doc/6.0.x/user/general/images/aird_editor_model_loading.png
new file mode 100644
index 0000000..271a68c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_model_loading.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_modeling_project_creation_wizard.png b/doc/6.0.x/user/general/images/aird_editor_modeling_project_creation_wizard.png
new file mode 100644
index 0000000..c99457c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_modeling_project_creation_wizard.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_models_block.png b/doc/6.0.x/user/general/images/aird_editor_models_block.png
new file mode 100644
index 0000000..f4a4297
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_models_block.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_new_rep_menu.png b/doc/6.0.x/user/general/images/aird_editor_new_rep_menu.png
new file mode 100644
index 0000000..d3c532c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_new_rep_menu.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_open_project_modeling_explorer.png b/doc/6.0.x/user/general/images/aird_editor_open_project_modeling_explorer.png
new file mode 100644
index 0000000..e976f1e
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_open_project_modeling_explorer.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_pref.png b/doc/6.0.x/user/general/images/aird_editor_pref.png
new file mode 100644
index 0000000..6709410
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_pref.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model.png b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model.png
new file mode 100644
index 0000000..71348e2
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_representation.png b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_representation.png
new file mode 100644
index 0000000..f5cbddd
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_representation.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_uncontrol.png b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_uncontrol.png
new file mode 100644
index 0000000..9d8993b
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_remove_semantic_model_uncontrol.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_rep_under_model.png b/doc/6.0.x/user/general/images/aird_editor_rep_under_model.png
new file mode 100644
index 0000000..4afc08c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_rep_under_model.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_editor_representations_block.png b/doc/6.0.x/user/general/images/aird_editor_representations_block.png
new file mode 100644
index 0000000..06c07d9
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_editor_representations_block.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/aird_unfolded1.png b/doc/6.0.x/user/general/images/aird_unfolded1.png
new file mode 100644
index 0000000..40c3a5d
--- /dev/null
+++ b/doc/6.0.x/user/general/images/aird_unfolded1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/convert_to_modeling_project1.png b/doc/6.0.x/user/general/images/convert_to_modeling_project1.png
new file mode 100644
index 0000000..8e48753
--- /dev/null
+++ b/doc/6.0.x/user/general/images/convert_to_modeling_project1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/convert_to_modeling_project2.png b/doc/6.0.x/user/general/images/convert_to_modeling_project2.png
new file mode 100644
index 0000000..45c1d73
--- /dev/null
+++ b/doc/6.0.x/user/general/images/convert_to_modeling_project2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation1.png b/doc/6.0.x/user/general/images/create_representation1.png
new file mode 100644
index 0000000..5d80afd
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation1_alt.png b/doc/6.0.x/user/general/images/create_representation1_alt.png
new file mode 100644
index 0000000..63092ff
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation1_alt.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation2.png b/doc/6.0.x/user/general/images/create_representation2.png
new file mode 100644
index 0000000..c755aad
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation3.png b/doc/6.0.x/user/general/images/create_representation3.png
new file mode 100644
index 0000000..a6eb546
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation3.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation4.png b/doc/6.0.x/user/general/images/create_representation4.png
new file mode 100644
index 0000000..b2afd2a
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation4.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/create_representation5.png b/doc/6.0.x/user/general/images/create_representation5.png
new file mode 100644
index 0000000..6c00d19
--- /dev/null
+++ b/doc/6.0.x/user/general/images/create_representation5.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/decorated_model1.png b/doc/6.0.x/user/general/images/decorated_model1.png
new file mode 100644
index 0000000..e78e1d4
--- /dev/null
+++ b/doc/6.0.x/user/general/images/decorated_model1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/groupItems.png b/doc/6.0.x/user/general/images/groupItems.png
new file mode 100644
index 0000000..89a7ea3
--- /dev/null
+++ b/doc/6.0.x/user/general/images/groupItems.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/groupItems_1.png b/doc/6.0.x/user/general/images/groupItems_1.png
new file mode 100644
index 0000000..284fcbf
--- /dev/null
+++ b/doc/6.0.x/user/general/images/groupItems_1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/groupItems_2.png b/doc/6.0.x/user/general/images/groupItems_2.png
new file mode 100644
index 0000000..be72a13
--- /dev/null
+++ b/doc/6.0.x/user/general/images/groupItems_2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/groupItems_3.png b/doc/6.0.x/user/general/images/groupItems_3.png
new file mode 100644
index 0000000..acca274
--- /dev/null
+++ b/doc/6.0.x/user/general/images/groupItems_3.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/legacy_mode1.png b/doc/6.0.x/user/general/images/legacy_mode1.png
new file mode 100644
index 0000000..ce97022
--- /dev/null
+++ b/doc/6.0.x/user/general/images/legacy_mode1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/legacy_mode2.png b/doc/6.0.x/user/general/images/legacy_mode2.png
new file mode 100644
index 0000000..80ed150
--- /dev/null
+++ b/doc/6.0.x/user/general/images/legacy_mode2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/managing_representation1.png b/doc/6.0.x/user/general/images/managing_representation1.png
new file mode 100644
index 0000000..81aa0a1
--- /dev/null
+++ b/doc/6.0.x/user/general/images/managing_representation1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/model_explorer_view.png b/doc/6.0.x/user/general/images/model_explorer_view.png
new file mode 100644
index 0000000..3af361a
--- /dev/null
+++ b/doc/6.0.x/user/general/images/model_explorer_view.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/modeling_perspective.png b/doc/6.0.x/user/general/images/modeling_perspective.png
new file mode 100644
index 0000000..d1e6b4c
--- /dev/null
+++ b/doc/6.0.x/user/general/images/modeling_perspective.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/models_content1.png b/doc/6.0.x/user/general/images/models_content1.png
new file mode 100644
index 0000000..04111ca
--- /dev/null
+++ b/doc/6.0.x/user/general/images/models_content1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/new_project1.png b/doc/6.0.x/user/general/images/new_project1.png
new file mode 100644
index 0000000..2326e62
--- /dev/null
+++ b/doc/6.0.x/user/general/images/new_project1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/new_project2.png b/doc/6.0.x/user/general/images/new_project2.png
new file mode 100644
index 0000000..8b60a28
--- /dev/null
+++ b/doc/6.0.x/user/general/images/new_project2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/new_project3.png b/doc/6.0.x/user/general/images/new_project3.png
new file mode 100644
index 0000000..5553ccf
--- /dev/null
+++ b/doc/6.0.x/user/general/images/new_project3.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/open_aird__modeling_project.png b/doc/6.0.x/user/general/images/open_aird__modeling_project.png
new file mode 100644
index 0000000..3a42e04
--- /dev/null
+++ b/doc/6.0.x/user/general/images/open_aird__modeling_project.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/project_dependencies1.png b/doc/6.0.x/user/general/images/project_dependencies1.png
new file mode 100644
index 0000000..b69d17e
--- /dev/null
+++ b/doc/6.0.x/user/general/images/project_dependencies1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/project_dependencies2.png b/doc/6.0.x/user/general/images/project_dependencies2.png
new file mode 100644
index 0000000..33f2c98
--- /dev/null
+++ b/doc/6.0.x/user/general/images/project_dependencies2.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/project_dependencies3.png b/doc/6.0.x/user/general/images/project_dependencies3.png
new file mode 100644
index 0000000..c6bfd56
--- /dev/null
+++ b/doc/6.0.x/user/general/images/project_dependencies3.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/remove_dependencies1.png b/doc/6.0.x/user/general/images/remove_dependencies1.png
new file mode 100644
index 0000000..fc9b9e1
--- /dev/null
+++ b/doc/6.0.x/user/general/images/remove_dependencies1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/viewpoint_selection1.png b/doc/6.0.x/user/general/images/viewpoint_selection1.png
new file mode 100644
index 0000000..e75177a
--- /dev/null
+++ b/doc/6.0.x/user/general/images/viewpoint_selection1.png
Binary files differ
diff --git a/doc/6.0.x/user/general/images/viewpoint_selection2.png b/doc/6.0.x/user/general/images/viewpoint_selection2.png
new file mode 100644
index 0000000..ec5404a
--- /dev/null
+++ b/doc/6.0.x/user/general/images/viewpoint_selection2.png
Binary files differ
diff --git a/doc/6.0.x/user/properties/Properties View.html b/doc/6.0.x/user/properties/Properties View.html
new file mode 100644
index 0000000..febdafa
--- /dev/null
+++ b/doc/6.0.x/user/properties/Properties View.html
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Properties View</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="PropertiesViews">Properties Views</h1>
+		<p>This document describes behaviors specific to Sirius-defined properties views.</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#PropertiesViews">Properties Views</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#preferences">Preferences</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#LegacySemanticPropertiesTabs">Legacy Semantic Properties Tabs</a>
+							</li>
+							<li>
+								<a href="#SiriusDefaultTabs">Sirius Default Tabs</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="preferences">Preferences</h2>
+		<p>Some preferences and configuration parameters are available for you to customize your experience. They can affect the look of the properties view.</p>
+		<p>
+			<img border="0" src="./images/PropertiesViewPreferencePage.png"/>
+		</p>
+		<h3 id="LegacySemanticPropertiesTabs">Legacy Semantic Properties Tabs</h3>
+		<p>This group contains preferences to show or hide tabs provided by Sirius which display the raw properties of all semantic elements currently selected in a representation or in the 
+			<em>Model Explorer</em>. Starting from version 4.0, Sirius provides better alternatives for showing these semantic properties, but the legacy tabs are still available if needed.
+		</p>
+		<ul>
+			<li>
+				<em>Show Default Tab:</em> This checkbox allows to hide the 
+				<code>Default</code> tab which is visible by default when you select an element from the 
+				<em>Model Explorer</em>.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="./images/DefaultTabPreference.png"/>
+		</p>
+		<ul>
+			<li>
+				<em>Show Semantic Tab:</em> This checkbox allows to hide the 
+				<code>Semantic</code> tab which is visible by default when you select an element from a Sirius representation.
+			</li>
+		</ul>
+		<h3 id="SiriusDefaultTabs">Sirius Default Tabs</h3>
+		<p>This group contains preferences to modify the behavior of the tabs rendered by the Sirius properties view default rules. Note that this will only apply to the generic properties views which are used when a modeler does not provide custom ones. </p>
+		<ul>
+			<li>
+				<em>Maximum size of tabs name:</em> This field defines the maximal length of tabs names. This is used to shorten the tabs names when the default rules are used to render the properties view. The default is 20 characters.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="./images/MaxTabNamePreference.png"/>
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/properties/images/DefaultTabPreference.png b/doc/6.0.x/user/properties/images/DefaultTabPreference.png
new file mode 100644
index 0000000..8bbdc20
--- /dev/null
+++ b/doc/6.0.x/user/properties/images/DefaultTabPreference.png
Binary files differ
diff --git a/doc/6.0.x/user/properties/images/MaxTabNamePreference.png b/doc/6.0.x/user/properties/images/MaxTabNamePreference.png
new file mode 100644
index 0000000..423d211
--- /dev/null
+++ b/doc/6.0.x/user/properties/images/MaxTabNamePreference.png
Binary files differ
diff --git a/doc/6.0.x/user/properties/images/PropertiesViewPreferencePage.png b/doc/6.0.x/user/properties/images/PropertiesViewPreferencePage.png
new file mode 100644
index 0000000..45222f4
--- /dev/null
+++ b/doc/6.0.x/user/properties/images/PropertiesViewPreferencePage.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/Sequence Diagrams.html b/doc/6.0.x/user/sequences/Sequence Diagrams.html
new file mode 100644
index 0000000..7a0349d
--- /dev/null
+++ b/doc/6.0.x/user/sequences/Sequence Diagrams.html
@@ -0,0 +1,328 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Sequence Diagrams</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="SequenceDiagramsEditors">Sequence Diagrams Editors</h1>
+		<p>This document explains how to use sequence diagrams editors/modelers. Sequence diagrams share most  of the functionalities of normal diagrams, but they have some specificities and restrictions.</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#SequenceDiagramsEditors">Sequence Diagrams Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#semantics">Sequence Diagrams Semantics</a>
+					</li>
+					<li>
+						<a href="#restrictions">Restrictions and Limitations</a>
+					</li>
+					<li>
+						<a href="#layout">Automatic Layout</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#insert_vertical_blank_space">Manually insert vertical blank space</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#elements">Sequence Diagram Elements</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#Lifelines">Life-lines</a>
+							</li>
+							<li>
+								<a href="#lifelines_header">Life-lines header</a>
+							</li>
+							<li>
+								<a href="#Executions">Executions</a>
+							</li>
+							<li>
+								<a href="#BasicMessages">Basic Messages</a>
+							</li>
+							<li>
+								<a href="#ComplexMessages">Complex Messages</a>
+							</li>
+							<li>
+								<a href="#CreationandDestructionMessages">Creation and Destruction Messages</a>
+							</li>
+							<li>
+								<a href="#Lostandfoundmessages">Lost and found messages</a>
+							</li>
+							<li>
+								<a href="#InteractionUsesandStates">Interaction Uses and States</a>
+							</li>
+							<li>
+								<a href="#CombinedFragmentsandOperands">Combined Fragments and Operands</a>
+							</li>
+							<li>
+								<a href="#ConstraintsandObservationPoints">Constraints and Observation Points</a>
+							</li>
+						</ol>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius supports a special kind of diagrams which reuse the notations and conventions of UML Sequence Diagrams, but can be applied to other domains than just UML. Here is an example which illustrates most  of the graphical constructions which can appear on these diagrams:</p> 
+		<img border="0" src="images/full_sequence_example.png"/>
+		<p>These diagrams behave mostly like normal Sirius diagrams, but in order to ensure the consistency of the model they represent, they have some restrictions. They also support some additional features or change the classical behavior of some features.</p>
+		<p>This document only describes the specificities of sequence diagrams. Unless otherwise stated here, all the features of normal Sirius diagrams apply also to sequence diagrams, so you can refer to 
+			<a href="../diagrams/Diagrams.html">the general diagrams user manual</a> for more information.
+		</p>
+		<p>
+			<strong>IMPORTANT WARNING</strong>: To work correctly, Sirius sequence diagrams must have a tight control on where the graphical elements are placed on the diagram and on their synchronization with the underlying semantic model. This means that to use sequence diagrams you 
+			<em>must</em>:
+		</p>
+		<ol>
+			<li>Disable the 
+				<em>Snap to Grid</em> and the 
+				<em>Snap to Shapes</em> behaviors. For an existing diagram, this is available in the 
+				<em>Rulers &amp; Grid</em> section of the 
+				<em>Properties</em> view when the diagram itself is selected. You can also disable it for all future diagrams in the preferences: 
+				<em>Sirius &gt; Sirius Diagram &gt; Rulers and Grid</em>, un-check the 
+				<em>Snap to grid for new diagrams</em> and 
+				<em>Snap to shapes for new diagrams</em> check boxes. Since Sirius 3.1.0, the snap features are automatically disabled in Sequence diagram editors and the user can not reactivate them.
+			</li>
+			<li>Enable Sirius&#8217;s 
+				<em>Automatic Refresh</em> (in the main 
+				<em>Sirius</em> preferences page) to ensure the diagram is always kept in synch with the underlying semantic model.
+			</li>
+		</ol>
+		<h2 id="semantics">Sequence Diagrams Semantics</h2>
+		<p>As their name says, sequence diagrams are meant to represent ordered sequences of elements. Typically, they represent 
+			<em>events</em> sent and received between some entities over 
+			<em>time</em>. The canonical case is a UML Sequence Diagram (where the notation comes from), which represents the messages exchanged between objects in a software system.
+		</p>
+		<p>The most important consequence of this is that contrary to what happens on a classical diagram, 
+			<em>the relative graphical positions of elements on a sequence diagram have strong meaning</em>. This is true for the vertical placement and for the left-to-right order of lifelines. However placing a message above or below another one has a strong implication on the ordering of the events they represent, and thus on the structure of the underlying semantic model which is represented. Sirius works hard to ensure that what you see on your sequence diagram (in terms of vertical ordering of elements and horizontal ordering of lifelines) always correspond to the semantic ordering of the represented events.
+		</p>
+		<p>This works both ways:</p>
+		<ul>
+			<li>Assuming your diagram is synchronized (i.e. you are in 
+				<em>Automatic Refresh</em> mode or your manually refreshed it since the last semantic changes), Sirius will always organize the elements on the diagram in a way which is compatible with the semantic ordering of the events: if you see an execution 
+				<em>E1</em> placed above another execution 
+				<em>E2</em>, you can be sure the events corresponding to 
+				<em>E1</em> happen before the events of 
+				<em>E2</em> in the semantic model.
+			</li>
+			<li>Symmetrically, and perhaps more importantly, 
+				<em>moving</em> elements on a sequence diagram may trigger changes in the underlying semantic model to reflect the new event order implied by the positions you changed. This is very different from what happens in other diagrams, where most graphical repositioning of elements are only cosmetic. Keeping the example above, moving execution 
+				<em>E2</em> graphically above 
+				<em>E1</em> will trigger changes in the semantic model to move the corresponding event of 
+				<em>E2</em> before the events of 
+				<em>E1</em>.
+			</li>
+		</ul>
+		<p>Most of the specific features and restrictions of sequence diagrams compared to other diagrams derive from this strong guarantee that at all time, the graphical (vertical) order of the elements you see on the diagram match exactly the semantic order of the events which exist in the underlying model.</p>
+		<h2 id="restrictions">Restrictions and Limitations</h2>
+		<p>In order to guarantee the strong guarantee described above, some of the features present on normal diagrams are not supported, or even completely disabled on sequence diagrams. Basically, anything which would make it possible on a normal diagram to have meaningful semantic elements not visible on the diagram is forbidden. This would make it impossible for Sirius to keep consistent tracking of the &#8220;position&#8221; of these invisible elements relative to the ones which are visible.</p>
+		<ul>
+			<li>
+				<em>Layers</em>: sequence diagrams may define optional layers, as long as they do not make graphical elements appear or disappear on the diagram when they are selected or de-selected. Layers which contribute new tools in the palette for example are fine.
+			</li>
+			<li>
+				<em>Filters</em>: filters which may hide elements from a sequence diagram when enabled are not supported.
+			</li>
+			<li>
+				<em>Hide/Reveal</em>: hiding elements explicitly is not supported. The actions are disabled in the UI.
+			</li>
+			<li>
+				<em>Pin/Unpin</em>: pinning graphical elements has no effect on the automatic layout of sequence diagrams. Even if an element has been marked as pinned, Sirius must be able to move it graphically as needed in order to maintain the graphical order of element in sync with the semantic order. The actions are disabled in the UI.
+			</li>
+		</ul>
+		<h2 id="layout">Automatic Layout</h2>
+		<p>The 
+			<em>Arrange All</em> command which launches an automatic layout of all the elements on a diagram has been completely customized for sequence diagrams. Arranging a sequence diagram will keep the relative positions of all the elements, but reduce any un-needed vertical or horizontal spaces. All elements will be resized to the minimum size necessary, and &#8220;packed&#8221; towards the top-left corner of the diagram. This results in a diagram which uses the minimum space required to present all the elements, while keeping enough white-space between them to be easy to read.
+		</p>
+		<h3 id="insert_vertical_blank_space">Manually insert vertical blank space</h3>
+		<p>It is also possible to manually insert vertical blank space to facilitate the organization of messages or to add new events in a sequence diagram. This feature is available on the vertical ruler by dragging the mouse with the Ctrl key pressed.
+			<br/>Below, an example where user inserts blank space before message m3:
+			<br/>
+			<img alt="Example where user inserts blank space before message m3" title="Example where user inserts blank space before message m3" border="0" src="images/insert_vertical_blank_space.png"/>
+		</p>
+		<p>To show ruler, you need to check the option 
+			<em>Show Ruler</em> as explained in 
+			<a href="../diagrams/Diagrams.html#RulersGrid">Rulers &amp; Grid</a> chapter.
+		</p>
+		<h2 id="elements">Sequence Diagram Elements</h2>
+		<p>This section presents each type of elements specific to sequence diagrams which are supported by Sirius, and their specificities (if any). Note that not all sequence diagrams will support all kinds of elements; this depends on the diagram&#8217;s configuration.</p>
+		<h3 id="Lifelines">Life-lines</h3>
+		<p>Life-lines represent the entities which interact (by exchanging events) on a sequence diagrams. They can be many different things depending on the domain being modeled: software objects, machines, people, etc. They are represented by a node (often a rectangle) at the top, and a thin vertical line attached to the bottom side of the node (always horizontally centered on it). There may be another node (generally small) at the bottom of the lifeline, representing the end of the life-line.</p>
+		<p>The example below shows three life-lines, named 
+			<code>a</code>, 
+			<code>b</code> and 
+			<code>c</code>. Then end of 
+			<code>a</code> and 
+			<code>c</code> is a small grey circle at the bottom of the life-lines, while the end of 
+			<code>b</code>, which is explicitly destroyed by the 
+			<code>m_destroy2</code> message, is a black cross.  
+		</p> 
+		<img border="0" src="images/lifelines.png"/>
+		<p>Life-lines can be moved horizontally, but their vertical placement can not be controlled directly. It is determined automatically by Sirius using the following rules:</p>
+		<ol>
+			<li>Life-lines which are not explicitly created by a 
+				<a href="#CreationandDestructionMessages">
+					<em>creation messages</em>
+				</a> are assumed to exist from the beginning of the sequence, and are all aligned at the top of the diagram. In the example, 
+				<code>a</code> and 
+				<code>c</code> are aligned at the top of the diagram.
+			</li>
+			<li>Life-lines which are explicitly created by a 
+				<em>creation messages</em> have their top node vertically aligned with the creation message. In the example, 
+				<code>b</code> is aligned with the 
+				<code>m_create1</code> creation message. Moving that message vertically would also move the top of the 
+				<code>b</code> life-line to stay aligned.
+			</li>
+		</ol>
+		<p>The vertical size of life-lines can be controlled, following some rules:</p>
+		<ol>
+			<li>Life-lines which are not explicitly destroyed by a 
+				<a href="#CreationandDestructionMessages">
+					<em>destruction message</em>
+				</a> are assumed to exist until (at least) the end of the sequence. They all finish at the same vertical position, which is always after the last event on the whole sequence. If life-lines have a node at their bottom (this depends on the configuration), these nodes can be dragged to resize all the life-lines which are not explicitly destroyed (as long as their new end position is after all events). In the example, dragging the grey circles at the bottom of 
+				<code>a</code> or 
+				<code>c</code> would resize both life-lines (but not 
+				<code>b</code>).  
+			</li>
+			<li>Life-lines which are explicitly destroyed by a 
+				<em>drestruction message</em> have the bottom node vertically aligned with the destruction message. In the example, 
+				<code>b</code> ends when it receives the 
+				<code>m_destroy2</code> message. Moving either the destruction message or the black cross which represents 
+				<code>b</code>'s destruction would resize the life-line (but only 
+				<code>b</code>).
+			</li>
+		</ol>
+		<p>Empty life-lines have a default size large enough that you can add several elements to them without the need for resizing. In the example, 
+			<code>a</code> and 
+			<code>c</code> have the default size.
+		</p>
+		<p>When you move life-lines horizontally, you can change their left-to-right order. If required, the system may move some other life-lines to ensure there is always some minimal horizontal blank space between two consecutive life-lines.</p>
+		<h3 id="lifelines_header">Life-lines header</h3>
+		<p>When a scenario diagram is higher than the displayed area, reading the last messages of the diagram makes the instance role of the life-lines not visible and does not help to locate the source and the target of a message. You can keep life-line header visible by activating &#8220;Display header&#8221; into 
+			<code>Preferences &gt; Sirius &gt; Sirius Diagram &gt; Appearance</code>. This preference is enabled by default.
+		</p>
+		<p>
+			<img border="0" src="images/header.png"/>
+		</p>
+		<p>The optimum height is automatically computed during the creation of a new sequence diagram. You can change the height manually by:</p>
+		<ul>
+			<li>Double-clicking on the separator between header and diagram. This computes again the optimum height according to current labels and width.</li>
+			<li>Moving the separator between header and diagram.</li>
+		</ul>
+		<p>The height is stored in the diagram. The next time you open the diagram, the header will be the same size.</p>
+		<h3 id="Executions">Executions</h3>
+		<p>Executions usually represent a time interval during which one of the participants in the sequence is active. They are represented by vertical rectangles superposed to the corresponding life-line, or to another execution (recursively).</p>
+		<p>The example below show a single life-line with five executions on it: two are top-level executions directly on the life-line itself, while the rest are sub-executions of others.</p> 
+		<img border="0" src="images/executions.png"/>
+		<p>Note that not all sequence diagram modelers will allow for the creation of &#8220;raw&#8221; executions like these, which are not connected to messages. This all depends on the semantics of the underlying models and of the diagram&#8217;s configuration.</p>
+		<h3 id="BasicMessages">Basic Messages</h3>
+		<p>Basic messages represent some form of communication between lifelines. They are represented by horizontal arrows between lifelines (or executions on lifelines).</p>
+		<p>The example below shows three lifelines and three messages. Note that the last one, 
+			<code>m3</code>, is a 
+			<em>reflective</em> message which is received by the same lifeline which sent it. 
+		</p> 
+		<img border="0" src="images/basic_messages.png"/>
+		<p>Note that not all sequence diagram modelers will allow for the creation of basic message like these, which are not connected the beginning or end of an execution. This all depends on the semantics of the underlying models and of the diagram&#8217;s configuration.</p>
+		<h3 id="ComplexMessages">Complex Messages</h3>
+		<p>Most sequence diagrams (including UML) will support some sort of 
+			<em>complex messages</em>, which include both executions and basic messages combined in special ways. This is used for example to represent 
+			<em>synchronous messages</em> in UML, where the first message sent triggers the execution of some behavior on the target lifeline, behavior which produces a return value sent back to the origin when the execution terminates.
+		</p>
+		<p>In the example below, the lifeline 
+			<code>a</code> sends a message 
+			<code>m1</code> to 
+			<code>b</code>, which triggers the execution of a complex behavior before 
+			<code>b</code> can send the result value back to 
+			<code>a</code>. During the execution of the behavior in 
+			<code>b</code>, it sends another message to 
+			<code>c</code>, waits for the answer, and then sends a message to itself which executes a sub-behavior (but does not return any useful value).
+		</p> 
+		<img border="0" src="images/complex_messages.png"/>
+		<h3 id="CreationandDestructionMessages">Creation and Destruction Messages</h3>
+		<p>Two special kinds of messages are used to represent the creation of a lifeline or its destruction by another participant. 
+			<em>Creation messages</em> are represented as normal messages, except that the top of the lifeline they target is always vertically aligned with the message (representing the fact that this lifeline did not exist before the message created it). Similarly, 
+			<em>destruction messages</em> are normal messages except that the bottom of the lifeline they target is aligned with the message. It is customary that the 
+			<em>End of Life</em> marker at the bottom of the lifeline (used to resize it) uses a different visual style (often a black cross) to represent the fact that the lifeline is destroyed by the message and does not exist afterwards.
+		</p>
+		<p>The figure below shows one example of each of these special kinds of messages: lifeline 
+			<code>a</code> first sends message 
+			<code>m_create1</code> which creates lifeline 
+			<code>b</code>, and then sends destruction message 
+			<code>m_destroy2</code> which provokes the destruction of 
+			<code>c</code>.
+		</p> 
+		<img border="0" src="images/creation_destruction_messages.png"/>
+		<h3 id="Lostandfoundmessages">Lost and found messages</h3>
+		<p>Lost and found messages are messages with an end which does not cover any lifeline. </p>
+		<ul>
+			<li>Lost messages are messages with known send, but the reception of the message does not happen.</li>
+			<li>Found messages are messages with knwon receiver, but the sending of the message is not described.</li>
+		</ul>
+		<p>The figure below shows one example of lost and found message for each of the different kinds of messages: lifeline 
+			<code>e</code> first receives found message 
+			<code>m_create7</code> which creates the lifeline, and then sends lost messages 
+			<code>m1</code> which should triggers the execution of a complex behavior, creation message 
+			<code>m_create2</code> which should create another lifeline, destruction message 
+			<code>m_destroy3</code> which could provoke its destruction, 
+			<code>m4</code> which could be linked to a lifeline not represented on the current diagram. Lifeline 
+			<code>e</code> finally receive three found messages: 
+			<code>m9</code> which triggers the execution of a complex behavior, 
+			<code>m8</code> which is a simple message and 
+			<code>m_destroy8</code> which provokes the destruction of 
+			<code>e</code>.
+		</p> 
+		<img border="0" src="images/found_lost_ends.png"/> 
+		<p>A lost/found message can be moved vertically like other messages. Align commands are available for lost and found message ends.</p>
+		<h3 id="InteractionUsesandStates">Interaction Uses and States</h3>
+		<p>
+			<em>Interaction Uses</em> are constructions which usually represent &#8220;shortcuts&#8221;, indicating that some complex interaction, which may be defined in another sequence diagrams, occurs at some point without cluttering the current diagram. They are represented by rectangles centered on the lifeline(s) which are concerned. They can contain a label in the top-left corner, indicating what kind of shortcut they represent, and another label (not editable directly) centered in the rectangle. Interaction uses may 
+			<em>cover</em> several lifelines.
+		</p>
+		<p>
+			<em>States</em> are more general annotations which are typically used to indicate that some condition regarding the state of a participant is true at this point in the sequence. They are represented by simple nodes centered on the single lifeline they concern.
+		</p>
+		<p>The figure below shows two interaction uses, one which covers only 
+			<code>a</code> and the other covering both 
+			<code>a</code> and 
+			<code>b</code>. It also shows a simple state 
+			<code>s1</code> on 
+			<code>b</code>, which is represented by a blue oval in this diagram.
+		</p> 
+		<img border="0" src="images/iu_states.png"/>
+		<h3 id="CombinedFragmentsandOperands">Combined Fragments and Operands</h3>
+		<p>
+			<em>Combined Fragments</em> and 
+			<em>Operands</em> are the most complex constructions on sequence diagrams. They are used to regroup other constructions (including other 
+			<em>Combined Fragments</em>) into blocks. A 
+			<em>combined fragment</em> is represented in a way similar to interaction uses (a rectangle which can cover several lifelines), except that it can contain one or more 
+			<em>operands</em>, separated by a dotted horizontal line. Operands can contain almost all the other constructions supported by sequence diagrams, with the restriction that they must be self-contained: a message which starts inside an operand must end inside the operand (i.e. on a lifeline which is covered by the parent combined fragment), and an execution which starts in an operand must end in the same (it can not end in another operand below).
+		</p>
+		<p>The figure below shows a top-level combined fragment named 
+			<code>alt</code>, which represent 
+			<em>alternatives</em> (the semantics is just an example, it is entirely dependent on the diagram&#8217;s configuration and underlying model). It contains three operands, labeled 
+			<code>x &lt; 0</code>, 
+			<code>x &gt; 0</code> and 
+			<code>x == 0</code>. Here, the content of each operand represent the alternative which would be executed if the corresponding condition was true. Note that the last operand, 
+			<code>x == 0</code>, contains a sub-fragment, named 
+			<code>par</code>, with two operands. Here the intended semantics is that for the 
+			<code>x == 0</code> case, we execute both 
+			<code>step1</code> and 
+			<code>step2</code> in 
+			<code>par</code>-allel.
+		</p> 
+		<img border="0" src="images/cfc_cfo.png"/> 
+		<h3 id="ConstraintsandObservationPoints">Constraints and Observation Points</h3>
+		<p>The elements displayed on a sequence diagram are delimited with some events which belong to the diagram semantic (chronological and global) ordering. An observation point is a node representing (gray dots on the following picture) those events, they are automatically placed and allow to create and display constraints between the events.</p>
+		<p>The figure below shows observation points as grayed dots on each sequence diagram element and several constraints with bracket style created between them. </p>
+		<p>
+			<img border="0" src="images/constraints.png"/>
+		</p>
+		<p>The main segment of the constraint can be moved and rotated. The other segments cannot be moved, the constraint is attached to observation points which are placed by the automatic layout. So move commands are disabled on observation points, but resize commands activation depends on the resize kind defined in the Viewpoint Specification Model.</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/sequences/images/basic_messages.png b/doc/6.0.x/user/sequences/images/basic_messages.png
new file mode 100644
index 0000000..c318ddc
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/basic_messages.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/cfc_cfo.png b/doc/6.0.x/user/sequences/images/cfc_cfo.png
new file mode 100644
index 0000000..d0445e9
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/cfc_cfo.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/complex_messages.png b/doc/6.0.x/user/sequences/images/complex_messages.png
new file mode 100644
index 0000000..9faa9fe
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/complex_messages.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/constraints.png b/doc/6.0.x/user/sequences/images/constraints.png
new file mode 100644
index 0000000..e2570a6
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/constraints.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/creation_destruction_messages.png b/doc/6.0.x/user/sequences/images/creation_destruction_messages.png
new file mode 100644
index 0000000..2791d76
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/creation_destruction_messages.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/executions.png b/doc/6.0.x/user/sequences/images/executions.png
new file mode 100644
index 0000000..ea995ea
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/executions.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/found_lost_ends.png b/doc/6.0.x/user/sequences/images/found_lost_ends.png
new file mode 100644
index 0000000..30f72e4
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/found_lost_ends.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/full_sequence_example.png b/doc/6.0.x/user/sequences/images/full_sequence_example.png
new file mode 100644
index 0000000..de24e1a
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/full_sequence_example.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/header.png b/doc/6.0.x/user/sequences/images/header.png
new file mode 100644
index 0000000..7ec9429
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/header.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/insert_vertical_blank_space.png b/doc/6.0.x/user/sequences/images/insert_vertical_blank_space.png
new file mode 100644
index 0000000..6aeb0ce
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/insert_vertical_blank_space.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/iu_states.png b/doc/6.0.x/user/sequences/images/iu_states.png
new file mode 100644
index 0000000..8575b94
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/iu_states.png
Binary files differ
diff --git a/doc/6.0.x/user/sequences/images/lifelines.png b/doc/6.0.x/user/sequences/images/lifelines.png
new file mode 100644
index 0000000..29962fa
--- /dev/null
+++ b/doc/6.0.x/user/sequences/images/lifelines.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/Tables.html b/doc/6.0.x/user/tables/Tables.html
new file mode 100644
index 0000000..72da77a
--- /dev/null
+++ b/doc/6.0.x/user/tables/Tables.html
@@ -0,0 +1,194 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Tables</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="TableEditors">Table Editors</h1>
+		<p>This document explains how to use the two kinds of tabular editors/modelers supported by Sirius: normal edition tables and cross-tables.</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#TableEditors">Table Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#managing">Creating, Renaming and Deleting Tables</a>
+					</li>
+					<li>
+						<a href="#refresh">Refreshing Tables</a>
+					</li>
+					<li>
+						<a href="#lines_columns">Adding and Removing Lines and Columns</a>
+					</li>
+					<li>
+						<a href="#HidingLinesandColumns">Hiding Lines and Columns</a>
+					</li>
+					<li>
+						<a href="#ChangingtheWidthofaColumn">Changing the Width of a Column</a>
+					</li>
+					<li>
+						<a href="#sorting">Sorting by Column</a>
+					</li>
+					<li>
+						<a href="#SortingbyLine">Sorting by Line</a>
+					</li>
+					<li>
+						<a href="#editing">Editing Cell Values</a>
+					</li>
+					<li>
+						<a href="#quick_outline">Quick Outline</a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius provides support for tabular representations. Tables allow to present information in structured forms. There are two kinds of tables:</p>
+		<ul>
+			<li>
+				<em>Edition tables</em> show one element per line, and one property (potentially computed) per column. Each cell shows the value of the property for the corresponding element, and may be editable.
+			</li>
+			<li>
+				<em>Cross tables</em> are designed to show relationships between elements. Both lines and columns represent elements. The cell at an intersection represent the relationship between the elements on the line and column (it may be empty if there is no relationships). These cells may also be editable to change the relationships between the elements.
+			</li>
+		</ul> 
+		<img border="0" src="images/tables_representations1.png"/>
+		<p>Both kinds of tables can also support sub-lines (and sub-sub-lines, etc.), which can be expanded or folded to show/hide some details, and share the same kinds of interactions. Unless otherwise stated, the rest of this document applies to both kinds of tables.</p>
+		<p>Note that as always with Sirius, some of the features described below may or may not be available with all specific kinds of tables. Some tables are designed to only present information but do not allow edition for example. It all depends on which features the person who 
+			<em>specified</em> (configured) the table decided to support.
+		</p>
+		<h2 id="managing">Creating, Renaming and Deleting Tables</h2>
+		<p>Tables are managed in the same way as the other kinds or representations supported by Sirius (diagrams, trees...). They are created either through the 
+			<em>New Representation</em> context menu on a semantic element, or through the 
+			<em>Create Representation</em> action on the context menu of a 
+			<em>Modeling Project</em>. Newly created tables are automatically opened. To open an existing table, simply double-click on it in the 
+			<em>Model Explorer</em>: it will appear both inside the representation file (
+			<code>aird</code> file) and under the semantic element it represents inside the semantic model.
+		</p>
+		<p>You can rename, duplicate or delete a table by choosing the corresponding action (resp. 
+			<em>Rename</em>, 
+			<em>Copy</em> or 
+			<em>Delete</em>) in the context menu on the table element in the 
+			<em>Model Explorer</em>.
+		</p>
+		<h2 id="refresh">Refreshing Tables</h2>
+		<p>Depending on the value of the 
+			<i>Automatic refresh</i> Sirius preference (accessible through 
+			<i>Window</i> / 
+			<i>Preferences...</i> / 
+			<i>Sirius</i>), the contents of opened tables may or may not be automatically updated when the underlying semantic model changes. In 
+			<em>manual refresh</em> mode (when 
+			<i>Automatic refresh</i> is unchecked), you can explicitly request a refresh of the whole table by using the 
+			<em>Refresh</em> button in the main Eclipse toolbar, as shown below:
+		</p> 
+		<img border="0" src="images/table_refresh1.png"/>
+		<h2 id="lines_columns">Adding and Removing Lines and Columns</h2>
+		<p>If the table&#8217;s configuration has defined tools to create new lines and columns, they will appear in the context menu of table elements. The name of the creation tools depends entirely on the table&#8217;s configuration, so it will be different for each tabular modeler. Note that you must have a table element selected for the creation tools to appear in the context menu; the behavior of the tool may depend on the selected element. If the table is completely empty and you have no element to select, you can still create elements (if supported by the table&#8217;s configuration) by using the drop-down menus in the main Eclipse toolbar (see screenshot).</p>
+		<p>Note that both kinds of tables can support line creation, but only cross tables support the creation of new columns.</p> 
+		<img border="0" src="images/table_create_item1.png"/> 
+		<img border="0" src="images/table_create_item2.png"/> 
+		<h2 id="HidingLinesandColumns">Hiding Lines and Columns</h2>
+		<p>You can control the visibility on individual lines and columns using the 
+			<i>Show/Hide</i> context menu, available on every table cell.
+		</p>
+		<p>Selecting a cell and choosing 
+			<i>Show/Hide &gt; Hide line</i> will hide the corresponding line. To reveal a hidden line, you can use either 
+			<i>Show/Hide &gt; Hide/Show Lines</i>, and select individually which lines should be visible or hidden. You can also use the 
+			<i>Show/Hide &gt; Show Hidden Lines</i>, which makes all the hidden lines visible again in one operation.
+		</p> 
+		<img border="0" src="images/table_show_hide1.png"/> 
+		<img border="0" src="images/table_show_hide2.png"/>
+		<p>The same operations can be performed on column using the corresponding operations in the 
+			<i>Show/Hide</i> menu for columns.
+		</p>
+		<p>Note that the visibility status of lines and columns are persisted: if you save and close a table with lines and/or columns hidden, they will still be hidden when you re-open the table later.</p>
+		<h2 id="ChangingtheWidthofaColumn">Changing the Width of a Column</h2>
+		<p>It is possible to change the width of a column by placing the cursor between two column headers and moving the separator. The columns' width is persisted: if you save and close your table, re-opening it later will restore the widths you set.</p>
+		<h2 id="sorting">Sorting by Column</h2>
+		<p>To sort the lines of a table by the values in a specific column, select one of the cells of the desired column, and in the context menu (right click), select the 
+			<i>Sort by column</i> entry. You can also click directly on the column&#8217;s header.
+		</p>
+		<p>The sorting is performed in the lexicographical order of the labels in the sort column. If a table contains sub-lines, the lines are sorted level by level: top-level lines are sorted relative to each other, then direct sub-lines of each line are sorted among themselves, etc.</p>
+		<p>The initial order of lines (when no sorting is active) is the &#8220;intrinsic&#8221; order of the elements, as defined by the table&#8217;s configuration. When you first activate sorting, lines are sorted in ascending order. If you sort a second time, they are sorted in descending order. Any operation which refreshes the table&#8217;s content (a manual refresh or a model change when in automatic refresh mode) resets the lines' ordering to the intrinsic order and disabled any sorting.</p> 
+		<img border="0" src="images/table_sort_by1.png"/>
+		<table>
+			<tr>
+				<th>Sorted Ascending</th>
+				<th>Sorted Descending</th>
+				<th>Unsorted</th>
+			</tr>
+			<tr>
+				<td>
+					<img border="0" src="images/table_sort_ascending.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/table_sort_descending.png"/>
+				</td>
+				<td>
+					<img border="0" src="images/table_sort_unsorted.png"/>
+				</td>
+			</tr>
+		</table>
+		<h2 id="SortingbyLine">Sorting by Line</h2>
+		<p>This kind of sorting is only available for cross table. It is symmetrical to the &#8220;Sort by column&#8221; feature, but sorts the columns of a cross table according to the values on a given line.</p>
+		<p>It is triggered in a similar way, by using the 
+			<i>Sort by line</i> item in the context menu on a cell in the cross table, and follows the same cycling rules (first ascending order, then descending if activated twice, and reset by a refresh).
+		</p>
+		<p>On a cross table, it is possible to combine sorting by line and columns.</p>
+		<h2 id="editing">Editing Cell Values</h2>
+		<p>When you select a cell in a table, the 
+			<i>Properties</i> will contain a tab named 
+			<i>Semantic</i> (normally the first one). This tab shows all the properties of all the semantic elements associated to the cell (there may be several elements), and you can edit each property individually. Note that because this tab shows all the raw properties of the semantic elements, it may be dangerous to edit them directly. Depending on how the table was configured, tabs with more user-oriented property sheets may also be available.
+		</p>
+		<p>Depending on the table&#8217;s configuration, it may also be possible to edit elements directly in the cells (this is called 
+			<em>direct edit</em>). To activate the edition of a cell, select it and then either:
+		</p>
+		<ul>
+			<li>hit the 
+				<em>Return</em> key;
+			</li>
+			<li>hit the 
+				<em>F2</em> key;
+			</li>
+			<li>double-click on it;</li>
+			<li>or type any alpha-numeric character (for text edition only).</li>
+		</ul>
+		<p>The editor offered depends on the contents of the cell. It may be:</p>
+		<ul>
+			<li>a combo-box if the content can only be a value in a pre-defined list (enumeration);</li>
+			<li>a check-box if the content is a boolean;</li>
+			<li>a text editor in all the other cases;</li>
+			<li>a dialog box for many-valued references.</li>
+		</ul>
+		<p>For combo-boxes, you can start typing the beginning of the value to filter the content of the combo-box.</p>
+		<p>For check-boxes, you can either click or use the space key to directly change the value of the check-box.</p>
+		<p>For plain text edition, to facilitate the mass data entry you can begin to directly enter the desired value without first start editing. If the first character typed is alpha-numeric, the text editor will be directly activated. If the property edited with the cell is declared as multi-line, a multi-line text editor is proposed for editing the content of the cell. There is a difference between Windows and Linux for this feature.</p>
+		<ul>
+			<li>On Linux, the height of the line fits its content. So if the text of one of the cells of a line is 4 lines high, the height is calculated accordingly. When editing, the editor appears on the location of the cell, several lines are visible at the same time.</li>
+			<li>On Windows, a restriction requires that all lines have the same height. So all the text will be shown on one line.When editing, a single line is visible and you must use the up/down arrow to display the other lines.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/table_multiline_edit_windows.png"/> 
+		</p>
+		<p>Under all systems, to finish the edition of a multi-line text, you need to use 
+			<em>Ctrl+Return</em>. Hitting 
+			<em>Return</em> will simply add a new line.
+		</p>
+		<h2 id="quick_outline">Quick Outline</h2>
+		<p>A quick outline is available with the shortcut 
+			<code>Ctrl</code> + 
+			<code>O</code>. This allows you to rapidly search text in the displayed name or the contained String attributes of your table elements elements.
+		</p>
+		<p>The star, 
+			<code>*</code>, is a joker character, allowing you to search with more complicated patterns. Regarding this, an element is found if there is a word in its name or one of its attributes that match with the text in the filter, so if you want to search within words too, add 
+			<code>*</code> at the start of your pattern. Also, you can navigate along the matching elements with 
+			<code>↑</code> and 
+			<code>↓</code>, and go to the selected element in your editor with 
+			<code>Enter</code>.
+		</p>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/tables/images/table_create_item1.png b/doc/6.0.x/user/tables/images/table_create_item1.png
new file mode 100644
index 0000000..1eac7dd
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_create_item1.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_create_item2.png b/doc/6.0.x/user/tables/images/table_create_item2.png
new file mode 100644
index 0000000..fa5c6c5
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_create_item2.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_multiline_edit_windows.png b/doc/6.0.x/user/tables/images/table_multiline_edit_windows.png
new file mode 100644
index 0000000..4bcace1
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_multiline_edit_windows.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_refresh1.png b/doc/6.0.x/user/tables/images/table_refresh1.png
new file mode 100644
index 0000000..015c68d
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_refresh1.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_show_hide1.png b/doc/6.0.x/user/tables/images/table_show_hide1.png
new file mode 100644
index 0000000..23ce738
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_show_hide1.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_show_hide2.png b/doc/6.0.x/user/tables/images/table_show_hide2.png
new file mode 100644
index 0000000..449f131
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_show_hide2.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_sort_ascending.png b/doc/6.0.x/user/tables/images/table_sort_ascending.png
new file mode 100644
index 0000000..012cd3b
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_sort_ascending.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_sort_by1.png b/doc/6.0.x/user/tables/images/table_sort_by1.png
new file mode 100644
index 0000000..5d7eae7
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_sort_by1.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_sort_descending.png b/doc/6.0.x/user/tables/images/table_sort_descending.png
new file mode 100644
index 0000000..7e0db46
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_sort_descending.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/table_sort_unsorted.png b/doc/6.0.x/user/tables/images/table_sort_unsorted.png
new file mode 100644
index 0000000..bfcf477
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/table_sort_unsorted.png
Binary files differ
diff --git a/doc/6.0.x/user/tables/images/tables_representations1.png b/doc/6.0.x/user/tables/images/tables_representations1.png
new file mode 100644
index 0000000..38e8234
--- /dev/null
+++ b/doc/6.0.x/user/tables/images/tables_representations1.png
Binary files differ
diff --git a/doc/6.0.x/user/trees/Trees.html b/doc/6.0.x/user/trees/Trees.html
new file mode 100644
index 0000000..bf8c416
--- /dev/null
+++ b/doc/6.0.x/user/trees/Trees.html
@@ -0,0 +1,118 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<title>Trees</title>
+		<link type="text/css" rel="stylesheet" href="../../resources/bootstrap.css"/>
+		<link type="text/css" rel="stylesheet" href="../../resources/custom.css"/>
+	</head>
+	<body>
+		<h1 id="TreeEditors">Tree Editors</h1>
+		<p>This document explains how to use Sirius tree editors/modelers which allow to view and manipulate data in a hierarchical way.</p>
+		<ol class="toc" style="list-style: disc;">
+			<li>
+				<a href="#TreeEditors">Tree Editors</a>
+				<ol style="list-style: disc;">
+					<li>
+						<a href="#introduction">Introduction</a>
+					</li>
+					<li>
+						<a href="#managing">Creating, Renaming and Deleting Trees</a>
+					</li>
+					<li>
+						<a href="#refresh">Refreshing Trees</a>
+					</li>
+					<li>
+						<a href="#items">Adding and Removing Tree Items</a>
+					</li>
+					<li>
+						<a href="#editing">Editing Tree Items</a>
+					</li>
+					<li>
+						<a href="#dragndrop">Tree Items Drag and Drop</a>
+					</li>
+					<li>
+						<a href="#quick_outline">Quick Outline</a>
+					</li>
+					<li>
+						<a href="#font_override">Overriding Tree Items Font</a>
+					</li>
+				</ol>
+			</li>
+		</ol>
+		<h2 id="introduction">Introduction</h2>
+		<p>Sirius provides support for hierarchical representations called 
+			<em>trees</em>, which represent information in a hierarchical way.
+		</p> 
+		<img border="0" src="images/tree_representation1.png"/>
+		<p>Note that as always with Sirius, some of the features described below may or may not be available with all specific tree editors. Some tree editors are configured to only display information but do not allow edition for example. It all depends on which features the person who 
+			<em>specified</em> (configured) the tree decided to support.
+		</p>
+		<h2 id="managing">Creating, Renaming and Deleting Trees</h2>
+		<p>Trees are managed in the same way as the other kinds or representations supported by Sirius (diagrams, tables...). They are created either through the 
+			<em>New Representation</em> context menu on a semantic element, or through the 
+			<em>Create Representation</em> action on the context menu of a 
+			<em>Modeling Project</em>. Newly created trees are automatically opened. To open an existing tree, simply double-click on it in the 
+			<em>Model Explorer</em>: it will appear both inside the representation file (
+			<code>aird</code> file) and under the semantic element it represents inside the semantic model.
+		</p>
+		<p>You can rename, duplicate or delete a tree by choosing the corresponding action (resp. 
+			<em>Rename</em>, 
+			<em>Copy</em> or 
+			<em>Delete</em>) in the context menu on the tree element in the 
+			<em>Model Explorer</em>.
+		</p>
+		<h2 id="refresh">Refreshing Trees</h2>
+		<p>Depending on the value of the 
+			<i>Automatic refresh</i> Sirius preference (accessible through 
+			<i>Window</i> / 
+			<i>Preferences...</i> / 
+			<i>Sirius</i>), the contents of opened trees may or may not be automatically updated when the underlying semantic model changes. In 
+			<em>manual refresh</em> mode (when 
+			<i>Automatic refresh</i> is unchecked), you can explicitly request a refresh of the whole tree by using the 
+			<em>Refresh</em> button in the main Eclipse toolbar, as shown below:
+		</p> 
+		<img border="0" src="images/tree_representation2.png"/>
+		<h2 id="items">Adding and Removing Tree Items</h2>
+		<p>If the tree&#8217;s configuration has defined tools to create new element (tree items), they will appear in the context menu of existing tree items. The name of the creation tools is not fixed; it depend on the tree&#8217;s configuration, so it will be different for each tree modeler. Note that you must have a tree element selected for the creation tools to appear in the context menu, and the behavior of the tool may depend on the selected element. </p> 
+		<img border="0" src="images/tree_representation3.png"/>
+		<p>If the tree is completely empty and you have no element to select, you can still create elements (if supported by the tree&#8217;s configuration) by using the drop-down menus in the main Eclipse toolbar (see screenshot).</p>
+		<img border="0" src="images/tree_representation4.png"/>
+		<h2 id="editing">Editing Tree Items</h2>
+		<p>There are several ways to activate the edition of a tree item:</p>
+		<ul>
+			<li>F2 key, </li>
+			<li>Double-click, </li>
+			<li>Any alpha-numeric character key (for text edition only).</li>
+		</ul>
+		<p>Once the edit mode is enabled, simply enter your text and hit 
+			<em>Return</em> to validate. The expected format of the edit string and its interpretation depends on how the tree&#8217;s configuration has been set up to interpret the text you enter.
+		</p>
+		<h2 id="dragndrop">Tree Items Drag and Drop</h2>
+		<p>Drag and drop is a feature which can be enabled by the specifier in the tree configuration. It is turned off by default.</p>
+		<p>Simply select the Tree Items you would like to drag, and drop them inside an other Tree Item. Most of the time, this will result in the dropped element being added to the new location, but the exact effect of the operation is entirely dependent on how the tree was configured by its specifier.</p>
+		<p>Notice that it may also possible to drag elements from other Eclipse views. Again, this depends on how the tree was configured.</p>
+		<h2 id="quick_outline">Quick Outline</h2>
+		<p>A quick outline is available with the shortcut 
+			<code>Ctrl</code> + 
+			<code>O</code>. This allows you to rapidly search text in the displayed name or the contained String attributes of your table elements elements.
+		</p>
+		<p>The star, 
+			<code>*</code>, is a joker character, allowing you to search with more complicated patterns. Regarding this, an element is found if there is a word in its name or one of its attributes that match with the text in the filter, so if you want to search within words too, add 
+			<code>*</code> at the start of your pattern. Also, you can navigate along the matching elements with 
+			<code>↑</code> and 
+			<code>↓</code>, and go to the selected element in your editor with 
+			<code>Enter</code>.
+		</p>
+		<h2 id="font_override">Overriding Tree Items Font</h2>
+		<p>The tree editor always specify a font and text size to use when displaying tree items. If these do not render well on your machine for any reason, you can tell Sirius to use the default font from your environment instead.</p>
+		<p>To do so, go to &#8220;Window&gt;Preferences&#8221;. In the preference window: </p>
+		<ul>
+			<li>select the Sirius Tree preferences and check the preference &#8220;Always use standard font&#8221;.</li>
+		</ul>
+		<img border="0" src="images/runtime_font_preference.png"/>
+		<ul>
+			<li>reopen all the tree editors currently opened. The font used is now your runtime one.</li>
+		</ul>
+	</body>
+</html>
\ No newline at end of file
diff --git a/doc/6.0.x/user/trees/images/runtime_font_preference.png b/doc/6.0.x/user/trees/images/runtime_font_preference.png
new file mode 100644
index 0000000..b67d123
--- /dev/null
+++ b/doc/6.0.x/user/trees/images/runtime_font_preference.png
Binary files differ
diff --git a/doc/6.0.x/user/trees/images/tree_representation1.png b/doc/6.0.x/user/trees/images/tree_representation1.png
new file mode 100644
index 0000000..8f9f441
--- /dev/null
+++ b/doc/6.0.x/user/trees/images/tree_representation1.png
Binary files differ
diff --git a/doc/6.0.x/user/trees/images/tree_representation2.png b/doc/6.0.x/user/trees/images/tree_representation2.png
new file mode 100644
index 0000000..5cfbda0
--- /dev/null
+++ b/doc/6.0.x/user/trees/images/tree_representation2.png
Binary files differ
diff --git a/doc/6.0.x/user/trees/images/tree_representation3.png b/doc/6.0.x/user/trees/images/tree_representation3.png
new file mode 100644
index 0000000..dd99944
--- /dev/null
+++ b/doc/6.0.x/user/trees/images/tree_representation3.png
Binary files differ
diff --git a/doc/6.0.x/user/trees/images/tree_representation4.png b/doc/6.0.x/user/trees/images/tree_representation4.png
new file mode 100644
index 0000000..913d62b
--- /dev/null
+++ b/doc/6.0.x/user/trees/images/tree_representation4.png
Binary files differ
diff --git a/doc/Release_Notes.html b/doc/Release_Notes.html
index af54d6e..54f6455 100644
--- a/doc/Release_Notes.html
+++ b/doc/Release_Notes.html
@@ -13,10 +13,7 @@
 				<a href="#ReleaseNotesforSirius">Release Notes for Sirius</a>
 				<ol style="list-style: disc;">
 					<li>
-						<a href="#sirius6.0.2">Changes in Sirius 6.0.2</a>
-					</li>
-					<li>
-						<a href="#sirius6.0.1">Changes in Sirius 6.0.1</a>
+						<a href="#sirius6.1.0">Changes in Sirius 6.1.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges">User-Visible Changes</a>
@@ -68,52 +65,355 @@
 							</li>
 						</ol>
 					</li>
-					<li>
-						<a href="#sirius5.0.1">Changes in Sirius 5.0.1</a>
-					</li>
-					<li>
-						<a href="#sirius5.0.0">Changes in Sirius 5.0.0</a>
-						<ol style="list-style: disc;">
-							<li>
-								<a href="#UserVisibleChanges5">User-Visible Changes</a>
-							</li>
-							<li>
-								<a href="#DeveloperVisibleChanges5">Developer-Visible Changes</a>
-							</li>
-							<li>
-								<a href="#SpecifierVisibleChanges4">Specifier-Visible Changes</a>
-							</li>
-						</ol>
-					</li>
 				</ol>
 			</li>
 		</ol>
 		<p>This document contains the release notes for recent major releases of Sirius. See also 
 			<a href="Release_Notes_Previous.html">the release notes from previous versions</a> for details about older releases.
 		</p>
-		<h2 id="sirius6.0.2">Changes in Sirius 6.0.2</h2>
-		<p>Sirius 6.0.2 fixes an 
-			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=539333">important issue</a> which is present in all previous versions of Sirius but only manifests itself under Windows and when using Eclipse SimRel 2018-09 or later (technically, the bug appear when using Sirius with JFace 3.14.100 or later). The symptom is that the 
-			<em>Model Explorer</em> view fails to initialize with an error message about a 
-			<code>ClassCastException</code>.
-		</p>
-		<h2 id="sirius6.0.1">Changes in Sirius 6.0.1</h2>
-		<p>Sirius 6.0.1 is a service release which contains only important bug fixes compared to version 6.0.0.</p>
-		<p>
-			<em>Note:</em> The new (and still experimental) 
-			<em>Workflow</em> and 
-			<em>Server</em> features depend on a specific version of Eclipse Jetty which is available in the main Eclipse Photon repository. They can not be used under Oxygen (which include older and incompatible versions of Jetty).
-		</p>
+		<h2 id="sirius6.1.0">Changes in Sirius 6.1.0</h2>
+		<ul>
+			<li><span class="label label-info">IMPORTANT</span>  The new (and still experimental) 
+				<em>Workflow</em> and 
+				<em>Server</em> features depend on a specific version of Eclipse Jetty which is available in the main Eclipse Photon repository. They can not be used under Oxygen (which include older and incompatible versions of Jetty).
+			</li>
+			<li><span class="label label-info">IMPORTANT</span> Please note that starting from version 6.1, Sirius is now licensed under 
+				<a href="https://www.eclipse.org/legal/epl-2.0/">version 2.0 of the Eclipse Public License</a>, which updates some wording and clarifies some points but neither changes the open-source nature of Sirius nor the implications of using or embedding it. See 
+				<a href="https://www.eclipse.org/legal/epl-2.0/faq.php">the official FAQ</a> for details about the difference between EPL v1.0 (which was used before) and v2.0.
+			</li>
+		</ul>
 		<h3 id="UserVisibleChanges">User-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> A new preference has been added in the Sirius preference panel. It allows Sirius to ask the user if he wants to save session resources after an automatic migration. If the new preference is ticked, the pop-up will only appear for session opening caused by a direct action of the user (i.e. opening a diagram or unfolding the resources in the model explorer). You can refer to the 
+				<a href="user/general/Modeling%20Project.html#Migration">user documentation </a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> On sequence diagrams, it is now possible to add vertical blank spaces on standard edition mode by dragging the mouse anywhere in the canvas with the Ctrl+Shift keys pressed.  This 
+				<a href="user/sequences/Sequence%20Diagrams.html#insert_vertical_blank_space">feature:</a> was here since version 6.0.0 but was only accessible through the ruler.
+			</li>
+			<li><span class="label label-success">Added</span> The preference 
+				<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys.PREF_DISPLAY_VSM_USER_FIXED_COLOR_IN_PALETTE</code> has been added and can be managed in Preferences/Sirius/Sirius Diagram/Appearance/Display viewpoint colors. It allows to display, in the color palette, the user fixed color(defined in the activated viewpoints) in addition to standard colors. The color palette is available in Appearance tab of the Properties view.
+			</li>
+			<li><span class="label label-success">Added</span> A new visibility diagram edit 
+				<a href="user/diagrams/Diagrams.html#edit_modes">mode</a> is available. It allows to see diagram elements hidden manually with some transparency. In this mode the visibility can be changed by a double click on the target diagram element.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="user/diagrams/images/show_hide_mode_example.png"/>
+		</p>
+		<ul>
+			<li><span class="label label-success">Added</span> A new dropdown menu gathering the layouting, visibility and standard mode is now available in the tabbar of diagram editors to activate the chosen edit mode. The standard mode corresponds to a diagram editor without the layouting and visibility mode activated.</li>
+		</ul>
+		<p>
+			<img border="0" src="user/diagrams/images/show_hide_mode_tabbar_activate.png"/>
+		</p>
+		<ul>
+			<li><span class="label label-success">Added</span> A quick fix is now available on the error marker signaling a modeling project without a representations file. Processing this quick fix will create a new empty representation file.</li>
+			<li><span class="label label-info">Modified</span> The tool &#8220;Link Note&#8221;, introduced in Sirius 6.0.0, has been renamed into &#8220;Representation Link&#8221;.</li>
+			<li><span class="label label-info">Modified</span> A &#8220;Representation Link&#8221; is no longer deleted automatically when the targeted representation is deleted. Instead, the note header changes to &#8220;Broken Representation Link&#8221; and the note icon changes to a small red diagonal cross. You can refer to the 
+				<a href="user/diagrams/Diagrams.html#notes">user documentation</a> for more details.
+			</li>
+		</ul>
 		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> 
-				<a href="specifier/workflows/Workflows.html">Initial documentation</a> has been added for the &#8220;Workflow&#8221; feature introduced in 6.0.0 (which is still experimental). 
+				<a href="specifier/workflows/Workflows.html">Initial documentation</a> has been added for the &#8220;Workflow&#8221; feature introduced in 6.0.0 (which is still experimental).
+			</li>
+			<li><span class="label label-success">Added</span> The contribution of 
+				<code>PopupMenu</code> in diagram has been improved. It is now possible to define 
+				<code>Group</code> in 
+				<code>PopupMenu</code>. A group allows to group several actions. It appears like a separator between groups of actions. It is also possible to reuse existing menu or group.
+			</li>
+		</ul>
+		<p>Previously, it was possible to add new menus and actions at the end of the contextual menu:
+			<br/>
+			<img border="0" src="images/popupMenuBefore.png"/>
+			<br/>Now, it is possible to:
+		</p>
+		<ul>
+			<li>group actions (actions in MySpecificPopupMenu2 for example),</li>
+			<li>add new menus and actions in a new group of an existing menu (action MyActionF1 and menu MySpecificPopupMenu2 for example)</li>
+			<li>add new menus and actions in an existing group of an existing menu (action MyActionH1 and menu MySpecificPopupMenu3 for example):</li>
+		</ul>
+		<p>
+			<img border="0" src="images/popupMenuAfter.png"/>
+		</p>
+		<ul>
+			<li>add new actions in the &#8220;Select All&#8221; menu of the 
+				<a href="user/diagrams/Diagrams.html#ref_tabbar">tab-bar</a>. Some services have been directly provided in Sirius in class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.interpreter.StandardDiagramServices</code>: see 
+				<a href="#DeveloperVisibleChanges">org.eclipse.sirius.diagram.ui developer visible changes</a> for the list of services or chapter 
+				<a href="specifier/general/ToolsSpecification.html#selectionAfterToolExecution">Selection after tool execution</a> of documentation to see how to use them.
+			</li>
+		</ul>
+		<p>Refer to the 
+			<a href="specifier/diagrams/Diagrams.html#group">specifier documentation</a> for details.
+		</p>
+		<ul>
+			<li><span class="label label-info">Modified</span> Specifier can now hide header column of Edition Table (the left-most column of the table). It is possible by specifying value -1 in the 
+				<em>Initial Header Column Width</em> field of Edition table representation. See 
+				<a href="specifier/tables/Tables.html#edition_tables">the documentation</a> for details.
 			</li>
 		</ul>
 		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+		<p><span class="label label-info">IMPORTANT</span> Note that all plug-ins in the 
+			<em>Sirius Server</em> feature (
+			<code>org.eclipse.sirius.server.*</code> and 
+			<code>org.eclipse.sirius.services.*</code>) are still considered experimental in this version. In particular, all APIs (Java, HTTP, WebSocket) they provide should be treated as provisional even if they are exposed publicly in 
+			<code>*.api.*</code> packages. We reserve the right to modify them in incompatible ways even in future maintenance versions.
+		</p>
 		<ul>
+			<li><span class="label label-success">Added</span> Mechanism to ask user input on opening of a session with migrated resources if the session opening comes from a direct user action
+				<ul>
+					<li>New available UI callback (
+						<code>org.eclipse.sirius.tools.api.command.ui.UICallBack.askUserAndSaveMigratedSession(session)</code>) used to ask user if he wants to save the resources after migration and save them if necessary.
+					</li>
+					<li>New method to open session when this is due to a direct user action (
+						<code>org.eclipse.sirius.business.api.session.SessionManager.openSession(sessionResourceURI, monitor, uiCallback, isDirectUserActionLoading)</code>). Previous version calls this new version with the value false for 
+						<code>isDirectUserActionLoading</code> parameter
+					</li>
+					<li>New system preference to know if user want to be asked to save resources after automatic migration 
+						<code>org.eclipse.sirius.common.tools.api.constant.CommonPreferencesConstants.PREF_ASK_TO_SAVE_RESOURCE_AFTER_MIGRATION</code>
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.migrationHandler</code> extension point has been added. It allows to contribute migration process, mainly handle migration options.
+			</li>
+			<li><span class="label label-info">Modified</span> Upgraded ELK version from 0.3.0 to 0.4.0, see the 
+				<a href="https://projects.eclipse.org/projects/modeling.elk/releases/0.4.0">ELK documentation</a> for the list of changes in that version.
+			</li>
 			<li><span class="label label-info">Modified</span> The Acceleo version has been changed from 3.7.2 to 3.7.4.</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>SiriusFormatDataManagerForSemanticElements</code> has been moved from package 
+				<code>org.eclipse.sirius.diagram.ui.tools.internal.format.semantic</code> to 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.semantic</code>.
+			</li>
+			<li><span class="label label-danger">Removed</span> 
+				<em>EOperations</em> 
+				<code>checkRule</code> and 
+				<code>getMessage</code> of 
+				<code>ValidationRule</code> 
+				<em>EClass</em> have been removed from 
+				<code>viewpoint</code> metamodel. These operations were deprecated and useless since we used method of 
+				<code>org.eclipse.sirius.business.internal.metamodel.description.validation.operations.ValidationRuleOperations</code> class.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys.PREF_DISPLAY_VSM_USER_FIXED_COLOR_IN_PALETTE</code> has been added. Its default value is true. It allows to display, in the color palette, the user fixed color(defined in the activated viewpoints) in addition to standard colors. The color palette is available in Appearance tab of the Properties view.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Some specific services exist natively in Sirius and can be used to contribute new select all actions. Theses services are all in the class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.interpreter.StandardDiagramServices</code>:
+				<ul>
+					<li>
+						<code>stdGetViewsRepresentingSameEType(DSemanticDiagram, List&lt;DSemanticDecorator&gt;)</code>: Return the list of 
+						<code>DSemanticDecorator</code> representing semantic element with same EType as the current selected diagram elements.
+					</li>
+					<li>
+						<code>stdGetViewsWithSameMapping(DSemanticDiagram, List&lt;DSemanticDecorator&gt;)</code>: Return the list of 
+						<code>DSemanticDecorator</code> having the same mappings as the current selected diagram elements.
+					</li>
+					<li>
+						<code>stdGetViewsRepresentingSelectedType(DSemanticDiagram)</code>: Return the list of 
+						<code>DSemanticDecorator</code> in the current diagram representing semantic element having the EType provided by the end-user through a dialog box. This dialog box can be improved. There is currently no completion, neither validation.
+					</li>
+					<li>
+						<code>stdGetViewsOfExpression(DSemanticDiagram)</code>: Return the list of 
+						<code>DSemanticDecorator</code> corresponding to the evaluation of an expression written by the end-user in a dialog box. This dialog box can be improved. There is currently no completion, neither validation.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> The query 
+				<code>isRepresentationLink()</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery</code> to know if the view is a representation link or a normal note.
+			</li>
+			<li><span class="label label-success">Added</span> The query 
+				<code>isRepresentationLinkBroken()</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery</code> to know, for a representation link, if it refers to a deleted representation descriptor. Invocations should be guarded by 
+				<code>isRepresentationLink()</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerFigureDesc</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.StyledFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ITransparentFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.IRoundedCorner</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ImageFigureWithAlpha</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.anchor.ZoomDependantAnchor</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures.util</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.anchor.AnchorProvider</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures.util</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ViewGradientFigureDesc</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.TransparentFigureGraphicsModifier</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.SiriusWrapLabel</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.PolygoneAndPolylineDecoraction</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ParallelogramFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.OneLineMarginBorder</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.ODesignEllipseFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GaugeSectionFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GaugeCompositeFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.DBorderedNodeFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.anchor.AirSlidableImageAnchor</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures.util</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AlphaDropShadowBorder</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AirStyleDefaultSizeNodeFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AirNoteFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AirDefaultSizeNodeFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentRectangle</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentRectangle</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentNode</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentImage</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentEllipse</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractGeoShapePolygonFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> An int parameter replace now the BackgroundStyle parameter into the class 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GradientRoundedRectangle</code>. This parameter represents still the backgroundStyle in int format.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.sequence.ui">Changes in 
+			<code>org.eclipse.sirius.diagram.sequence.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.sequence.ui.tool.internal.figure.HorizontalGuide</code> has been moved to 
+				<code>org.eclipse.sirius.ext.draw2d.figure</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.sequence.ui.tool.internal.figure.CombinedFragmentInvisibleResizableCompartmentFigure</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+			<li><span class="label label-info">Modified</span> The class 
+				<code>org.eclipse.sirius.diagram.sequence.ui.tool.internal.figure.SequenceSlidableAnchor</code> has been moved to 
+				<code>org.eclipse.sirius.ext.gmf.runtime.gef.ui.figures</code> package.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common">Changes in  
+			<code>org.eclipse.sirius.common</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The new preference 
+				<code>PREF_ASK_TO_SAVE_RESOURCE_AFTER_MIGRATION</code> has been added in 
+				<code>CommonPreferencesConstants</code>. If true users will be asked to save the VSM or aird if it has been automatically migrated after a user action.
+			</li>
+			<li><span class="label label-success">Added</span> The new 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCopier</code> has been added to provide the ability to copy an object without copying the attribute seen as id by EMF. If this id is not set by the factory or during object creation and if its concrete expected type is 
+				<code>String</code>, it is set during the copy using 
+				<code>org.eclipse.emf.ecore.util.EcoreUtil.generateUUID()</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The new method 
+				<code>AbstractSiriusSwtBotGefTestCase.changeSiriusCommonPreference(String, Boolean)</code> has been added. It allows to change a preference defined in 
+				<code>oes.common</code> plugin.
+			</li>
+		</ul>
+		<h4 id="Migrations">Migrations</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A migration participant has been added to convert the serialized xmi:id to the technical id (uid attribut) for Sirius model elements of the .aird files (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=525261">bugzilla #525261</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>14.1.0.201808300808</em>.
+			</li>
+			<li><span class="label label-success">Added</span> A migration participant has been added to fix diagrams with corrupted Note, Text or Note Attachment (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=539550">bugzilla #539550</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>14.1.0.201809271200</em>.
+			</li>
+			<li><span class="label label-success">Added</span> A migration participant has been added to update existing representation link. (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=535648">bugzilla #533175</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>14.1.0.201810111800</em>.
+			</li>
+			<li><span class="label label-success">Added</span> A migration participant has been added to fix edge with multiple connector style (see 
+				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=539944">bugzilla #539944</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>14.1.0.201810161215</em>.
+			</li>
 		</ul>
 		<h2 id="sirius6.0.0">Changes in Sirius 6.0.0</h2>
 		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
@@ -202,7 +502,7 @@
 				<code>SemanticBasedDecoration</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -250,6 +550,21 @@
 				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code> (and all its implementations), the method 
 				<code>refreshEffectiveRepresentationDescription(DRepresentation, IProgressMonitor)</code> has been removed. It corresponded to an experimental feature which has been abandonned long ago. 
 			</li>
+			<li><span class="label label-success">Added</span> A new 
+				<code>ToolSection</code>, 
+				<code>ToolGroup</code>  and 
+				<code>ToolInstance</code> model element have been added in 
+				<code>viewpoint</code> metamodel. These elements are used to represent tools available for a 
+				<code>DDiagram</code> with their visibility, enabling and filtering status. 
+				<code>ToolSectionInstance</code> are available in the 
+				<code>UIState</code> of a 
+				<code>DDiagram</code> by using the 
+				<code>toolSections</code> reference. 
+			</li>
+			<li><span class="label label-danger">Removed</span> the class 
+				<code>ToolFilterDescriptionListener</code> has been removed because of the new 
+				<code>ToolMangament</code> mechanism used to handle tools and layer changes.
+			</li>
 		</ul>
 		<h4 id="Changesinorg.eclipse.sirius.diagram">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
@@ -259,8 +574,28 @@
 				<code>org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramPreferencesKeys.PREF_DISPLAY_GENERIC_EDGE_CREATION_TOOL</code> has been added to make to possible to hide the new generic edge creation tool. See the 
 				<em>User-Visible Changes</em> or the user documentation for more details.
 			</li>
+			<li><span class="label label-success">Added</span> A component 
+				<code>ToolManagement</code> has been created to manage tool availability and status for a given 
+				<code>DDiagram</code>. It comes with the listener interface 
+				<code>ToolChangeListener</code> that can be used to be warned about tool changes.
+			</li>
+			<li><span class="label label-success">Added</span>  An interface 
+				<code>ToolConstants</code> has been created to gather constants relative to tool management.
+			</li>
+			<li><span class="label label-info">Modified</span> The constants 
+				<code>SiriusDiagramPaletteFactory#GENERIC_CONNECTION_CREATION_TOOL</code> and 
+				<code>SiriusDiagramPaletteFactory#TOOL_NOTEATTACHMENT</code> have been moved in 
+				<code>ToolConstants</code>
+			</li>
+			<li><span class="label label-info">Modified</span> The classes 
+				<code>ToolFilter</code> and 
+				<code>ToolFilterFromDescription</code> have been moved from the plugin 
+				<code>oes.diagram.ui</code> to 
+				<code>oes.diagram</code> in package 
+				<code>org.eclipse.sirius.diagram.tools.api.managment</code>
+			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -277,7 +612,25 @@
 				<code>org.eclipse.sirius.diagram.ui.api.layout.LayoutOptionFactory</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+		<ul>
+			<li><span class="label label-info">Modified</span> The methods 
+				<code>hideLayer(Layer)</code>, 
+				<code>showLayer(Layer)</code>, 
+				<code>addToolFilter(ToolFilter)</code> and 
+				<code>removeToolFilter(ToolFilter)</code> of 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.graphical.edit.palette.PaletteManager</code> have been made deprecated. They are not used anymore. The API 
+				<code>ToolManagement</code> is now the entry point to make palette update regarding tools and layer changes.
+			</li>
+		</ul>
+		<ul>
+			<li><span class="label label-info">Modified</span> The 
+				<code>Diagram</code> parameter of the methods 
+				<code>oes.update(Diagram)</code> and 
+				<code>oes.update(Diagram,boolean)</code> has been changed to 
+				<code>DDiagram</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -298,7 +651,7 @@
 				<code>org.eclipse.sirius.tests.swtbot.Activator.PLUGIN_ID</code>). It avoids to build a wrong target platform containing each Sirius plug-ins twice. 
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -307,7 +660,7 @@
 				<code>org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot.dragAndDrop(AbstractSWTBot&lt;? extends Widget&gt;)</code> method instead. 
 			</li>
 		</ul>
-		<h4 id="Migrations">Migrations</h4>
+		<h4 id="Migrations2">Migrations</h4>
 		<ul>
 			<li><span class="label label-success">Added</span> A migration participant has been added to fix diagram with note attachment corrupted (see 
 				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=533177">bugzilla #533177</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
@@ -354,7 +707,7 @@
 				<code>org.eclipse.sirius.business.api.query.SiriusReferenceFinder.getReferencingSiriusElements(Collection&lt;EObject&gt;, SearchScope)</code>. The SearchScope.LOADED_REPRESENTATIONS_SCOPE scope covers the search and result scope. Then, no additional resource will be loaded using this scope.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -378,7 +731,7 @@
 		<pre>SiriusEditPlugin.getPlugin().getPreferenceStore().setDefault(SiriusUIPreferencesKeys.PREF_SCALE_LEVEL_DIAGRAMS_ON_EXPORT.name(),0); 
 
 </pre>
-		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -480,7 +833,7 @@
 			</li>
 		</ul>
 		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
-		<h4 id="Migrations2">Migrations</h4>
+		<h4 id="Migrations3">Migrations</h4>
 		<ul>
 			<li><span class="label label-success">Added</span> A migration has been added to fix diagram with edge labels corrupted (see 
 				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=518870">bugzilla #518870</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
@@ -588,7 +941,7 @@
 				<code>DialectManagerImpl</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -610,7 +963,7 @@
 				<code>DDiagram.getActivatedLayers</code> in several cases if you directly use it.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -659,7 +1012,7 @@
 				<a href="./specifier/general/Writing_Queries.html#service_methods">specifier documentation</a>, it is recommended to use List or Set instead of Collection in java services signature.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -720,598 +1073,5 @@
 				<code>org.eclipse.sirius.ui.editor.sessionEditorPageProvider</code> has been added to allow custom page providing for session editor instances.
 			</li>
 		</ul>
-		<h2 id="sirius5.0.1">Changes in Sirius 5.0.1</h2>
-		<p>Sirius 5.0.1 is a maintenance release with only bugfixes and small tweaks to the UI of 
-			<a href="user/general/Aird_Editor.html">the aird editor</a>.
-		</p>
-		<h2 id="sirius5.0.0">Changes in Sirius 5.0.0</h2>
-		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
-		<ul>
-			<li><span class="label label-success">Added</span> An new 
-				<em>aird editor</em> is available on 
-				<em>.aird</em> files. It provides an alternative, form-based GUI to visualize and manipulate sirius sessions which is not tied to the Modeling perspective or Model Explorer view. See 
-				<a href="user/general/Aird_Editor.html">the editor&#8217;s documentation</a> for more details.
-			</li>
-			<li><span class="label label-info">Modified</span> The label alignment of Notes from the Palette has been modified from Juno to Luna or newer versions of Eclipse. The label alignment had changed from 
-				<em>TOP</em> &amp; 
-				<em>CENTER</em> to 
-				<em>MIDDLE</em> &amp; 
-				<em>LEFT</em> (respectively). The initial alignment (
-				<em>TOP</em> &amp; 
-				<em>CENTER</em>) has been restored. This is done with an 
-				<a href="./user/general/Modeling%20Project.html#Migration">automatic migration</a> of the aird file.
-			</li>
-			<li><span class="label label-info">Modified</span> The 
-				<em>Export diagram as images</em> action now adatps the output resolution based on the diagram size. This leads to better resolution for small to medium diagrams (and also bigger file) and to an operation which is no longer failing with out of memory errors in case of very big diagrams.
-			</li>
-			<li><span class="label label-info">Modified</span> The &#8220;straighten to&#8221; actions previously had a limitation concerning overlap detection. This is no longer the case. The previous known limitation has been removed from the documentation (
-				<i>In case of multi-selection, the overlap check is done in the current context of existing border nodes and not in the context of location of border nodes after each straighten edges.</i>).
-			</li>
-			<li><span class="label label-info">Modified</span> Decorators on diagram elements are drawn on top of other figures. If there is an overlap between a decorator of a figure A and another figure B that is over figure A, when user clicks on the decorator, the figure B is now selected (before it was the parent figure A).</li>
-		</ul>
-		<h3 id="DeveloperVisibleChanges5">Developer-Visible Changes</h3>
-		<h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
-		<ul>
-			<li><span class="label label-success">Added</span> It is now possible to automatically create one or several pre-configured widget(s) in a group if its domain class and if the meta-models of the properties view containing it have been specified. The widget(s) created will be infered from the features in the domain class (e.g. a properly configured 
-				<em>Checkbox</em> widget will be created for boolean attributes).
-			</li>
-			<li><span class="label label-success">Added</span> Property Views definitions now support extending and overriding Properties View Descriptions without modifying the original. See 
-				<a href="specifier/properties/Properties_View_Description.html#extensibility_features">the documentation</a> for details.
-			</li>
-			<li><span class="label label-success">Added</span> New model operations are available. You can now open a 
-				<a href="specifier/general/Model_Operations.html#dialog">dialog</a> or a 
-				<a href="specifier/general/Model_Operations.html#wizard">wizard</a> thanks to new dedicated model operations leveraging the Properties View language. You can also create new variable with the new 
-				<em>Let</em> model operation, see its 
-				<a href="specifier/general/Model_Operations.html#let">documentation</a> for more details.
-			</li>
-			<li><span class="label label-success">Added</span> In Property Views definitions, you can now create 
-				<em>Toolbar Actions</em> on pages and groups in order to define small buttons in their toolbars.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<em>Buttons</em> and 
-				<em>Widget Actions</em> can now use an image along with a label thanks to the new 
-				<em>Image expression</em>.
-			</li>
-			<li><span class="label label-success">Added</span> It is now possible to execute some behavior when the end users will click on the 
-				<em>Reference Widget</em> thanks to the addition of an 
-				<em>Initial Operation</em>.
-			</li>
-			<li><span class="label label-success">Added</span> You can indicate that a 
-				<em>Dynamic Mapping For</em> should force the refresh of the user interface with the 
-				<em>Force Refresh</em> property.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<em>Categories</em> have been added in order to organize the pages and groups of the 
-				<em>Properties</em> DSL.
-			</li>
-			<li><span class="label label-info">Modified</span> The notion of transient layer has been introduced in Sirius 5.0. (Refer to 
-				<a href="specifier/diagrams/Diagrams.html#Transientlayer">Sirius Specifier</a> and 
-				<a href="user/diagrams/Diagrams.html#transientLayer">Sirius User</a> documentation in Diagram chapter). A transient layer is an additional layer containing only decorations or tools. If you have such layer in your VSM, users may encounter some unexpected behaviors. If the layer is not 
-				<em>active by default</em>, its activation state will not be persisted at session close. In other words, if a transient layer is enabled in a diagram and then the session is closed, at the next diagram opening, the layer will be disabled. If users have existing representations file, made with previous version, with such kind of layers activated, they will no longer enabled at the next opening in Sirius 5.0.0. If the layer is 
-				<em>active by default</em> then it will be automatically applied when opening your diagram. We consider this behavior as a known limitation and an enhancement may be done in a further release. In the meantime, there is a workaround which consists to add a fake mapping (that is any mapping with its fields empty) so that the layer will not be considered as transient.
-			</li>
-			<li><span class="label label-info">Modified</span> The tab used to configure the metamodels used by the Properties view description is now using the same interface as the metamodels tab used to configure the representations.</li>
-			<li><span class="label label-info">Modified</span> The 
-				<code>package::Class</code> syntax for domain classes and type names in the VSM is now fully supported and the new default. It means this syntax is interpreted by Sirius and completion is provided for it when the first 
-				<code>:</code> character is entered. The legacy syntax 
-				<code>package.Class</code> is still supported for compatibility.
-			</li>
-			<li><span class="label label-info">Modified</span> The organization of the contextual actions in the odesign for the 
-				<em>Properties</em> DSL has been improved.
-			</li>
-			<li><span class="label label-info">Modified</span> Most of the concepts of the 
-				<em>Properties</em> DSL can now have an identifier, a label and some documentation.
-			</li>
-		</ul>
-		<h4 id="Migrations3">Migrations</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> A migration is added in this version to fix the alignment of the text in notes (as explained in user visible changes). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
-				<em>12.0.0.201704070000</em>.
-			</li>
-		</ul>
-		<h4 id="TranslationKeysChanges3">Translation Keys Changes</h4>
-		<p>See 
-			<a href="i18n_changes.html#sirius50">this document</a> for the complete list of message keys added or removed in Sirius 5.0.
-		</p>
-		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
-			<code>org.eclipse.sirius.common</code> 
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.setFeatureToBeCrossReferencedWhiteList(Collection&lt;EReference&gt;)</code> to set a white list of references that must be referenced even if the reference is derived.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.isIncluded(EReference)</code> has been overridden to consider features in the white list.
-			</li>
-			<li><span class="label label-success">Added</span> A new extension point, 
-				<code>org.eclipse.sirius.common.package_meta_data</code> has been added. It can be used to associate user-oriented meta-data to Ecore metamodels, identified by their 
-				<code>nsURI</code>: a user-oriented name/label (as opposed to the technical nsURI), a (short) description/documentation, and a list of suggested EClasses defined in the EPackage that are good candidates as root model elements. These meta-data are currently used only in the generic model creation wizard integrated in the aird editor.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common.ui">Changes in 
-			<code>org.eclipse.sirius.common.ui</code> 
-		</h4>
-		<ul>
-			<li><span class="label label-danger">Removed</span> The 
-				<code>org.eclipse.sirius.common.ui.tools.api.dialog.FeatureEditorDialog</code> class has been removed; use the 
-				<code>org.eclipse.emf.edit.ui.celleditor.FeatureEditorDialog</code> equivalent provided by EMF directly instead.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius4">Changes in 
-			<code>org.eclipse.sirius</code> 
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> An experimental mode to serialize representations in a different file is available with system property 
-				<code>createRepresentationInSeparateResource=true</code>. That means all new representations will be saved, when this property is enabled, in a separate file with 
-				<code>*.srm</code> extension.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription, boolean)</code> has been added to better control the checks done by already existing 
-				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription)</code> method. The new boolean allow to deactivate the check verifying that the viewpoint of the given description must be activated so the method can return true.
-			</li>
-			<li><span class="label label-success">Added</span> The 
-				<code>org.eclipse.sirius.viewpoint.description.DAnnotation.references</code> feature has been added. It allows to have some information without having to search them into the entire model of the Sirius session. Ideally only elements from semantic resources of the session should be referenced or else it may broke the session behavior either because resolving too soon EObject in the session or because adding a resource that is not known by Sirius session.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getImpactedRepDescriptorFromDAnnotationData()</code> method has been added to help retrieve the 
-				<code>DRepresentationDescriptors</code> which owned 
-				<code>DAnnotation</code> are referencing a given 
-				<code>EObject</code> with 
-				<code>DAnnotation.references</code>.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute has been added to hold the representation path since the 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is derived. This attribute is not intended to be modified by client. You should use 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.setRepresentation(DRepresentation)</code> or 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> instead.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> has been added to update the repPath attribute according to the given representation. This method is intended to be called if the representation instance is still the same but requires to recompute the repPath.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.query.FileQuery.isSrmFile()</code> has been added to indicate if the file extension is dedicated to a file containing representations.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point has been added to customize the resource location of new representations. See 
-				<a href="extensions-provide_representation_location_rule.html">Provide representation location rule (experimental)</a> for more details.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.session.danalysis.DRepresentationLocationRule</code> interface has been added to provide a customized rule to the 
-				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.REPRESENTATION_FILE_EXTENSION</code> constant has been added to reference the new *.srm extension.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.session.Session.getSrmResources()</code> has been added to provide the list of representation resources (serialized as *.srm files by default).
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isAirdOrSrmResource()</code> has been added to know whether the resource is a srm resource (
-				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code>) or an aird resource.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code> has been added to know whether the resource contains a 
-				<code>DRepresentation</code> as root element.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.migration.DiagramCrossReferencer.DiagramCrossReferencer(Collection&lt;Resource&gt;)</code> constructor has been added to compute the cross references on a list of resources.
-			</li>
-			<li><span class="label label-success">Added</span> A new 
-				<code>org.eclipse.sirius.modelOperationManager</code> extension point has been addded. It allows the contribution of new types of 
-				<em>Model Operations</em> which are then usable in modeler definitions (
-				<code>*.odesign</code>).
-			</li>
-			<li><span class="label label-info">Modified</span> 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is now derived, transient and volatile. The representation is compute by using the 
-				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute.
-			</li>
-			<li><span class="label label-info">Modified</span> The 
-				<code>org.eclipse.sirius.business.api.query.DViewQuery.getAllContentInRepresentations(Predicate&lt;? super EObject&gt;)</code> now takes a 
-				<code>java.util.Predicate</code> (from Java 8) as argument instead of a 
-				<code>com.google.common.base.Predicate</code>.
-			</li>
-			<li><span class="label label-info">Modified</span> The extension point 
-				<code>org.eclipse.sirius.ui.modelingprojectresourcelistener</code> is no longer expected to be used. It is an internal extension point. Clients using this extension point to ignore some files as potential semantic models must now use the extension point 
-				<code>org.eclipse.sirius.resourceStrategy</code>. This extension point existed before Sirius 5.0.0 but was not API. It becomes API with Sirius 5.0.0, see the 
-				<a href="developer/extensions-provide_resource_strategy.html">developer documentation</a> for more details.
-				<ul>
-					<li>If you used to override protected methods 
-						<code>boolean isPotentialSemanticResource(IFile)</code> and 
-						<code>boolean isLoadableModel(IFile, Session)</code> of class 
-						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, you can now create a 
-						<code>resourceStrategy</code> of type 
-						<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.SEMANTIC_RESOURCE</code> and respectively override 
-						<code>boolean isPotentialSemanticResource(URI)</code> and 
-						<code>boolean isLoadableModel(URI,Session)</code>. As a reminder, to get an URI from an IFile, you can use: 
-						<code>URI.createPlatformResourceURI(iFile.getFullPath().toString(), true)</code>. And to get an IFile from an URI, you can use: 
-						<code>ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toPlatformString(true)))</code>.
-					</li>
-					<li>If you used to override protected methods 
-						<code>boolean isRepresentationsModel(IFile)</code> and 
-						<code>boolean isVsmModel(IFile)</code> of class 
-						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, they no longer exist. They correspond to core API and is not supposed to be overridden. They are accessible through API 
-						<code>org.eclipse.sirius.business.api.query.FileQuery.FileQuery(IFile)</code>.
-					</li>
-					<li>All necessary classes for extension point 
-						<code>org.eclipse.sirius.resourceStrategy</code> are now APIs:
-						<ul>
-							<li>
-								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategyRegistry</code>: Registry to have access to all overridable services through a 
-								<code>ResourceStrategy</code>
-							</li>
-							<li>
-								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy</code>: Interface implemented by all resource strategies
-							</li>
-							<li>
-								<code>org.eclipse.sirius.business.api.resource.strategy.AbstractResourceStrategyImpl</code>: Default implementation of above interface. All resource strategies contributed with the extension need to extend it.
-							</li>
-							<li>
-								<code>org.eclipse.sirius.business.api.resource.strategy.LegacyReleaseResourceStrategyImpl</code> (previously named 
-								<code>DefaultResourceStrategyImpl</code>): A resource strategy with the code used before the optimization concerning the 
-								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.RELEASE_RESOURCE_AT_RESOURCESET_DISPOSE</code>. It is not used but can be quickly contributed by someone that want the previous behavior (before Sirius 4.0.0 M6).
-							</li>
-						</ul>
-					</li>
-				</ul>
-			</li>
-			<li><span class="label label-danger">Removed</span> The already deprecated constructor of 
-				<code>org.eclipse.sirius.business.api.control.SiriusUncontrolCommand</code> with signature 
-				<code>SiriusUncontrolCommand(EObject, boolean, IProgressMonitor)</code> has been removed; instead, use the alternate constructor with an additional explicit 
-				<code>boolean shouldEndBySaving</code> parameter (set it to 
-				<code>true</code> to obtain the same behavior as the removed constructor).
-			</li>
-			<li><span class="label label-danger">Removed</span> In 
-				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code>, methods 
-				<code>canCreateIdentifier</code> and 
-				<code>createIdentifier</code> have been removed.
-			</li>
-			<li><span class="label label-danger">Removed</span> The 
-				<code>org.eclipse.sirius.business.api.dialect.identifier</code> package and all its content (
-				<code>AbstractRepresentationElementIdentifier</code> and 
-				<code>RepresentationElementIdentifier</code>) have been removed.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
-			<code>org.eclipse.sirius.ui</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> Two new methods have been added to the interface 
-				<code>org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection.Callback</code>: 
-				<code>selectViewpoint(Viewpoint, Session, boolean, Set&lt;Viewpoint&gt;, IProgressMonitor)</code> and 
-				<code>deselectViewpoint(Viewpoint, Session, Set&lt;Viewpoint&gt;, IProgressMonitor)</code>. These methods add a new parameter that is a set of viewpoints compared to the same methods without these parameters. These set contains all viewpoints that will be deactivated/activated in addition of the one that is asked to be deactivated/activated. It allows the callback implementation to better handle viewpoint dependencies interaction by being able to know if missing dependencies will be activated or deactivated.
-			</li>
-			<li><span class="label label-success">Added</span> An interface 
-				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> has been added to gather 
-				<code>org.eclipse.sirius.ui.editor.SessionEditor</code> and 
-				<code>org.eclipse.sirius.ui.business.api.dialect.DialectEditor</code> under the same abstraction. It allows to provide 
-				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> saving functionalities for session editor or any new editor that is not a dialect editor. 
-			</li>
-			<li><span class="label label-success">Added</span> A method 
-				<code>getSiriusEditors()</code>  has been added to interface 
-				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code>. It allows to retrieve all 
-				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> that are registered in the session.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.refreshEditor(DialectEditor, IProgressMonitor)</code> has been added to allow specifiers to do a full refresh of its dialect editor easily.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setBrowserMinWidth(int)</code> has been added to allow modification of the minimum width (with default value &#8220;0&#8221;) of the browser part of the viewpoint selection wizard.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setColumnWidthEquality(boolean)</code> has been added to allow modification of column width equality (with default value &#8220;false&#8221;) of the root composite of the viewpoint selection wizard.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.dialogs.AbstractExportRepresentationsAsImagesDialog.isExportDecorations()</code> has been added to know if decorations are displayed in the exported image.
-			</li>
-			<li><span class="label label-success">Added</span> 
-				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.export(DRepresentation, Session, IPath, ExportFormat, IProgressMonitor, boolean)</code> method has been added. Compared to the previous method signature, the boolean parameter 
-				<code>exportDecorations</code> has been added to allow to choose if the diagram element decorations will be exported or not.
-			</li>
-			<li><span class="label label-info">Modified</span> The boolean parameter 
-				<code>exportDecorations</code> has been added to 
-				<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction.ExportAction(Session, Collection&lt;DRepresentation&gt;, IPath, ImageFileFormat, boolean, boolean)</code> constructor. It allows to choose if the diagram element decorations will be exported or not.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>attachEditor(DialectEditor)</code> from the interface 
-				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
-				<code>DialectEditor</code> to the new abstraction 
-				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>detachEditor(DialectEditor)</code> from the interface 
-				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
-				<code>DialectEditor</code> to the new abstraction 
-				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>detachEditor(DialectEditor, boolean)</code> from the interface 
-				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its first parameter type modified from 
-				<code>DialectEditor</code> to the new abstraction 
-				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.getContentContext(String, int)</code> has been made protected instead of private to allow to use it for sub types.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.removeDuplicatedProposals(List&lt;ContentProposal&gt;)</code> has been made protected instead of private to allow to use it in sub types.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.createLocalRepresentationsFile(IProject, IProgressMonitor)</code> has its return type changed from 
-				<code>void</code> to 
-				<code>Session</code> to allow callers to have access to the newly created session directly.
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>org.eclipse.sirius.ui.tools.api.views.ViewHelper.getContentProvider()</code> has been renamed into 
-				<code>createContentProvider()</code> and now returns a new instance on each invocation.
-			</li>
-			<li><span class="label label-danger">Removed</span> The old 
-				<em>Model Request Interpreter</em> view is not available anymore. It is superseded by the 
-				<em>Interpreter</em> view, which comes from the Acceleo project but does not actually depend on Acceleo or AQL and can be installed separately (using the feature 
-				<code>org.eclipse.acceleo.ui.interpreter</code>, which is available directly from the Sirius update-sites). The corresponding interface 
-				<code>org.eclipse.sirius.ui.tools.api.views.interpreterview.InterpreterView</code> has been removed. Technically, the implementation code for the old 
-				<em>Model Request Interpreter</em> view is still present if needed during the transition, but not exposed or used anywhere. It will be removed in a future version. 
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram3">Changes in 
-			<code>org.eclipse.sirius.diagram</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> The utility class 
-				<code>org.eclipse.sirius.diagram.business.api.helper.decoration.DecorationHelper</code> has been added. It provides 
-				<code>updateDecorations(List&lt;Layer&gt;)</code> and 
-				<code>updateAllDecorations</code> methods that allow to update only decorations in a diagram.
-			</li>
-			<li><span class="label label-info">Moved</span> The method 
-				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride.aroundRefresh(DDiagram)</code> has been moved to 
-				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> to unify methods handling refresh extension under one interface. 
-			</li>
-			<li><span class="label label-info">Modified</span> The method 
-				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension.aroundRefresh(DDiagram)</code> has been modified with a default behavior that is the one before introduction of the method to avoid breaking compatibility.
-			</li>
-			<li><span class="label label-danger">Removed</span> The interface 
-				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride</code> has been removed because its only method has been moved into 
-				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> interface
-			</li>
-			<li><span class="label label-danger">Removed</span> The 
-				<code>org.eclipse.sirius.diagram.business.internal.dialect.identifier</code> package and all its content (
-				<code>DiagramIdenttifier</code>, 
-				<code>NodeIdentifier</code>, 
-				<code>EdgeIdentifier</code>, 
-				<code>NodeContainerIdentifier</code>, and 
-				<code>NodeStyleIdentifier</code>) have been removed.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
-			<code>org.eclipse.sirius.diagram.ui</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> Constants 
-				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.SPECIFIC_STYLES</code> &amp; 
-				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.VERTICAL_ALIGNMENT</code> have been added to retrieve the initial label alignment of Notes from the Palette (see 
-				<a href="Release_Notes.html#UserVisibleChanges">user-visible changes</a> ). Currently the vertical alignment can not be changed (potential new feature later).
-			</li>
-			<li><span class="label label-success">Added</span> The class 
-				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.SiriusDecoratorEditPolicy</code> has been added to improve the behavior of decorator selection.
-			</li>
-			<li><span class="label label-success">Added</span> A new decoration mechanism has been implemented. Now, Sirius uses a single 
-				<code>IDecorator</code> to decorate EditPart in diagram. That allows Sirius to manage the relative positioning between decorations.
-				<ul>
-					<li><span class="label label-success">Added</span> 
-						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationDescriptorProvider</code> represents a provider able to give the decoration descriptors. 
-						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorationDescriptorProvider</code> is an abstract class that can be inherited to implement 
-						<code>SiriusDecorationDescriptorProvider</code>.
-					</li>
-					<li><span class="label label-success">Added</span> 
-						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.DecorationDescriptor</code> is a simple POJO that contains information needed to display decoration.
-					</li>
-					<li><span class="label label-success">Added</span> 
-						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationProviderRegistry</code> allows to register and get 
-						<code>SiriusDecorationDescriptorProvider</code>.
-					</li>
-				</ul>
-			</li>
-			<li><span class="label label-success">Added</span> The preference 
-				<code>SiriusDiagramUiPreferencesKeys.PREF_AUTHORIZE_DECORATION_OVERLAP</code> has been added in 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the overlap is authorized between decoration group on diagram element.
-				<ul>
-					<li><span class="label label-success">Added</span> The class 
-						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.DynamicDiagramUIPreferences</code> and the method 
-						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.getDynamicPreferences()</code> have been added to have good performances in getting the preference value.
-					</li>
-				</ul>
-			</li>
-			<li><span class="label label-info">Modified</span> The preference 
-				<code>SiriusDiagramUiPreferencesKeys.PREF_PRINT_DECORATION</code> has been added in 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the decorations of the diagram elements of a diagram will be printed, when printing a diagram.
-			</li>
-			<li><span class="label label-info">Modified</span> The 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService.DiagramEditPartService</code> class which can be used to export diagrams as images is now automatically adapting the output resolution for raster image based on maximum buffer size specified through the 
-				<code>plugin.propeties</code> file of the 
-				<code>org.eclipse.sirius.diagram.ui</code> plugin. This leads to a noticeable increase of the export image size (you can expect a 10 factor on small diagrams) and the method will no longer fail with OutOfMemory errors as bigger diagrams will lead to a lower output resolution. Implementers using this class can override the 
-				<code>DiagramEditPartService.getMaximumTotalSize()</code> method to return their own limit or 
-				<code>DiagramEditPartService.getExportResolutionFactor(DiagramEditPart, SiriusDiagramImageGenerator)</code> and return 
-				<code>1.0</code> to get back to the previous behavior.
-			</li>
-			<li><span class="label label-info">Moved</span> The methods of interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
-				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
-				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
-			</li>
-			<li><span class="label label-info">Moved</span> The methods of interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
-				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
-				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
-			</li>
-			<li><span class="label label-danger">Removed</span> The methods 
-				<code>getFormatData(FormatDataKey key)</code> and 
-				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
-			</li>
-			<li><span class="label label-danger">Removed</span> The interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
-				<ul>
-					<li><span class="label label-danger">Removed</span> 
-						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorator</code> is removed because now useless.
-					</li>
-				</ul>
-			</li>
-			<li><span class="label label-danger">Removed</span> The methods 
-				<code>getFormatData(FormatDataKey key)</code> and 
-				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
-			</li>
-			<li><span class="label label-danger">Removed</span> The interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
-				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.table">Changes in 
-			<code>org.eclipse.sirius.table</code>
-		</h4>
-		<ul>
-			<li><span class="label label-danger">Removed</span> The 
-				<code>DTableElementSynchronizer</code> 
-				<em>EClass</em> has been removed from the table meta-model. It only defined 
-				<em>EOperations</em> and has been replaced with an equivalent (internal) plain Java class.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tree.ui">Changes in 
-			<code>org.eclipse.sirius.tree.ui</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> The enum class for Sirius tree preferences 
-				<code>org.eclipse.sirius.tree.ui.tools.api.preferences.SiriusTreeUiPreferencesKeys</code> has been added with the enum value 
-				<code>SiriusTreeUiPreferencesKeys.PREF_ALWAYS_USE_STANDARD_FONT_SIZE</code>. This enum value is the preference when true allowing to use runtime font height when displaying Sirius tree editor&#8217;s items instead of the one specified in the VSM.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui.editor2">Changes in 
-			<code>org.eclipse.sirius.ui.editor</code>
-		</h4>
-		<p>This plugin is new in Sirius 5.0. It provides a session editor showing loaded models, representations and viewpoint activation status of the session. It has functionalities allowing to change the viewpoint activation status, to create/remove representations or to load unload external models. The graphical block showing loaded models is integrated with CNF. You can provide content extension to its viewer by using an id matching the pattern 
-			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.contentExtension.*</code>. You also can provide action extension by using an id matching the pattern 
-			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.actionExtension.*</code>. The extension will be selectable/unselectable by using a 
-			<code>Customize View</code> button on the models block header.
-		</p>
-		<h4 id="Changesinorg.eclipse.sirius.properties.core">Changes in 
-			<code>org.eclipse.sirius.properties.core</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> The class 
-				<code>org.eclipse.sirius.properties.core.internal.converter.ViewDescriptionConverter</code> has been moved as an API to 
-				<code>org.eclipse.sirius.properties.core.api.ViewDescriptionConverter</code>.
-			</li>
-			<li><span class="label label-success">Added</span> The classes necessary to support the preprocessing of the odesign for the inheritance in its Properties parts are available in the API package 
-				<code>org.eclipse.sirius.properties.core.api</code>.
-			</li>
-			<li><span class="label label-success">Added</span> The class 
-				<code>org.eclipse.sirius.properties.core.internal.SiriusInterpreter</code> has been moved as an API to 
-				<code>org.eclipse.sirius.properties.core.api.SiriusInterpreter</code>. This class could be used by those who want to create custom model operations using the Properties framework.
-			</li>
-			<li><span class="label label-success">Added</span> The class 
-				<code>org.eclipse.sirius.properties.core.api.SiriusDomainClassTester</code> has been added as an API for those who want to create custom model operations using the Properties framework.
-			</li>
-			<li><span class="label label-success">Added</span> The method 
-				<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices.createInstance(EClass)</code> has been added to allow the creation of a new instance from an EClass in the interpreters.
-			</li>
-			<li><span class="label label-info">Modified</span> The default rules have been transfered to a new dedicated plugin named 
-				<code>org.eclipse.sirius.properties.defaultrules</code>.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui.properties">Changes in 
-			<code>org.eclipse.sirius.ui.properties</code>
-		</h4>
-		<ul>
-			<li><span class="label label-info">Modified</span> All the content related to the IDescriptionConverter and ILinkResolver has been moved from the plugin 
-				<code>org.eclipse.sirius.ui.properties</code> to the newly created plugin 
-				<code>org.eclipse.sirius.properties.core</code>. It includes all the APIs and both extension points.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.editor.properties">Changes in 
-			<code>org.eclipse.sirius.editor.properties</code>
-		</h4>
-		<ul>
-			<li><span class="label label-info">Modified</span> In the package 
-				<code>org.eclipse.sirius.editor.properties.sections.description.representationdescription</code> the class 
-				<code>RepresentationDescriptionMetamodelsUpdater</code> has been replaced by 
-				<code>DescriptionMetamodelsUpdater</code> which can now be used with any EObject with a many-valued EReference to EPackages. The behavior of the class 
-				<code>RepresentationDescriptionMetamodelPropertySectionSpec</code> has been transfered to an abstract class independent of 
-				<code>RepresentationDescription</code> named 
-				<code>AbstractMetamodelPropertySectionSpec</code>. Those classes are now used for the edition of the metamodels of both the Properties view description and the various representations.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support3">Changes in 
-			<code>org.eclipse.sirius.tests.junit.support</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> The utility method 
-				<code>org.eclipse.sirius.tests.support.api.TestsUtil.setTargetPlatform()</code> has been added to allow to load a PDE target platform according to all known OSGi bundles. It is useful to compile a plug-in in the execution runtime of the tests.
-			</li>
-			<li><span class="label label-success">Added</span> The utility class 
-				<code>org.eclipse.sirius.tests.support.api.OpenedSessionsCondition</code> has been extracted from a junit test to be used by multiple junit tests. It allows to wait until a session is in opened state.
-			</li>
-		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
-			<code>org.eclipse.sirius.tests.swtbot.support</code>
-		</h4>
-		<ul>
-			<li><span class="label label-success">Added</span> The method 
-				<code>getTreeItem(SWTBotTreeItem[], String, boolean, boolean)</code> has been added in 
-				<code>org.eclipse.sirius.tests.swtbot.support.utils</code> to retrieve recursively a 
-				<code>SWTBotTreeItem</code> in a 
-				<code>SWTBotTreeItem</code> array. Compared to 
-				<code>getTreeItem(SWTBotTreeItem[], String)</code>, it adds the capability to control if the search must be done on enabled items or enabled and disabled items and if the tree must be expanded during the search to check non displayed items.
-			</li>
-			<li><span class="label label-success">Added</span> A new utility method 
-				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragCentered(String, Class&lt;? extends EditPart&gt;, int, int)</code> improving the dragCentered method by adding the aimed Class in parameter.
-			</li>
-			<li><span class="label label-info">Modified</span> A new AtomicBoolean parameter has been added to the utility method 
-				<code>mouseDragWithKey(int, int, int, int, int)</code> in classes 
-				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor</code>, 
-				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer</code> and 
-				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas</code>. This allows to correctly wait the end of the drag&#8217;n&#8217;drop.
-				<ul>
-					<li>Sample of code to use:</li>
-				</ul>
-			</li>
-		</ul>
-		<pre>final AtomicBoolean dragFinished = new AtomicBoolean(false);
-editor.dragWithKey(start.x, start.y, endpoint.x, endpoint.y, SWT.F3, dragFinished);
-// Wait that the drag is done (the async Runnable simulating the
-// drag)
-bot.waitUntil(new ICondition() {
-    @Override
-    public boolean test() throws Exception {
-        return dragFinished.get();
-    }
-
-    @Override
-    public void init(SWTBot bot) {
-    }
-
-    @Override
-    public String getFailureMessage() {
-        return "The drag'n'drop operation has not finished.";
-    }
-});
-// Wait that the figures are redrawn. In a fast environment, figures
-// are not really redrawn and the rest of the test is not reliable.
-SWTBotUtils.waitAllUiEvents();
-
-</pre>
 	</body>
 </html>
\ No newline at end of file
diff --git a/doc/Release_Notes_Previous.html b/doc/Release_Notes_Previous.html
index 3e9ccd8..a80b1d5 100644
--- a/doc/Release_Notes_Previous.html
+++ b/doc/Release_Notes_Previous.html
@@ -13,7 +13,10 @@
 				<a href="#ReleaseNotesforOlderVersionofSirius">Release Notes for Older Version of Sirius</a>
 				<ol style="list-style: disc;">
 					<li>
-						<a href="#sirius4.1.2">Changes in Sirius 4.1.2</a>
+						<a href="#sirius5.0.1">Changes in Sirius 5.0.1</a>
+					</li>
+					<li>
+						<a href="#sirius5.0.0">Changes in Sirius 5.0.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges">User-Visible Changes</a>
@@ -21,10 +24,13 @@
 							<li>
 								<a href="#DeveloperVisibleChanges">Developer-Visible Changes</a>
 							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges">Specifier-Visible Changes</a>
+							</li>
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius4.1.1">Changes in Sirius 4.1.1</a>
+						<a href="#sirius4.1.2">Changes in Sirius 4.1.2</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges2">User-Visible Changes</a>
@@ -35,21 +41,18 @@
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius4.1.0">Changes in Sirius 4.1.0</a>
+						<a href="#sirius4.1.1">Changes in Sirius 4.1.1</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges3">User-Visible Changes</a>
 							</li>
 							<li>
-								<a href="#SpecifierVisibleChanges">Specifier-Visible Changes</a>
-							</li>
-							<li>
 								<a href="#DeveloperVisibleChanges3">Developer-Visible Changes</a>
 							</li>
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius4.0.0">Changes in Sirius 4.0.0</a>
+						<a href="#sirius4.1.0">Changes in Sirius 4.1.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges4">User-Visible Changes</a>
@@ -63,7 +66,7 @@
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius3.1.0">Changes in Sirius 3.1.0</a>
+						<a href="#sirius4.0.0">Changes in Sirius 4.0.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges5">User-Visible Changes</a>
@@ -77,7 +80,7 @@
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius3.0.0">Changes in Sirius 3.0.0</a>
+						<a href="#sirius3.1.0">Changes in Sirius 3.1.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges6">User-Visible Changes</a>
@@ -91,7 +94,7 @@
 						</ol>
 					</li>
 					<li>
-						<a href="#sirius2.0.0">Changes in Sirius 2.0.0</a>
+						<a href="#sirius3.0.0">Changes in Sirius 3.0.0</a>
 						<ol style="list-style: disc;">
 							<li>
 								<a href="#UserVisibleChanges7">User-Visible Changes</a>
@@ -100,6 +103,20 @@
 								<a href="#SpecifierVisibleChanges5">Specifier-Visible Changes</a>
 							</li>
 							<li>
+								<a href="#DeveloperVisibleChanges7">Developer-Visible Changes</a>
+							</li>
+						</ol>
+					</li>
+					<li>
+						<a href="#sirius2.0.0">Changes in Sirius 2.0.0</a>
+						<ol style="list-style: disc;">
+							<li>
+								<a href="#UserVisibleChanges8">User-Visible Changes</a>
+							</li>
+							<li>
+								<a href="#SpecifierVisibleChanges6">Specifier-Visible Changes</a>
+							</li>
+							<li>
 								<a href="#APIChanges">API Changes</a>
 							</li>
 						</ol>
@@ -108,10 +125,10 @@
 						<a href="#sirius1.0.0">Changes in Sirius 1.0.0 (from Sirius 1.0.0M7)</a>
 						<ol style="list-style: disc;">
 							<li>
-								<a href="#UserVisibleChanges8">User-Visible Changes</a>
+								<a href="#UserVisibleChanges9">User-Visible Changes</a>
 							</li>
 							<li>
-								<a href="#SpecifierVisibleChanges6">Specifier-Visible Changes</a>
+								<a href="#SpecifierVisibleChanges7">Specifier-Visible Changes</a>
 							</li>
 							<li>
 								<a href="#APIChanges2">API Changes</a>
@@ -122,7 +139,7 @@
 						<a href="#sirius1.0M7">Changes in Sirius 1.0.0M7 (from Sirius 1.0M6)</a>
 						<ol style="list-style: disc;">
 							<li>
-								<a href="#SpecifierVisibleChanges7">Specifier-Visible Changes</a>
+								<a href="#SpecifierVisibleChanges8">Specifier-Visible Changes</a>
 							</li>
 							<li>
 								<a href="#APIChanges3">API Changes</a>
@@ -141,7 +158,7 @@
 						<a href="#sirius1.0M5">Changes in Sirius 1.0.0M5 (from Sirius 1.0M4)</a>
 						<ol style="list-style: disc;">
 							<li>
-								<a href="#UserVisibleChanges9">User-Visible Changes</a>
+								<a href="#UserVisibleChanges10">User-Visible Changes</a>
 							</li>
 							<li>
 								<a href="#APIChanges5">API Changes</a>
@@ -152,7 +169,7 @@
 						<a href="#sirius1.0M4">Changes in Sirius 1.0.0M4 (from Sirius 0.9)</a>
 						<ol style="list-style: disc;">
 							<li>
-								<a href="#UserVisibleChanges10">User-Visible Changes</a>
+								<a href="#UserVisibleChanges11">User-Visible Changes</a>
 							</li>
 							<li>
 								<a href="#APIChanges6">API Changes</a>
@@ -178,10 +195,10 @@
 								<a href="#OtherAPIChanges">Other API Changes</a>
 							</li>
 							<li>
-								<a href="#SpecifierVisibleChanges8">Specifier-Visible Changes</a>
+								<a href="#SpecifierVisibleChanges9">Specifier-Visible Changes</a>
 							</li>
 							<li>
-								<a href="#UserVisibleChanges11">User-Visible Changes</a>
+								<a href="#UserVisibleChanges12">User-Visible Changes</a>
 							</li>
 						</ol>
 					</li>
@@ -189,9 +206,602 @@
 			</li>
 		</ol>
 		<p>This document contains the release notes for older versions of of Sirius.</p>
-		<h2 id="sirius4.1.2">Changes in Sirius 4.1.2</h2>
+		<h2 id="sirius5.0.1">Changes in Sirius 5.0.1</h2>
+		<p>Sirius 5.0.1 is a maintenance release with only bugfixes and small tweaks to the UI of 
+			<a href="user/general/Aird_Editor.html">the aird editor</a>.
+		</p>
+		<h2 id="sirius5.0.0">Changes in Sirius 5.0.0</h2>
 		<h3 id="UserVisibleChanges">User-Visible Changes</h3>
 		<ul>
+			<li><span class="label label-success">Added</span> An new 
+				<em>aird editor</em> is available on 
+				<em>.aird</em> files. It provides an alternative, form-based GUI to visualize and manipulate sirius sessions which is not tied to the Modeling perspective or Model Explorer view. See 
+				<a href="user/general/Aird_Editor.html">the editor&#8217;s documentation</a> for more details.
+			</li>
+			<li><span class="label label-info">Modified</span> The label alignment of Notes from the Palette has been modified from Juno to Luna or newer versions of Eclipse. The label alignment had changed from 
+				<em>TOP</em> &amp; 
+				<em>CENTER</em> to 
+				<em>MIDDLE</em> &amp; 
+				<em>LEFT</em> (respectively). The initial alignment (
+				<em>TOP</em> &amp; 
+				<em>CENTER</em>) has been restored. This is done with an 
+				<a href="./user/general/Modeling%20Project.html#Migration">automatic migration</a> of the aird file.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<em>Export diagram as images</em> action now adatps the output resolution based on the diagram size. This leads to better resolution for small to medium diagrams (and also bigger file) and to an operation which is no longer failing with out of memory errors in case of very big diagrams.
+			</li>
+			<li><span class="label label-info">Modified</span> The &#8220;straighten to&#8221; actions previously had a limitation concerning overlap detection. This is no longer the case. The previous known limitation has been removed from the documentation (
+				<i>In case of multi-selection, the overlap check is done in the current context of existing border nodes and not in the context of location of border nodes after each straighten edges.</i>).
+			</li>
+			<li><span class="label label-info">Modified</span> Decorators on diagram elements are drawn on top of other figures. If there is an overlap between a decorator of a figure A and another figure B that is over figure A, when user clicks on the decorator, the figure B is now selected (before it was the parent figure A).</li>
+		</ul>
+		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+		<ul>
+			<li><span class="label label-success">Added</span> It is now possible to automatically create one or several pre-configured widget(s) in a group if its domain class and if the meta-models of the properties view containing it have been specified. The widget(s) created will be infered from the features in the domain class (e.g. a properly configured 
+				<em>Checkbox</em> widget will be created for boolean attributes).
+			</li>
+			<li><span class="label label-success">Added</span> Property Views definitions now support extending and overriding Properties View Descriptions without modifying the original. See 
+				<a href="specifier/properties/Properties_View_Description.html#extensibility_features">the documentation</a> for details.
+			</li>
+			<li><span class="label label-success">Added</span> New model operations are available. You can now open a 
+				<a href="specifier/general/Model_Operations.html#dialog">dialog</a> or a 
+				<a href="specifier/general/Model_Operations.html#wizard">wizard</a> thanks to new dedicated model operations leveraging the Properties View language. You can also create new variable with the new 
+				<em>Let</em> model operation, see its 
+				<a href="specifier/general/Model_Operations.html#let">documentation</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> In Property Views definitions, you can now create 
+				<em>Toolbar Actions</em> on pages and groups in order to define small buttons in their toolbars.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<em>Buttons</em> and 
+				<em>Widget Actions</em> can now use an image along with a label thanks to the new 
+				<em>Image expression</em>.
+			</li>
+			<li><span class="label label-success">Added</span> It is now possible to execute some behavior when the end users will click on the 
+				<em>Reference Widget</em> thanks to the addition of an 
+				<em>Initial Operation</em>.
+			</li>
+			<li><span class="label label-success">Added</span> You can indicate that a 
+				<em>Dynamic Mapping For</em> should force the refresh of the user interface with the 
+				<em>Force Refresh</em> property.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<em>Categories</em> have been added in order to organize the pages and groups of the 
+				<em>Properties</em> DSL.
+			</li>
+			<li><span class="label label-info">Modified</span> The notion of transient layer has been introduced in Sirius 5.0. (Refer to 
+				<a href="specifier/diagrams/Diagrams.html#Transientlayer">Sirius Specifier</a> and 
+				<a href="user/diagrams/Diagrams.html#transientLayer">Sirius User</a> documentation in Diagram chapter). A transient layer is an additional layer containing only decorations or tools. If you have such layer in your VSM, users may encounter some unexpected behaviors. If the layer is not 
+				<em>active by default</em>, its activation state will not be persisted at session close. In other words, if a transient layer is enabled in a diagram and then the session is closed, at the next diagram opening, the layer will be disabled. If users have existing representations file, made with previous version, with such kind of layers activated, they will no longer enabled at the next opening in Sirius 5.0.0. If the layer is 
+				<em>active by default</em> then it will be automatically applied when opening your diagram. We consider this behavior as a known limitation and an enhancement may be done in a further release. In the meantime, there is a workaround which consists to add a fake mapping (that is any mapping with its fields empty) so that the layer will not be considered as transient.
+			</li>
+			<li><span class="label label-info">Modified</span> The tab used to configure the metamodels used by the Properties view description is now using the same interface as the metamodels tab used to configure the representations.</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>package::Class</code> syntax for domain classes and type names in the VSM is now fully supported and the new default. It means this syntax is interpreted by Sirius and completion is provided for it when the first 
+				<code>:</code> character is entered. The legacy syntax 
+				<code>package.Class</code> is still supported for compatibility.
+			</li>
+			<li><span class="label label-info">Modified</span> The organization of the contextual actions in the odesign for the 
+				<em>Properties</em> DSL has been improved.
+			</li>
+			<li><span class="label label-info">Modified</span> Most of the concepts of the 
+				<em>Properties</em> DSL can now have an identifier, a label and some documentation.
+			</li>
+		</ul>
+		<h4 id="Migrations">Migrations</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> A migration is added in this version to fix the alignment of the text in notes (as explained in user visible changes). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
+				<em>12.0.0.201704070000</em>.
+			</li>
+		</ul>
+		<h4 id="TranslationKeysChanges">Translation Keys Changes</h4>
+		<p>See 
+			<a href="i18n_changes.html#sirius50">this document</a> for the complete list of message keys added or removed in Sirius 5.0.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius.common">Changes in 
+			<code>org.eclipse.sirius.common</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.setFeatureToBeCrossReferencedWhiteList(Collection&lt;EReference&gt;)</code> to set a white list of references that must be referenced even if the reference is derived.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl.isIncluded(EReference)</code> has been overridden to consider features in the white list.
+			</li>
+			<li><span class="label label-success">Added</span> A new extension point, 
+				<code>org.eclipse.sirius.common.package_meta_data</code> has been added. It can be used to associate user-oriented meta-data to Ecore metamodels, identified by their 
+				<code>nsURI</code>: a user-oriented name/label (as opposed to the technical nsURI), a (short) description/documentation, and a list of suggested EClasses defined in the EPackage that are good candidates as root model elements. These meta-data are currently used only in the generic model creation wizard integrated in the aird editor.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.common.ui">Changes in 
+			<code>org.eclipse.sirius.common.ui</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.common.ui.tools.api.dialog.FeatureEditorDialog</code> class has been removed; use the 
+				<code>org.eclipse.emf.edit.ui.celleditor.FeatureEditorDialog</code> equivalent provided by EMF directly instead.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius">Changes in 
+			<code>org.eclipse.sirius</code> 
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> An experimental mode to serialize representations in a different file is available with system property 
+				<code>createRepresentationInSeparateResource=true</code>. That means all new representations will be saved, when this property is enabled, in a separate file with 
+				<code>*.srm</code> extension.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription, boolean)</code> has been added to better control the checks done by already existing 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices.canCreate(EObject, RepresentationDescription)</code> method. The new boolean allow to deactivate the check verifying that the viewpoint of the given description must be activated so the method can return true.
+			</li>
+			<li><span class="label label-success">Added</span> The 
+				<code>org.eclipse.sirius.viewpoint.description.DAnnotation.references</code> feature has been added. It allows to have some information without having to search them into the entire model of the Sirius session. Ideally only elements from semantic resources of the session should be referenced or else it may broke the session behavior either because resolving too soon EObject in the session or because adding a resource that is not known by Sirius session.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.EObjectQuery.getImpactedRepDescriptorFromDAnnotationData()</code> method has been added to help retrieve the 
+				<code>DRepresentationDescriptors</code> which owned 
+				<code>DAnnotation</code> are referencing a given 
+				<code>EObject</code> with 
+				<code>DAnnotation.references</code>.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute has been added to hold the representation path since the 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is derived. This attribute is not intended to be modified by client. You should use 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.setRepresentation(DRepresentation)</code> or 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> instead.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor.updateRepresentation(DRepresentation)</code> has been added to update the repPath attribute according to the given representation. This method is intended to be called if the representation instance is still the same but requires to recompute the repPath.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.FileQuery.isSrmFile()</code> has been added to indicate if the file extension is dedicated to a file containing representations.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point has been added to customize the resource location of new representations. See 
+				<a href="extensions-provide_representation_location_rule.html">Provide representation location rule (experimental)</a> for more details.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.danalysis.DRepresentationLocationRule</code> interface has been added to provide a customized rule to the 
+				<code>org.eclipse.sirius.dRepresentationLocationRule</code> extension point.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.helper.SiriusUtil.REPRESENTATION_FILE_EXTENSION</code> constant has been added to reference the new *.srm extension.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.session.Session.getSrmResources()</code> has been added to provide the list of representation resources (serialized as *.srm files by default).
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isAirdOrSrmResource()</code> has been added to know whether the resource is a srm resource (
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code>) or an aird resource.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.business.api.query.ResourceQuery.isSrmResource()</code> has been added to know whether the resource contains a 
+				<code>DRepresentation</code> as root element.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.migration.DiagramCrossReferencer.DiagramCrossReferencer(Collection&lt;Resource&gt;)</code> constructor has been added to compute the cross references on a list of resources.
+			</li>
+			<li><span class="label label-success">Added</span> A new 
+				<code>org.eclipse.sirius.modelOperationManager</code> extension point has been addded. It allows the contribution of new types of 
+				<em>Model Operations</em> which are then usable in modeler definitions (
+				<code>*.odesign</code>).
+			</li>
+			<li><span class="label label-info">Modified</span> 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#representation</code> feature is now derived, transient and volatile. The representation is compute by using the 
+				<code>org.eclipse.sirius.viewpoint.DRepresentationDescriptor#repPath</code> attribute.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.business.api.query.DViewQuery.getAllContentInRepresentations(Predicate&lt;? super EObject&gt;)</code> now takes a 
+				<code>java.util.Predicate</code> (from Java 8) as argument instead of a 
+				<code>com.google.common.base.Predicate</code>.
+			</li>
+			<li><span class="label label-info">Modified</span> The extension point 
+				<code>org.eclipse.sirius.ui.modelingprojectresourcelistener</code> is no longer expected to be used. It is an internal extension point. Clients using this extension point to ignore some files as potential semantic models must now use the extension point 
+				<code>org.eclipse.sirius.resourceStrategy</code>. This extension point existed before Sirius 5.0.0 but was not API. It becomes API with Sirius 5.0.0, see the 
+				<a href="developer/extensions-provide_resource_strategy.html">developer documentation</a> for more details.
+				<ul>
+					<li>If you used to override protected methods 
+						<code>boolean isPotentialSemanticResource(IFile)</code> and 
+						<code>boolean isLoadableModel(IFile, Session)</code> of class 
+						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, you can now create a 
+						<code>resourceStrategy</code> of type 
+						<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.SEMANTIC_RESOURCE</code> and respectively override 
+						<code>boolean isPotentialSemanticResource(URI)</code> and 
+						<code>boolean isLoadableModel(URI,Session)</code>. As a reminder, to get an URI from an IFile, you can use: 
+						<code>URI.createPlatformResourceURI(iFile.getFullPath().toString(), true)</code>. And to get an IFile from an URI, you can use: 
+						<code>ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toPlatformString(true)))</code>.
+					</li>
+					<li>If you used to override protected methods 
+						<code>boolean isRepresentationsModel(IFile)</code> and 
+						<code>boolean isVsmModel(IFile)</code> of class 
+						<code>org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener</code>, they no longer exist. They correspond to core API and is not supposed to be overridden. They are accessible through API 
+						<code>org.eclipse.sirius.business.api.query.FileQuery.FileQuery(IFile)</code>.
+					</li>
+					<li>All necessary classes for extension point 
+						<code>org.eclipse.sirius.resourceStrategy</code> are now APIs:
+						<ul>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategyRegistry</code>: Registry to have access to all overridable services through a 
+								<code>ResourceStrategy</code>
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy</code>: Interface implemented by all resource strategies
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.AbstractResourceStrategyImpl</code>: Default implementation of above interface. All resource strategies contributed with the extension need to extend it.
+							</li>
+							<li>
+								<code>org.eclipse.sirius.business.api.resource.strategy.LegacyReleaseResourceStrategyImpl</code> (previously named 
+								<code>DefaultResourceStrategyImpl</code>): A resource strategy with the code used before the optimization concerning the 
+								<code>org.eclipse.sirius.business.api.resource.strategy.ResourceStrategy.ResourceStrategyType.RELEASE_RESOURCE_AT_RESOURCESET_DISPOSE</code>. It is not used but can be quickly contributed by someone that want the previous behavior (before Sirius 4.0.0 M6).
+							</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> The already deprecated constructor of 
+				<code>org.eclipse.sirius.business.api.control.SiriusUncontrolCommand</code> with signature 
+				<code>SiriusUncontrolCommand(EObject, boolean, IProgressMonitor)</code> has been removed; instead, use the alternate constructor with an additional explicit 
+				<code>boolean shouldEndBySaving</code> parameter (set it to 
+				<code>true</code> to obtain the same behavior as the removed constructor).
+			</li>
+			<li><span class="label label-danger">Removed</span> In 
+				<code>org.eclipse.sirius.business.api.dialect.DialectServices</code>, methods 
+				<code>canCreateIdentifier</code> and 
+				<code>createIdentifier</code> have been removed.
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.business.api.dialect.identifier</code> package and all its content (
+				<code>AbstractRepresentationElementIdentifier</code> and 
+				<code>RepresentationElementIdentifier</code>) have been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+			<code>org.eclipse.sirius.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Two new methods have been added to the interface 
+				<code>org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection.Callback</code>: 
+				<code>selectViewpoint(Viewpoint, Session, boolean, Set&lt;Viewpoint&gt;, IProgressMonitor)</code> and 
+				<code>deselectViewpoint(Viewpoint, Session, Set&lt;Viewpoint&gt;, IProgressMonitor)</code>. These methods add a new parameter that is a set of viewpoints compared to the same methods without these parameters. These set contains all viewpoints that will be deactivated/activated in addition of the one that is asked to be deactivated/activated. It allows the callback implementation to better handle viewpoint dependencies interaction by being able to know if missing dependencies will be activated or deactivated.
+			</li>
+			<li><span class="label label-success">Added</span> An interface 
+				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> has been added to gather 
+				<code>org.eclipse.sirius.ui.editor.SessionEditor</code> and 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectEditor</code> under the same abstraction. It allows to provide 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> saving functionalities for session editor or any new editor that is not a dialect editor. 
+			</li>
+			<li><span class="label label-success">Added</span> A method 
+				<code>getSiriusEditors()</code>  has been added to interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code>. It allows to retrieve all 
+				<code>org.eclipse.sirius.ui.business.api.editor.ISiriusEditor</code> that are registered in the session.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.refreshEditor(DialectEditor, IProgressMonitor)</code> has been added to allow specifiers to do a full refresh of its dialect editor easily.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setBrowserMinWidth(int)</code> has been added to allow modification of the minimum width (with default value &#8220;0&#8221;) of the browser part of the viewpoint selection wizard.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.wizards.page.ViewpointsSelectionWizardPage.setColumnWidthEquality(boolean)</code> has been added to allow modification of column width equality (with default value &#8220;false&#8221;) of the root composite of the viewpoint selection wizard.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getDefaultFontWithRuntimeSizeAndFromLabelFormat(List&lt;FontFormat&gt;)</code> has been added to allow to retrieve a font using the given format and the default Sirius font (arial) and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.color.VisualBindingManager.getFontFromNameAndLabelFormatAndWithDefaultSize(List&lt;FontFormat&gt;, String)</code> has been added to allow to retrieve a font using the given format and the given font name and the runtime height.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.dialogs.AbstractExportRepresentationsAsImagesDialog.isExportDecorations()</code> has been added to know if decorations are displayed in the exported image.
+			</li>
+			<li><span class="label label-success">Added</span> 
+				<code>org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.export(DRepresentation, Session, IPath, ExportFormat, IProgressMonitor, boolean)</code> method has been added. Compared to the previous method signature, the boolean parameter 
+				<code>exportDecorations</code> has been added to allow to choose if the diagram element decorations will be exported or not.
+			</li>
+			<li><span class="label label-info">Modified</span> The boolean parameter 
+				<code>exportDecorations</code> has been added to 
+				<code>org.eclipse.sirius.ui.tools.api.actions.export.ExportAction.ExportAction(Session, Collection&lt;DRepresentation&gt;, IPath, ImageFileFormat, boolean, boolean)</code> constructor. It allows to choose if the diagram element decorations will be exported or not.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>attachEditor(DialectEditor)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>detachEditor(DialectEditor)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>detachEditor(DialectEditor, boolean)</code> from the interface 
+				<code>org.eclipse.sirius.ui.business.api.session.IEditingSession</code> has its first parameter type modified from 
+				<code>DialectEditor</code> to the new abstraction 
+				<code>ISiriusEditor</code> to provide saving capabilities with other editors than the dialect ones.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.getContentContext(String, int)</code> has been made protected instead of private to allow to use it for sub types.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.assist.TextContentProposalProvider.removeDuplicatedProposals(List&lt;ContentProposal&gt;)</code> has been made protected instead of private to allow to use it in sub types.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.createLocalRepresentationsFile(IProject, IProgressMonitor)</code> has its return type changed from 
+				<code>void</code> to 
+				<code>Session</code> to allow callers to have access to the newly created session directly.
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.ui.tools.api.views.ViewHelper.getContentProvider()</code> has been renamed into 
+				<code>createContentProvider()</code> and now returns a new instance on each invocation.
+			</li>
+			<li><span class="label label-danger">Removed</span> The old 
+				<em>Model Request Interpreter</em> view is not available anymore. It is superseded by the 
+				<em>Interpreter</em> view, which comes from the Acceleo project but does not actually depend on Acceleo or AQL and can be installed separately (using the feature 
+				<code>org.eclipse.acceleo.ui.interpreter</code>, which is available directly from the Sirius update-sites). The corresponding interface 
+				<code>org.eclipse.sirius.ui.tools.api.views.interpreterview.InterpreterView</code> has been removed. Technically, the implementation code for the old 
+				<em>Model Request Interpreter</em> view is still present if needed during the transition, but not exposed or used anywhere. It will be removed in a future version. 
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram">Changes in 
+			<code>org.eclipse.sirius.diagram</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility class 
+				<code>org.eclipse.sirius.diagram.business.api.helper.decoration.DecorationHelper</code> has been added. It provides 
+				<code>updateDecorations(List&lt;Layer&gt;)</code> and 
+				<code>updateAllDecorations</code> methods that allow to update only decorations in a diagram.
+			</li>
+			<li><span class="label label-info">Moved</span> The method 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride.aroundRefresh(DDiagram)</code> has been moved to 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> to unify methods handling refresh extension under one interface. 
+			</li>
+			<li><span class="label label-info">Modified</span> The method 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension.aroundRefresh(DDiagram)</code> has been modified with a default behavior that is the one before introduction of the method to avoid breaking compatibility.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshOverride</code> has been removed because its only method has been moved into 
+				<code>org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension</code> interface
+			</li>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>org.eclipse.sirius.diagram.business.internal.dialect.identifier</code> package and all its content (
+				<code>DiagramIdenttifier</code>, 
+				<code>NodeIdentifier</code>, 
+				<code>EdgeIdentifier</code>, 
+				<code>NodeContainerIdentifier</code>, and 
+				<code>NodeStyleIdentifier</code>) have been removed.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+			<code>org.eclipse.sirius.diagram.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> Constants 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.SPECIFIC_STYLES</code> &amp; 
+				<code>org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery.VERTICAL_ALIGNMENT</code> have been added to retrieve the initial label alignment of Notes from the Palette (see 
+				<a href="Release_Notes.html#UserVisibleChanges">user-visible changes</a> ). Currently the vertical alignment can not be changed (potential new feature later).
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.diagram.ui.graphical.edit.policies.SiriusDecoratorEditPolicy</code> has been added to improve the behavior of decorator selection.
+			</li>
+			<li><span class="label label-success">Added</span> A new decoration mechanism has been implemented. Now, Sirius uses a single 
+				<code>IDecorator</code> to decorate EditPart in diagram. That allows Sirius to manage the relative positioning between decorations.
+				<ul>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationDescriptorProvider</code> represents a provider able to give the decoration descriptors. 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorationDescriptorProvider</code> is an abstract class that can be inherited to implement 
+						<code>SiriusDecorationDescriptorProvider</code>.
+					</li>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.DecorationDescriptor</code> is a simple POJO that contains information needed to display decoration.
+					</li>
+					<li><span class="label label-success">Added</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.SiriusDecorationProviderRegistry</code> allows to register and get 
+						<code>SiriusDecorationDescriptorProvider</code>.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-success">Added</span> The preference 
+				<code>SiriusDiagramUiPreferencesKeys.PREF_AUTHORIZE_DECORATION_OVERLAP</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the overlap is authorized between decoration group on diagram element.
+				<ul>
+					<li><span class="label label-success">Added</span> The class 
+						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.DynamicDiagramUIPreferences</code> and the method 
+						<code>org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.Implementation.getDynamicPreferences()</code> have been added to have good performances in getting the preference value.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-info">Modified</span> The preference 
+				<code>SiriusDiagramUiPreferencesKeys.PREF_PRINT_DECORATION</code> has been added in 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.preferences.SiriusDiagramUiPreferencesKeys</code>. If true, the decorations of the diagram elements of a diagram will be printed, when printing a diagram.
+			</li>
+			<li><span class="label label-info">Modified</span> The 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.part.DiagramEditPartService.DiagramEditPartService</code> class which can be used to export diagrams as images is now automatically adapting the output resolution for raster image based on maximum buffer size specified through the 
+				<code>plugin.propeties</code> file of the 
+				<code>org.eclipse.sirius.diagram.ui</code> plugin. This leads to a noticeable increase of the export image size (you can expect a 10 factor on small diagrams) and the method will no longer fail with OutOfMemory errors as bigger diagrams will lead to a lower output resolution. Implementers using this class can override the 
+				<code>DiagramEditPartService.getMaximumTotalSize()</code> method to return their own limit or 
+				<code>DiagramEditPartService.getExportResolutionFactor(DiagramEditPart, SiriusDiagramImageGenerator)</code> and return 
+				<code>1.0</code> to get back to the previous behavior.
+			</li>
+			<li><span class="label label-info">Moved</span> The methods of interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
+				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
+				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
+			</li>
+			<li><span class="label label-info">Moved</span> The methods of interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> that are 
+				<code>getFormatData(FormatDataKey, RepresentationElementMapping)</code> and 
+				<code>addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> have been moved into the interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> to reduce interface numbers for less complexity.
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>getFormatData(FormatDataKey key)</code> and 
+				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
+				<ul>
+					<li><span class="label label-danger">Removed</span> 
+						<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.AbstractSiriusDecorator</code> is removed because now useless.
+					</li>
+				</ul>
+			</li>
+			<li><span class="label label-danger">Removed</span> The methods 
+				<code>getFormatData(FormatDataKey key)</code> and 
+				<code>addFormatData(FormatDataKey key, AbstractFormatData formatData)</code> have been removed from interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code> because they were deprecated.
+			</li>
+			<li><span class="label label-danger">Removed</span> The interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> has been removed because all its methods have been moved into interface 
+				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManager</code>
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.table">Changes in 
+			<code>org.eclipse.sirius.table</code>
+		</h4>
+		<ul>
+			<li><span class="label label-danger">Removed</span> The 
+				<code>DTableElementSynchronizer</code> 
+				<em>EClass</em> has been removed from the table meta-model. It only defined 
+				<em>EOperations</em> and has been replaced with an equivalent (internal) plain Java class.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui">Changes in 
+			<code>org.eclipse.sirius.tree.ui</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The enum class for Sirius tree preferences 
+				<code>org.eclipse.sirius.tree.ui.tools.api.preferences.SiriusTreeUiPreferencesKeys</code> has been added with the enum value 
+				<code>SiriusTreeUiPreferencesKeys.PREF_ALWAYS_USE_STANDARD_FONT_SIZE</code>. This enum value is the preference when true allowing to use runtime font height when displaying Sirius tree editor&#8217;s items instead of the one specified in the VSM.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.editor">Changes in 
+			<code>org.eclipse.sirius.ui.editor</code>
+		</h4>
+		<p>This plugin is new in Sirius 5.0. It provides a session editor showing loaded models, representations and viewpoint activation status of the session. It has functionalities allowing to change the viewpoint activation status, to create/remove representations or to load unload external models. The graphical block showing loaded models is integrated with CNF. You can provide content extension to its viewer by using an id matching the pattern 
+			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.contentExtension.*</code>. You also can provide action extension by using an id matching the pattern 
+			<code>org.eclipse.sirius.ui.editor.graphicalcomponents.semanticModelsViewer.actionExtension.*</code>. The extension will be selectable/unselectable by using a 
+			<code>Customize View</code> button on the models block header.
+		</p>
+		<h4 id="Changesinorg.eclipse.sirius.properties.core">Changes in 
+			<code>org.eclipse.sirius.properties.core</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.internal.converter.ViewDescriptionConverter</code> has been moved as an API to 
+				<code>org.eclipse.sirius.properties.core.api.ViewDescriptionConverter</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The classes necessary to support the preprocessing of the odesign for the inheritance in its Properties parts are available in the API package 
+				<code>org.eclipse.sirius.properties.core.api</code>.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.internal.SiriusInterpreter</code> has been moved as an API to 
+				<code>org.eclipse.sirius.properties.core.api.SiriusInterpreter</code>. This class could be used by those who want to create custom model operations using the Properties framework.
+			</li>
+			<li><span class="label label-success">Added</span> The class 
+				<code>org.eclipse.sirius.properties.core.api.SiriusDomainClassTester</code> has been added as an API for those who want to create custom model operations using the Properties framework.
+			</li>
+			<li><span class="label label-success">Added</span> The method 
+				<code>org.eclipse.sirius.ext.emf.edit.EditingDomainServices.createInstance(EClass)</code> has been added to allow the creation of a new instance from an EClass in the interpreters.
+			</li>
+			<li><span class="label label-info">Modified</span> The default rules have been transfered to a new dedicated plugin named 
+				<code>org.eclipse.sirius.properties.defaultrules</code>.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.ui.properties">Changes in 
+			<code>org.eclipse.sirius.ui.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> All the content related to the IDescriptionConverter and ILinkResolver has been moved from the plugin 
+				<code>org.eclipse.sirius.ui.properties</code> to the newly created plugin 
+				<code>org.eclipse.sirius.properties.core</code>. It includes all the APIs and both extension points.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.editor.properties">Changes in 
+			<code>org.eclipse.sirius.editor.properties</code>
+		</h4>
+		<ul>
+			<li><span class="label label-info">Modified</span> In the package 
+				<code>org.eclipse.sirius.editor.properties.sections.description.representationdescription</code> the class 
+				<code>RepresentationDescriptionMetamodelsUpdater</code> has been replaced by 
+				<code>DescriptionMetamodelsUpdater</code> which can now be used with any EObject with a many-valued EReference to EPackages. The behavior of the class 
+				<code>RepresentationDescriptionMetamodelPropertySectionSpec</code> has been transfered to an abstract class independent of 
+				<code>RepresentationDescription</code> named 
+				<code>AbstractMetamodelPropertySectionSpec</code>. Those classes are now used for the edition of the metamodels of both the Properties view description and the various representations.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support">Changes in 
+			<code>org.eclipse.sirius.tests.junit.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The utility method 
+				<code>org.eclipse.sirius.tests.support.api.TestsUtil.setTargetPlatform()</code> has been added to allow to load a PDE target platform according to all known OSGi bundles. It is useful to compile a plug-in in the execution runtime of the tests.
+			</li>
+			<li><span class="label label-success">Added</span> The utility class 
+				<code>org.eclipse.sirius.tests.support.api.OpenedSessionsCondition</code> has been extracted from a junit test to be used by multiple junit tests. It allows to wait until a session is in opened state.
+			</li>
+		</ul>
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+			<code>org.eclipse.sirius.tests.swtbot.support</code>
+		</h4>
+		<ul>
+			<li><span class="label label-success">Added</span> The method 
+				<code>getTreeItem(SWTBotTreeItem[], String, boolean, boolean)</code> has been added in 
+				<code>org.eclipse.sirius.tests.swtbot.support.utils</code> to retrieve recursively a 
+				<code>SWTBotTreeItem</code> in a 
+				<code>SWTBotTreeItem</code> array. Compared to 
+				<code>getTreeItem(SWTBotTreeItem[], String)</code>, it adds the capability to control if the search must be done on enabled items or enabled and disabled items and if the tree must be expanded during the search to check non displayed items.
+			</li>
+			<li><span class="label label-success">Added</span> A new utility method 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragCentered(String, Class&lt;? extends EditPart&gt;, int, int)</code> improving the dragCentered method by adding the aimed Class in parameter.
+			</li>
+			<li><span class="label label-info">Modified</span> A new AtomicBoolean parameter has been added to the utility method 
+				<code>mouseDragWithKey(int, int, int, int, int)</code> in classes 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor</code>, 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer</code> and 
+				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas</code>. This allows to correctly wait the end of the drag&#8217;n&#8217;drop.
+				<ul>
+					<li>Sample of code to use:</li>
+				</ul>
+			</li>
+		</ul>
+		<pre>final AtomicBoolean dragFinished = new AtomicBoolean(false);
+editor.dragWithKey(start.x, start.y, endpoint.x, endpoint.y, SWT.F3, dragFinished);
+// Wait that the drag is done (the async Runnable simulating the
+// drag)
+bot.waitUntil(new ICondition() {
+    @Override
+    public boolean test() throws Exception {
+        return dragFinished.get();
+    }
+
+    @Override
+    public void init(SWTBot bot) {
+    }
+
+    @Override
+    public String getFailureMessage() {
+        return "The drag'n'drop operation has not finished.";
+    }
+});
+// Wait that the figures are redrawn. In a fast environment, figures
+// are not really redrawn and the rest of the test is not reliable.
+SWTBotUtils.waitAllUiEvents();
+
+</pre>
+		<h2 id="sirius4.1.2">Changes in Sirius 4.1.2</h2>
+		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
+		<ul>
 			<li><span class="label label-success">Added</span> A new preference named 
 				<em>Maximum size of tabs name</em> is available in the Sirius Properties View preference page. This preference is used to shorten the tabs names when the default rules are used to render the properties view.
 			</li>
@@ -199,7 +809,7 @@
 		<p>
 			<img border="0" src="./images/PreferencePageMaxTabName.png"/> 
 		</p>
-		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> 
 				<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping</code> class has been added to handle copy/paste format with mapping information when an element target of a format pasting has many source diagram format corresponding to its key. In this case, we use the mapping information to get the more precise data format. And if no result matched, then we return the first found by using the key.
@@ -230,18 +840,18 @@
 			<code>org.eclipse.sirius.diagram.ui.tools.api.format.SiriusFormatDataManagerWithMapping.addFormatData(FormatDataKey, RepresentationElementMapping, AbstractFormatData)</code> to better handle copy/paste format cases.
 		</p>
 		<h2 id="sirius4.1.1">Changes in Sirius 4.1.1</h2>
-		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges3">User-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-info">Modified</span>The &#8220;straighten to&#8221; actions were previously disabled when an edge is connected to border nodes that have several edges. It is now allowed.</li>
 		</ul>
-		<h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> 
 				<code>org.eclipse.sirius.table.business.api.helper.TableHelper.getEStructuralFeature(DLine, DColumn)</code> method has been added to retrieve the EStructuralFeature associated to a table column.
 			</li>
 		</ul>
 		<h2 id="sirius4.1.0">Changes in Sirius 4.1.0</h2>
-		<h3 id="UserVisibleChanges3">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges4">User-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> Copy/Paste Layout has been completed with Copy/Paste Style and Copy/Paste Format. 
 				<em>Paste Format</em> is equivalent to paste 
@@ -305,7 +915,7 @@
 				<em>Ctrl+HOME</em>.
 			</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> It is now possible to inline a copy of the default Properties Views model inside the VSM. This is a copy of the model Sirius would use if no 
 				<em>Properties View Description</em> was specified. It can be used as a starting point for manual customization, or as a complement for elements for which you do not provide any custom rules. 
@@ -357,7 +967,7 @@
 				<code>org.eclipse.sirius.diagram.ui.formatDataManager</code>. The deprecated extension point will be removed in the next 5.0 Sirius major release. Several classes associated with this deprecated extension point are also deprecated (see Developer-Visible Changes for details).
 			</li>
 		</ul>
-		<h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> As the first step to save the DRepresentation in its own resource, 
 				<code>org.eclipse.sirius.viewpoint.DView.getOwnedRepresentationDescriptors()</code> has been added as a wrapper of the 
@@ -415,7 +1025,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius2">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -520,7 +1130,7 @@
 				<code>updateModelsReferences(DAnalysis, Iterator&lt;DSemanticDecorator&gt;)</code> because it is more suited to the client needs.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -547,7 +1157,7 @@
 				<code>HierarchyLabelProvider</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram2">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -557,7 +1167,7 @@
 				<code>allowsCopyPasteLayout(DSemanticDecorator)</code> will be removed in the new major version.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -693,7 +1303,7 @@
 				<code>org.eclipse.sirius.ext.gef</code> is deprecated and will be removed in the next version.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support2">Changes in 
 			<code>org.eclipse.sirius.tests.junit.support</code>
 		</h4>
 		<ul>
@@ -705,7 +1315,7 @@
 				<code>DView.ownedRepresentationDescriptors</code> addition.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -731,7 +1341,7 @@
 				<code>labelFontSizeExpression</code> since both of them were already treated as expression.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui.properties">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui.properties2">Changes in 
 			<code>org.eclipse.sirius.ui.properties</code>
 		</h4>
 		<ul>
@@ -759,7 +1369,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius4.0.0">Changes in Sirius 4.0.0</h2>
-		<h3 id="UserVisibleChanges4">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> The user can now filter elements according to a Typed variable (String, Integer, EEnum or any EDataType). If a user applies a filter containing Typed Variables, a dialog is displayed to allow user entering the Typed Variable values. That values can be used as variables in the Condition Expression of the Variable Filter.</li>
 			<li><span class="label label-success">Added</span> When the diagram is larger than the editor, you can move it in all directions pressing the middle-button and dragging the mouse (keeping the button pressed).</li>
@@ -779,7 +1389,7 @@
 				<code>Apply Appearance Properties</code> action has been modified to use the last selected element as base style instead of the first one.
 			</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> Sirius 4.0 introduces 
 				<strong>experimental</strong> support for specifying the properties views of your modelers directly from inside the VSM. This feature uses the same dynamic approach as for specifying diagrams, tables and trees, with a very flexible configuration language and no code generation involved (including live preview of any change). As of Sirius 4.0, this feature should be considered in an experimental state with details subject to changes until Sirius 4.1, and is not installed by default. To install it, make sure either 
@@ -845,7 +1455,7 @@
 			</li>
 			<li><span class="label label-info">Modified</span> The variable under VariableFilter, previously named &#8220;Variable&#8221;, is renamed to &#8220;Select Model Element Variable&#8221;. It is functionally equivalent.</li>
 		</ul>
-		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges5">Developer-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> It is now possible to provide a full customized tab-bar by implementing the 
 				<code>ITabbarContributor</code> through the 
@@ -857,7 +1467,7 @@
 				<a href="developer/extensions-provide_custom_bundled_image_shape.html">developer documentation</a> for more details.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius3">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -952,7 +1562,7 @@
 				<code>MetamodelDescriptorProvider</code>. 
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -971,7 +1581,7 @@
 				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterStatus</code> to reflect all kind of language validation severity (of AQL for example).
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram3">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -1014,7 +1624,7 @@
 				<code>org.eclipse.sirius.diagram.description.filter.impl.VariableFilterImpl.resetVariables()</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -1041,7 +1651,7 @@
 				<code>org.eclipse.sirius.ui.business.api.editor.SpecificSessionManager</code> has been removed. 
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -1162,7 +1772,7 @@
 				<code>org.eclipse.sirius.ext.gmf.runtime.diagram.ui.tools.MoveInDiagramDragTracker</code> has been added to declare states used by all DragTrackers which manage move in diagram using mouse middle click.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -1182,7 +1792,7 @@
 				<code>org.eclipse.sirius.editor</code>) still depends on PDE (and thus indirectly the JDT too).
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support3">Changes in 
 			<code>org.eclipse.sirius.tests.junit.support</code>
 		</h4>
 		<ul>
@@ -1203,7 +1813,7 @@
 				<code>SiriusTestCase.initViewpoint(String, Session, EObject)</code> has been deprecated because the last parameter is useless to activate a viewpoint.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support3">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -1248,7 +1858,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius3.1.0">Changes in Sirius 3.1.0</h2>
-		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges6">User-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> A new feature allows to snap to all shapes (instead of just to snap to sibling shapes). The <kdb>F4</kdb> shortcut key activates this mode when you resize a node, move a node or move a bendpoint of an edge, see 
 				<a href="./user/diagrams/Diagrams.html#snap_to_shapes">the documentation</a> for details.
@@ -1287,7 +1897,7 @@
 				<em>Arrange Linked Border Nodes</em> as it is border nodes which are layouted and not bordered nodes.
 			</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-info">Modified</span> The 
 				<em>Acceleo Query Language</em> (AQL) interpreter has been improved. AQL, and its support in Sirius, is no longer considered experimental, and instead is now the recommended query language to use for new VSMs. Improvements mostly concern better completion and validation, and more precise error reporting. In particular AQL expressions will now be able to display warnings and errors in the Interpreter view. The message displayed in the Interpreter view after an evaluation has also been improved to display the qualified name of the type of the value computed (
@@ -1334,7 +1944,7 @@
 				<code>IPermissionAuthority</code>) of the potential to delete objects. This is the reverse order of what was done before, and can have performance impacts if the precondition is slow. The specifier will to take care to ensure a good performance for the precondition expression of the delete tool.
 			</li>
 		</ul>
-		<h3 id="DeveloperVisibleChanges5">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges6">Developer-Visible Changes</h3>
 		<h4 id="Partialsupportforinternationalization">Partial support for internationalization</h4>
 		<p>Sirius 3.1 introduces partial support for internationalization: all literal strings from the runtime part of Sirius are now externalized and can be localized by third parties by providing the appropriate &#8220;language packs&#8221; as OSGi fragments. Note that this does not concern the VSM editor&#8217;s UI, the VSMs themselves, or the parts of the UI inherited from Eclipse/EMF/GEF/GMF and other libraries and frameworks used by Sirius.</p>
 		<p>Some API changes were required to enable this. While technically breaking changes if interpreting strictly the OSGi versioning rules, the major version number of the impacted bundles was not incremented as the changes only concern classes that should not impact the vast majority of users. Most breaking changes concern the plug-in/activator classes from each bundle. They are:</p>
@@ -1545,7 +2155,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -1575,7 +2185,7 @@
 				<code>org.eclipse.sirius.common.tools.api.contentassist.ContentProposalBuilder</code> used to build the content proposals with their various parameters more easily.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius4">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -1614,7 +2224,7 @@
 				<code>org.eclipse.sirius.tools.api.command.IUndoableCommand</code> interface removed because it is useless since undo/redo is managed by EMF Transaction.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui5">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -1636,7 +2246,7 @@
 				<code>IEditorPart</code> through the navigation history view.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -1700,7 +2310,7 @@
 				<code>RefreshPlan</code> in parameter to have more informations to say if children must be synchronized.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support4">Changes in 
 			<code>org.eclipse.sirius.tests.junit.support</code>
 		</h4>
 		<ul>
@@ -1722,7 +2332,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support4">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -1792,7 +2402,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius3.0.0">Changes in Sirius 3.0.0</h2>
-		<h3 id="UserVisibleChanges6">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges7">User-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> The ability to print table representations has been re-introduced.</li>
 			<li><span class="label label-success">Added</span> The quick outline feature has been added for tree and table editors, see documentation for details.</li>
@@ -1817,7 +2427,7 @@
 				<em>Viewpoint Selection</em> dialog and wizard page, the &#8220;plug-in&#8221; decorator for viewpoints loaded from plug-ins is removed, and a &#8220;Folder&#8221; decorator for viewpoints loaded from the current workspace has been added. This makes the icons more visible in the most common where viewpoints come from installed plug-ins.
 			</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges5">Specifier-Visible Changes</h3>
 		<ul>
 			<li><span class="label label-success">Added</span> <span class="label label-info">Experimental</span> Optional support for the experimental 
 				<em>Acceleo Query Language</em> (AQL) has been added to write interpreted expressions.  It is provided by the 
@@ -1891,7 +2501,7 @@
 				<em>EStructuralFeature</em> (inherited or with same name).
 			</li>
 		</ul>
-		<h3 id="DeveloperVisibleChanges6">Developer-Visible Changes</h3>
+		<h3 id="DeveloperVisibleChanges7">Developer-Visible Changes</h3>
 		<p>The most important and impacting changes in this release are (details below in plug-in specific sections):</p>
 		<ul>
 			<li><span class="label label-success">Added</span>  The new extension point 
@@ -1968,7 +2578,7 @@
 			<li><span class="label label-success">Added</span> Sirius now provides an <a href="http://www.eclipse.org/oomph" target="_blank">Oomph</a> setup file to automatically create a fully configured Eclipse installation ready for contributing patches to Sirius. The latest version can be obtained <a href="http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/plain/releng/org.eclipse.sirius.settings/Sirius.setup" target="_blank">here</a>.</li>
 			<li><span class="label label-success">Added</span> New patches proposed by contributors on the <a href="https://git.eclipse.org/r/#/admin/projects/sirius/org.eclipse.sirius" target="_blank">Sirius Gerrit</a> now automatically trigger a sub-set of the Sirius automated test suites, which give a good feedback on the absence of regressions introduced by the proposed patch.</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common4">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -2068,7 +2678,7 @@
 				<code>VariableType</code> instance instead of encoded Strings.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common.ui">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common.ui2">Changes in 
 			<code>org.eclipse.sirius.common.ui</code>
 		</h4>
 		<ul>
@@ -2087,7 +2697,7 @@
 				<code>org.eclipse.sirius.common.ui.ext</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius5">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -2223,7 +2833,7 @@
 				<code>org.eclipse.sirius.viewpoint.DContainer</code> has been removed.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui6">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -2283,7 +2893,7 @@
 				<code>org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider.bindCompletionProcessor(AbstractPropertySection, Text)</code>, the difference is that it binds the completion processors available in plugins to the text.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram4">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -2324,7 +2934,7 @@
 				<code>ComputedStyleDescriptionRegistry.computedStyleDescriptions</code> list.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui5">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -2425,7 +3035,7 @@
 				<code>org.eclipse.sirius.diagram.ui.business.api.view.ValidateAction.getDSemanticDecorator()</code> for an example. 
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.table">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.table2">Changes in 
 			<code>org.eclipse.sirius.table</code>
 		</h4>
 		<ul>
@@ -2535,7 +3145,7 @@
 				<code>RefreshEditorsPrecommitListener</code>.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tree.ui">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui2">Changes in 
 			<code>org.eclipse.sirius.tree.ui</code>
 		</h4>
 		<ul>
@@ -2630,7 +3240,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.junit.support5">Changes in 
 			<code>org.eclipse.sirius.tests.junit.support</code>
 		</h4>
 		<ul>
@@ -2675,7 +3285,7 @@
 				<code>org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)</code> can be used instead.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support5">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -2736,7 +3346,7 @@
 			<code>org.eclipse.sirius.xxx.ui.ext</code>, allowing them not have all that functionalities they may not want.
 		</p>
 		<h2 id="sirius2.0.0">Changes in Sirius 2.0.0</h2>
-		<h3 id="UserVisibleChanges7">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges8">User-Visible Changes</h3>
 		<ul>
 			<li>It is now possible to select element that intersects the selection rectangle and not that is completely contained by the selection rectangle. This new behavior is enabled when user selects elements from right to left. The normal mode (previous mode) remains when the user selects elements from left to right.</li>
 			<li>The edges appearance is now kept, as much as possible, when one of its extremity is moved. A move of an extremity should move only the closest segment of the edge.</li>
@@ -2787,7 +3397,7 @@
 			<li>Reconnection of an edge will only now move the minimum necessary bendpoints instead of reseting it to default.</li>
 			<li>A new action has been added to reset the diagram (or container) origin: the diagram (or container) bounds (the rectangle formed by the highest, the leftmost, the lowest and the rightmost children elements) can have a negative origin or can be shifted toward the bottom-right with a blank zone at the top-left. This action aims to move all diagram (or container) elements so that the it retrieves its origin while keeping elements layout.</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges5">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges6">Specifier-Visible Changes</h3>
 		<ul>
 			<li>The specifier can now choose to hold the edge ends toward the center of the source, target or both. New fields within the &#8220;advance&#8221; tab of EdgeStyle description have been added to choose for which source or target mappings an edge should be centered. See 
 				<a href="specifier/diagrams/Diagrams.html#edges_styles">Edges Styles &gt; Edge Centering</a> in the specifier manual for more details.
@@ -2798,7 +3408,7 @@
 			<li>&#8220;Lozenge&#8221; is replaced by &#8220;Diamond&#8221; in diagram style.</li>
 		</ul>
 		<h3 id="APIChanges">API Changes</h3>
-		<h4 id="Changesinorg.eclipse.sirius5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius6">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -2873,7 +3483,7 @@
 				<code>org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter</code>. However considering the way Sirius uses GMF, this adapter is not needed.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui6">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui7">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -2887,7 +3497,7 @@
 				<code>findViewpointByName()</code> to correct a wrong rebranding.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common5">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -2910,7 +3520,7 @@
 				<strong>might</strong> have change the structure of the model during the loading (with no isModified flag). Sirius will then use this information to consider saving the file even if there is no logical change. 
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common.ui3">Changes in 
 			<code>org.eclipse.sirius.common.ui</code>
 		</h4>
 		<ul>
@@ -2925,7 +3535,7 @@
 				<code>IServiceLocator.getService()</code> on the site.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram5">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -2956,7 +3566,7 @@
 				<code>org.eclipse.sirius.diagram.description.CenteringStyle</code>, to determine whether the edge target or source ends should be centered.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui6">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -3015,7 +3625,7 @@
 				<code>org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isContainer()</code> has been added to test whether the GMF node visualID corresponds to a ContainerEditPart.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tree.ui2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tree.ui3">Changes in 
 			<code>org.eclipse.sirius.tree.ui</code>
 		</h4>
 		<ul>
@@ -3119,7 +3729,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support6">Changes in 
 			<code>org.eclipse.sirius.tests.swtbot.support</code>
 		</h4>
 		<ul>
@@ -3161,11 +3771,11 @@
 			</li>
 		</ul>
 		<h2 id="sirius1.0.0">Changes in Sirius 1.0.0 (from Sirius 1.0.0M7)</h2>
-		<h3 id="UserVisibleChanges8">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges9">User-Visible Changes</h3>
 		<ul>
 			<li>The ability to print table representations has been disabled for the 1.0.0 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=435204" target="_blank">bug #435204</a> for the details).</li>
 		</ul>
-		<h3 id="SpecifierVisibleChanges6">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges7">Specifier-Visible Changes</h3>
 		<ul>
 			<li>
 				<em>Node</em>, 
@@ -3180,7 +3790,7 @@
 			</li>
 		</ul>
 		<h3 id="APIChanges2">API Changes</h3>
-		<h4 id="Changesinorg.eclipse.sirius6">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius7">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -3199,7 +3809,7 @@
 				<code>computeResourcesToSave()</code> method.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui6">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui7">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -3211,7 +3821,7 @@
 				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramListEditPart.createLayoutEditPolicy</code> implementation has been removed.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram.ui7">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram.ui8">Changes in 
 			<code>org.eclipse.sirius.diagram.ui</code>
 		</h4>
 		<ul>
@@ -3225,7 +3835,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius1.0M7">Changes in Sirius 1.0.0M7 (from Sirius 1.0M6)</h2>
-		<h3 id="SpecifierVisibleChanges7">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges8">Specifier-Visible Changes</h3>
 		<ul>
 			<li>The default value of the 
 				<em>Semantic Candidates Expression</em> for Tree Items has changed from an empty string (meaning &#8220;any compatible element in the session&#8221;) to 
@@ -3444,7 +4054,7 @@
 				</ul>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common6">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -3456,7 +4066,7 @@
 				<code>Predicate</code> tested on the key.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius7">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius8">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -3564,7 +4174,7 @@
 				<code>getSavingPolicy()</code> method which gives access to the currently configured saving policy.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram5">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram6">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -3672,7 +4282,7 @@
 				<code>org.eclipse.sirius.diagram.sequence.template.Transformer</code> interface instead, which is functionally equivalent.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui7">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui8">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -3842,7 +4452,7 @@
 		<p>if 
 			<code>element</code> is a Diagram concept.
 		</p>
-		<h4 id="Changesinorg.eclipse.sirius8">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius9">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -3888,7 +4498,7 @@
 				<code>new org.eclipse.sirius.business.api.query.EObjectQuery(element).getParentDiagram()</code> instead.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui8">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui9">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -3903,7 +4513,7 @@
 				<code>org.eclipse.sirius.ui.tools.api.dialogs.ExportSeveralRepresentationsAsImagesDialog</code> instead.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram6">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram7">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -3913,7 +4523,7 @@
 				<code>org.sirius.diagram.graphicalou .edit.policies.AirNoteAttachmentEditPolicyProvider</code> and declaration in plugin.xml have been removed too.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.table2">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.table3">Changes in 
 			<code>org.eclipse.sirius.table</code>
 		</h4>
 		<ul>
@@ -3930,7 +4540,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius1.0M5">Changes in Sirius 1.0.0M5 (from Sirius 1.0M4)</h2>
-		<h3 id="UserVisibleChanges9">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges10">User-Visible Changes</h3>
 		<ul>
 			<li>The table csv export has been improved to handle cropped label. In some specific cases, the cell label is automatically cropped and &#8216;...&#8217; is concatenated to the resulting value. This cropped displayed label was previously exported, now the complete semantic value is exported.</li>
 		</ul>
@@ -4006,7 +4616,7 @@
 				<code>viewpoint/diagram/description/concern</code>
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius9">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius10">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -4019,7 +4629,7 @@
 				<code>EObject</code>, i.e. the first container from which a domain class can be determined.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.common.ui3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common.ui4">Changes in 
 			<code>org.eclipse.sirius.common.ui</code>
 		</h4>
 		<ul>
@@ -4038,7 +4648,7 @@
 				<code>setTile()</code> method is still available but must be called before Dialog.create().
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.table3">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.table4">Changes in 
 			<code>org.eclipse.sirius.table</code>
 		</h4>
 		<ul>
@@ -4056,7 +4666,7 @@
 				<code>DCellQuery.getExportableLabel()</code> to compute the cell labels used in HTML export.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui9">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui10">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -4066,13 +4676,13 @@
 			</li>
 		</ul>
 		<h2 id="sirius1.0M4">Changes in Sirius 1.0.0M4 (from Sirius 0.9)</h2>
-		<h3 id="UserVisibleChanges10">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges11">User-Visible Changes</h3>
 		<ul>
 			<li>The ability to print table representations, which had been disabled for the 0.9 release, has been re-enabled.</li>
 		</ul>
 		<h3 id="APIChanges6">API Changes</h3>
 		<p>Sirius 1.0.0M4 includes a lots of API-breaking changes, as part of a global effort to improve the quality of the Sirius internals. In this milestone in particular, most of the APIs which were marked as deprecated in previous versions of Sirius (and before that of Viewpoint) have been either removed (if a replacement exists) or marked as non-deprecated (if no replacement exists yet).</p>
-		<h4 id="Changesinorg.eclipse.sirius.common6">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.common7">Changes in 
 			<code>org.eclipse.sirius.common</code>
 		</h4>
 		<ul>
@@ -4098,7 +4708,7 @@
 				<code>org.eclipse.sirius.table.tools.api.interpreter.IInterpreterSiriusTableVariables</code> instead.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius10">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius11">Changes in 
 			<code>org.eclipse.sirius</code>
 		</h4>
 		<ul>
@@ -4285,7 +4895,7 @@
 				<code>DiagramDescription</code> has been removed from the viewpoint.ecore meta-model. This reference always returns empty list.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.diagram7">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.diagram8">Changes in 
 			<code>org.eclipse.sirius.diagram</code>
 		</h4>
 		<ul>
@@ -4306,7 +4916,7 @@
 				<code>ECrossReferenceAdapter</code> can be null.
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.ui10">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.ui11">Changes in 
 			<code>org.eclipse.sirius.ui</code>
 		</h4>
 		<ul>
@@ -4349,7 +4959,7 @@
 				<code>CreateRepresentationFromRepresentationCreationDescription</code> classes (iof plug-ins sirius.diagram, sirius.table.ui, sirius.tree.ui).
 			</li>
 		</ul>
-		<h4 id="Changesinorg.eclipse.sirius.table4">Changes in 
+		<h4 id="Changesinorg.eclipse.sirius.table5">Changes in 
 			<code>org.eclipse.sirius.table</code>
 		</h4>
 		<ul>
@@ -4642,7 +5252,7 @@
 void removeSelectedView(DView view);
 
 </pre>
-		<h3 id="SpecifierVisibleChanges8">Specifier-Visible Changes</h3>
+		<h3 id="SpecifierVisibleChanges9">Specifier-Visible Changes</h3>
 		<p>New variables are available for 
 			<code>sizeComputationExpression</code> to compute the size of edges on 
 			<code>EdgeStyleDescription</code> and 
@@ -4664,7 +5274,7 @@
 				<em>targetView</em>: the target view of the current edge.
 			</li>
 		</ul>
-		<h3 id="UserVisibleChanges11">User-Visible Changes</h3>
+		<h3 id="UserVisibleChanges12">User-Visible Changes</h3>
 		<ul>
 			<li>The ability to print table representations has been disabled for the 0.9 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=422223" target="_blank">bug #422223</a>: for the details). It should be re-introduced in 1.0.</li>
 		</ul>
diff --git a/doc/developer/extensions-provide_save_dialog.html b/doc/developer/extensions-provide_save_dialog.html
index 228f51c..30a41ca 100644
--- a/doc/developer/extensions-provide_save_dialog.html
+++ b/doc/developer/extensions-provide_save_dialog.html
@@ -45,7 +45,8 @@
 		<h2 id="Example">Example</h2>
 		<pre><code>package myPackage;
 
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import org.eclipse.sirius.business.api.session.Session;
 import org.eclipse.ui.ISaveablePart2;
@@ -61,7 +62,7 @@
     }
 
     public Collection&lt;String&gt; getButtons() {
-        return Lists.newArrayList("Save", "Make something special", "Discard");
+        return new ArrayList&lt;String&gt;(Arrays.asList("Save", "Make something special", "Discard"));
     }
 
     public int reactToValue(Object objectToSave, int temporaryResult) {
diff --git a/doc/developer/extensions-provide_tabbar_extensions.html b/doc/developer/extensions-provide_tabbar_extensions.html
index 617f1e7..f548f38 100644
--- a/doc/developer/extensions-provide_tabbar_extensions.html
+++ b/doc/developer/extensions-provide_tabbar_extensions.html
@@ -194,7 +194,7 @@
 			<code>org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor</code>. This implementation contains protected methods that allows creating one or several contributions of the default Sirius tab-bar. See the 
 			<a href="../user/diagrams/Diagrams.html#ref_tabbar">Tab-bar</a> section in user manual for more details about each items.
 		</p>
-		<p>here is an example of 
+		<p>Here is an example of 
 			<code>ITabbarContributor</code> implementation. This sample provides two different tab-bar whether the selection is done on a diagram element (a Node or a Container for instance) or on the diagram (no specific selection). If the selection is done on an Edge, the tab-bar will be empty since the sample doesn&#8217;t return any contributionItem.
 		</p>
 		<pre><code>public class TestTabbarExt extends AbstractTabbarContributor {
@@ -248,12 +248,12 @@
             diagramContributionItems.add(createSelectPinnedElementsContribution(part));
             diagramContributionItems.add(createSelectHiddenElementsContribution(part));
             diagramContributionItems.add(createFilterContribution(part, manager));
-            diagramContributionItems.add(createPasteLayoutContribution(part));
+            diagramContributionItems.add(createPasteFormatContribution(part));
             diagramContributionItems.add(createRefreshContribution());
             diagramContributionItems.add(createSaveAsImageContributionItem());
-            diagramContributionItems.add(createLayoutingModeContributionItem(part));
+            diagramContributionItems.add(createModeMenuManagerContributionItem(part));
             diagramContributionItems.add(createCopyAppearancePropertiesContribution(part));
-            diagramContributionItems.add(createCopyLayoutContribution(part));
+            diagramContributionItems.add(createCopyFormatContribution(part));
         }
         return diagramContributionItems;
     }
@@ -271,7 +271,7 @@
             diagramElementContributionItems.add(pinElementContributionItem);
             diagramElementContributionItems.add(createUnPinElementContribution(part, pinElementContributionItem));
             diagramElementContributionItems.add(createFontColorContribution(part));
-            diagramElementContributionItems.add(createPasteLayoutContribution(part));
+            diagramElementContributionItems.add(createPasteFormatContribution(part));
             diagramElementContributionItems.add(createBoldFontStyleContribution(part));
             diagramElementContributionItems.add(createItalicFontStyleContribution(part));
             diagramElementContributionItems.add(createFontDialogContribution(part));
@@ -281,15 +281,16 @@
             diagramElementContributionItems.add(createSetStyleToWorkspaceImageContribution(part));
             diagramElementContributionItems.add(createSaveAsImageContributionItem());
             diagramElementContributionItems.add(createDistributeContribution());
-            diagramElementContributionItems.add(createLayoutingModeContributionItem(part));
+            diagramElementContributionItems.add(createModeMenuManagerContributionItem(part));
             diagramElementContributionItems.add(createRouterContribution());
             diagramElementContributionItems.add(createCopyAppearancePropertiesContribution(part));
-            diagramElementContributionItems.add(createCopyLayoutContribution(part));
+            diagramElementContributionItems.add(createCopyFormatContribution(part));
             diagramElementContributionItems.add(createSizeBothContribution(part));
             diagramElementContributionItems.add(createAutoSizeContribution(part));
         }
         return diagramElementContributionItems;
     }
+}
 
 </code></pre>
 	</body>
diff --git a/doc/i18n_changes.html b/doc/i18n_changes.html
index 1edd5d5..d81081e 100644
--- a/doc/i18n_changes.html
+++ b/doc/i18n_changes.html
@@ -11,10 +11,149 @@
 		<p>This document lists the changes in 
 			<code>TranslatableMessage</code> used for Sirius internationalization in each Sirius version.
 		</p>
-		<h2 id="sirius60">Translation Keys Changes in Sirius 6.0 (from Sirius 5.1)</h2>
+		<h2 id="sirius61">Translation Keys Changes in Sirius 6.1 (from Sirius 6.0)</h2>
 		<h3 id="MessageKeysAdded">Message Keys Added</h3>
 		<ul>
 			<li>
+				<code>org.eclipse.sirius.common.ui.Messages.MigrationUIUtil_askToSaveChanges</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ChangeEditModeAction_ChangeFailure</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ChangeEditModeAction_ChangePropertyValueRequest_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DDiagramEditorImpl_updateToolFailure</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DefaultModeAction_Label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DefaultModeAction_statusOn</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramAppearancePreferencePage_displayUserFixedColorsInPaletteLabel</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DoubleClickEditPolicy_confirmDialogAsking</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DoubleClickEditPolicy_confirmDialogTitle</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DoubleClickEditPolicy_filterConfirmDialogBody</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DoubleClickEditPolicy_layerConfirmDialogBody</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.EditModeAction_Label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.Group_No_Menu_ID</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.Group_Not_Displayed</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LayoutingModeSwitchingAction_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_Blank</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_MoreThanTwoLocations</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_NoId</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_OnlyOneLocationURIPerScheme</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_WrongFormat</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LocationURI_ParsePb_WrongScheme</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.UndoRedoCapableEMFCommandFactory_insertHorizontalBlankSpaceNotImplemented</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.ToolManagment_ToolChange_Command_Label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.UpdateToolRecordingCommand_cancelExceptionMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.ViewWithNullElementMigrationParticipant_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.ViewWithNullElementMigrationParticipant_singleMessage</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.ViewWithNullElementMigrationParticipant_title</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.CustomLayoutConfigurationDescriptionPropertySection_noLayoutAlgorithmProviderDescription</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.editor.Messages.CustomLayoutConfigurationDescriptionPropertySection_noLayoutAlgorithmProviderName</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.server.internal.Messages.SiriusServerConfigurator_headerConfig</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.server.internal.Messages.SiriusServerConfigurator_wrongPropertyTypeWarning</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusPreferencePage_askUserToSaveAfterMigration</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.SiriusPreferencePage_migrationGroup</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.CreateMissingRepresentationFileResolution_label</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.provider.Messages.CreateMissingRepresentationFileResolution_description</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.AirDResourceImpl_nullUid</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.Constraint_validNullLocationURIForGroupInPopupMenuConstraint_message</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.viewpoint.Messages.TechnicalUidMigrationParticipant_message</code>
+			</li>
+		</ul>
+		<h3 id="MessageKeysRemoved">Message Keys Removed</h3>
+		<ul>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LayoutingModeSwitchingAction_activate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.LayoutingModeSwitchingAction_deactivate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_activate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.ui.provider.Messages.ShowingModeSwitchingAction_deactivate</code>
+			</li>
+			<li>
+				<code>org.eclipse.sirius.diagram.Messages.UndoRedoCapableEMFCommandFactory_insertHorizontalBlankSpaceNotImplemented</code>
+			</li>
+		</ul>
+		<h2 id="sirius60">Translation Keys Changes in Sirius 6.0 (from Sirius 5.1)</h2>
+		<h3 id="MessageKeysAdded2">Message Keys Added</h3>
+		<ul>
+			<li>
 				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_sizeGroupLabel</code>
 			</li>
 			<li>
@@ -195,7 +334,7 @@
 				<code>org.eclipse.sirius.viewpoint.Messages.ModelingModelProvider_satusUnsavedDataWillBeLost</code>
 			</li>
 		</ul>
-		<h3 id="MessageKeysRemoved">Message Keys Removed</h3>
+		<h3 id="MessageKeysRemoved2">Message Keys Removed</h3>
 		<ul>
 			<li>
 				<code>org.eclipse.sirius.diagram.ui.provider.Messages.DiagramGeneralPreferencePage_scaleDiagramOnExport</code>
@@ -226,7 +365,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius51">Translation Keys Changes in Sirius 5.1 (from Sirius 5.0)</h2>
-		<h3 id="MessageKeysAdded2">Message Keys Added</h3>
+		<h3 id="MessageKeysAdded3">Message Keys Added</h3>
 		<ul>
 			<li>
 				<code>org.eclipse.sirius.diagram.sequence.Messages.Range_wrongArgument</code>
@@ -376,7 +515,7 @@
 				<code>org.eclipse.sirius.viewpoint.Messages.SessionFactoryImpl_ResourceTypeErrorMsg</code>
 			</li>
 		</ul>
-		<h3 id="MessageKeysRemoved2">Message Keys Removed</h3>
+		<h3 id="MessageKeysRemoved3">Message Keys Removed</h3>
 		<ul>
 			<li>
 				<code>org.eclipse.sirius.viewpoint.provider.Messages.DeleteRepresentationAction_message</code>
@@ -392,7 +531,7 @@
 			</li>
 		</ul>
 		<h2 id="sirius50">Translation Keys Changes in Sirius 5.0 (from Sirius 4.1)</h2>
-		<h3 id="MessageKeysAdded3">Message Keys Added</h3>
+		<h3 id="MessageKeysAdded4">Message Keys Added</h3>
 		<ul>
 			<li>
 				<code>org.eclipse.sirius.common.acceleo.aql.business.Messages.AQLInterpreter_errorWithExpression</code>
@@ -785,7 +924,7 @@
 				<code>org.eclipse.sirius.viewpoint.Messages.SessionInterpreter_evaluationError</code>
 			</li>
 		</ul>
-		<h3 id="MessageKeysRemoved3">Message Keys Removed</h3>
+		<h3 id="MessageKeysRemoved4">Message Keys Removed</h3>
 		<ul>
 			<li>
 				<code>org.eclipse.sirius.editor.properties.Messages.ImportingDefaultPropertiesViewDescriptionCommand_text</code>
diff --git a/doc/images/popupMenuAfter.png b/doc/images/popupMenuAfter.png
new file mode 100644
index 0000000..3256fd5
--- /dev/null
+++ b/doc/images/popupMenuAfter.png
Binary files differ
diff --git a/doc/images/popupMenuBefore.png b/doc/images/popupMenuBefore.png
new file mode 100644
index 0000000..4714c4d
--- /dev/null
+++ b/doc/images/popupMenuBefore.png
Binary files differ
diff --git a/doc/index.html b/doc/index.html
index 5dd5843..da226b6 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -109,7 +109,7 @@
     </div>
 
     <div class="clear"></div>
-    <p><em>Note:</em> This documentation refers to the latest major release of Sirius, version 6.0. For documentation corresponding to previous releases, see <a href="5.1.x/index.html">5.1.x</a>, <a href="5.0.x/index.html">5.0.x</a>, <a href="4.1.x/index.html">4.1.x</a>, <a href="4.0.x/index.html">4.0.x</a>, <a href="3.1.x/index.html">3.1.x</a>, see <a href="3.0.x/index.html">3.0.x</a>, <a href="2.0.x/index.html">2.0.x</a>, <a href="1.0.x/index.html">1.0.x</a>, or <a href="0.9/index.html">0.9</a>.</p>
+    <p><em>Note:</em> This documentation refers to the latest major release of Sirius, version 6.1. For documentation corresponding to previous releases, see <a href="6.0.x/index.html">6.0.x</a>, <a href="5.1.x/index.html">5.1.x</a>, <a href="5.0.x/index.html">5.0.x</a>, <a href="4.1.x/index.html">4.1.x</a>, <a href="4.0.x/index.html">4.0.x</a>, <a href="3.1.x/index.html">3.1.x</a>, see <a href="3.0.x/index.html">3.0.x</a>, <a href="2.0.x/index.html">2.0.x</a>, <a href="1.0.x/index.html">1.0.x</a>, or <a href="0.9/index.html">0.9</a>.</p>
     <div class="clear"></div>
     <p>For further information, please visit our website at <a href="http://www.eclipse.org/sirius/" target="_blank">www.eclipse.org/sirius</a>.</p>
   </body>
diff --git a/doc/specifier/diagrams/Diagrams.html b/doc/specifier/diagrams/Diagrams.html
index 3e693bf..c95764c 100644
--- a/doc/specifier/diagrams/Diagrams.html
+++ b/doc/specifier/diagrams/Diagrams.html
@@ -1637,8 +1637,193 @@
 			</a> and 
 			<a href="#external_java_action">
 				<em>External Java Action</em>
-			</a> tools. Which ones are visible when the menu is opened depend on the preconditions of these actions, which can thus be activated or not depending on the currently selected element.
+			</a> tools. Which ones are visible when the menu is opened depend on the preconditions of these actions, which can thus be activated or not depending on the currently selected element. Actions can be grouped using the 
+			<a href="#group">
+				<em>Group Menu</em>
+			</a>.
 		</p>
+		<h4 id="group">Group Menu</h4>
+		<p>Graphically, each 
+			<em>Group Menu</em> is separated by an horizontal line between several menus and/or actions:
+			<br/>
+			<img border="0" src="images/groupSeparator.png"/>
+		</p>
+		<p>The group has an 
+			<em>id</em>. This id can be an id of an existing group. In this case, all menus and actions defined in this group will be added in the existing group.
+			<br/>The group also has a 
+			<em>location URI</em>. This is an URI specification that defines the insertion point at which the group will be added. The format for the URI is comprised of two basic parts:
+		</p>
+		<ul>
+			<li>Scheme: One of &#8220;menu&#8221;, &#8220;tabbar&#8221;. Indicates the type of the manager used to handle the contributions.</li>
+			<li>Id: This is either the id of an existing menu or tabbar menu.</li>
+		</ul>
+		<p>Currently, it is not possible to add a group after or before a specific existing group. It is added at the end of the menu having the corresponding 
+			<em>id</em>.
+			<br/>For menu scheme, the following chapter details the ids of existing group and menu (to add new actions or groups in existing menus or groups).
+			<br/>For tabbar sheme, only Select menu can be completed with new groups. The complete location URI to use is &#8220;tabbar:selectMenu&#8221;. To add actions in the same group of the existings actions, you must use the id &#8220;selectGroup&#8221; for the declared group.
+		</p>
+		<p>Here is some examples:</p>
+		<ul>
+			<li>Define new group at the end of the main contextual menu: The location URI is &#8220;menu&#8221; or &#8220;menu:root&#8221;.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupAtEndOfContextualMenu.png"/>
+		</p>
+		<ul>
+			<li>Define new group at the end of an existing menu: The location URI is &#8220;menu:idOfExistingMenu&#8221;, for example &#8220;menu:editMenu&#8221;.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupAtEndOfExistingMenu.png"/>
+		</p>
+		<ul>
+			<li>Add actions or menus in an existing group: The location URI is &#8220;menu:idOfExistingMenu&#8221; and the id of the group is an id of an existing group, for example &#8220;locationURI=menu:editMenu&#8221; and &#8220;id=copyGroup&#8221;.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupUsingAnExistingGroup.png"/>
+		</p>
+		<ul>
+			<li>Specific case with a DDiagramElement selected, to add an action in the arrangeGroup of Layout menu, you must use this description (locationURI of groups is blank):</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupUsingAnExistingGroupOfLayoutMenu.png"/>
+		</p>
+		<ul>
+			<li>Specific case with a DDiagram selected, to add an action in the myArrangeGroup of Layout menu, you must use this description (locationURI of groups is blank):</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupUsingAnExistingGroupOfDDiagramLayoutMenu.png"/>
+		</p>
+		<ul>
+			<li>Define new group in a new menu: The location URI must be blank. 
+				<em>GroupMenu</em> is defined explicitly under a 
+				<em>PopupMenu</em>.
+			</li>
+		</ul>
+		<p>
+			<img border="0" src="images/newGroupInNewMenu.png"/>
+		</p>
+		<ul>
+			<li>Add a group in the Select All drop down menu of tabbar: The location URI is &#8220;tabbar:selectMenu&#8221;. Only Select menu is available for tabbar.</li>
+		</ul>
+		<p>
+			<img border="0" src="images/groupInTabbar.png"/>
+		</p>
+		<p>
+			<em>Note:</em> If your VSM is in the runtime environment workspace to do dynamic development of your VSM, the changes are not systematically reflected in the menu. A selection change may be necessary (to rebuild the menu).
+		</p>
+		<h5 id="Idofexistingmenusandgroups">Id of existing menus and groups</h5>
+		<p>This chapter lists the ids of existing menus and groups in a Sirius diagram representation. It must be used for the location URI or the id of 
+			<em>Group Menu</em>.
+		</p>
+		<p>
+			<b>Contextual menu for a diagram element</b> 
+		</p>
+		<p>
+			<img border="0" src="images/siriusDefaultDiagramElementContextualMenu.png"/>
+		</p>
+		<p>Corresponding Ids:</p>
+		<ul>
+			<li>Group editGroup
+				<ul>
+					<li>Menu Edit (id=editMenu)
+						<ul>
+							<li>Group copyGroup</li>
+							<li>Group copyFormatGroup</li>
+							<li>Group deleteFromGroup</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>Group filterFormatGroup
+				<ul>
+					<li>Menu 
+						<del>Show/Hide</del> (id=org.eclipse.sirius.diagram.ui.popup.hideReveal): Not available as it is contributed after by Sirius
+					</li>
+					<li>Menu Format (id=formatMenu)
+						<ul>
+							<li>Group fontFillLineGroup
+								<ul>
+									<li>Menu Line Width (id=lineWidthMenu)</li>
+									<li>Menu Line Type (id=lineTypeMenu)</li>
+									<li>Menu Arrow Type (id=arrowTypeMenu)</li>
+								</ul>
+							</li>
+							<li>Group miscellaneousGroup
+								<ul>
+									<li>Menu Layout (id=arrangeMenu): This is a specific case, this menu is moved later just before the format menu.
+										<ul>
+											<li>Group arrangeGroup</li>
+											<li>Group pinGroup</li>
+										</ul>
+									</li>
+									<li>Menu Align (id=alignMenu)
+										<ul>
+											<li>Group alignHorizontalGroup</li>
+											<li>Group alignVerticalGroup</li>
+										</ul>
+									</li>
+									<li>Menu Distribute (id=distributeMenu)
+										<ul>
+											<li>Group distributeHorizontalGroup</li>
+											<li>Group distributeVerticalGroup</li>
+										</ul>
+									</li>
+									<li>Menu Text Alignment (id=textAlignmentMenu)
+										<ul>
+											<li>Group textAlignmentGroup</li>
+										</ul>
+									</li>
+									<li>Menu Order (id=zorderMenu)
+										<ul>
+											<li>Group zorderGroup</li>
+										</ul>
+									</li>
+								</ul>
+							</li>
+							<li>Group sizeGroup</li>
+							<li>Group applyAppearanceGroup</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>Group additions (default group at the end)</li>
+		</ul>
+		<p>
+			<b>Contextual menu for the diagram</b> 
+		</p>
+		<p>
+			<img border="0" src="images/siriusDefaultDiagramContextualMenu.png"/>
+		</p>
+		<p>Corresponding Ids:</p>
+		<ul>
+			<li>Group editGroup
+				<ul>
+					<li>Menu Edit (id=editMenu)
+						<ul>
+							<li>Group copyGroup</li>
+							<li>Group copyFormatGroup</li>
+							<li>Group deleteFromGroup</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>Group filterFormatGroup
+				<ul>
+					<li>Menu Select (id=selectMenu)
+						<ul>
+							<li>Group selectGroup</li>
+						</ul>
+					</li>
+					<li>Menu Layout (id=arrangeMenu): This is a specific case, this menu is moved later just before the format menu.
+						<ul>
+							<li>Group myArrangeGroup</li>
+						</ul>
+					</li>
+				</ul>
+			</li>
+			<li>Group org.eclipse.sirius.diagram.ui.popup.otherActions: Not available as it is contributed after by Sirius</li>
+			<li>Group additions (default group at the end)</li>
+		</ul>
 		<h4 id="operation_action">Operation Action</h4>
 		<p>This tool can be used to define an operation which will appear as an entry in the context menu (or in a sub-menu if defined inside a 
 			<em>Popup Menu</em> element). When invoked, the body of the action is executed with the 
diff --git a/doc/specifier/diagrams/images/groupAtEndOfContextualMenu.png b/doc/specifier/diagrams/images/groupAtEndOfContextualMenu.png
new file mode 100644
index 0000000..8ffa4a6
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupAtEndOfContextualMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupAtEndOfExistingMenu.png b/doc/specifier/diagrams/images/groupAtEndOfExistingMenu.png
new file mode 100644
index 0000000..bec1274
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupAtEndOfExistingMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupInTabbar.png b/doc/specifier/diagrams/images/groupInTabbar.png
new file mode 100644
index 0000000..9a7f309
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupInTabbar.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupSeparator.png b/doc/specifier/diagrams/images/groupSeparator.png
new file mode 100644
index 0000000..a54ef14
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupSeparator.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupUsingAnExistingGroup.png b/doc/specifier/diagrams/images/groupUsingAnExistingGroup.png
new file mode 100644
index 0000000..5ab5c24
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupUsingAnExistingGroup.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfDDiagramLayoutMenu.png b/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfDDiagramLayoutMenu.png
new file mode 100644
index 0000000..b42b599
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfDDiagramLayoutMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfLayoutMenu.png b/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfLayoutMenu.png
new file mode 100644
index 0000000..ba12694
--- /dev/null
+++ b/doc/specifier/diagrams/images/groupUsingAnExistingGroupOfLayoutMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/newGroupInNewMenu.png b/doc/specifier/diagrams/images/newGroupInNewMenu.png
new file mode 100644
index 0000000..ed13f3e
--- /dev/null
+++ b/doc/specifier/diagrams/images/newGroupInNewMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/siriusDefaultDiagramContextualMenu.png b/doc/specifier/diagrams/images/siriusDefaultDiagramContextualMenu.png
new file mode 100644
index 0000000..b76687c
--- /dev/null
+++ b/doc/specifier/diagrams/images/siriusDefaultDiagramContextualMenu.png
Binary files differ
diff --git a/doc/specifier/diagrams/images/siriusDefaultDiagramElementContextualMenu.png b/doc/specifier/diagrams/images/siriusDefaultDiagramElementContextualMenu.png
new file mode 100644
index 0000000..249268d
--- /dev/null
+++ b/doc/specifier/diagrams/images/siriusDefaultDiagramElementContextualMenu.png
Binary files differ
diff --git a/doc/specifier/general/ToolsSpecification.html b/doc/specifier/general/ToolsSpecification.html
index bc453af..ae2687b 100644
--- a/doc/specifier/general/ToolsSpecification.html
+++ b/doc/specifier/general/ToolsSpecification.html
@@ -33,7 +33,7 @@
 			<em>Force Refresh</em> flag to force Sirius to perform a complete refresh of the whole diagram after the tool is executed. This ensures a perfect synchronization of the graphical representation with the state of the underlying model, possibly at the cost of performance and reactivity on big diagrams. The refresh will be effective only on the current diagram and not on all opened diagrams.
 		</p>
 		<p>
-			<strong>Selection after tool execution.</strong> The 
+			<strong id="selectionAfterToolExecution">Selection after tool execution.</strong> The 
 			<em>Elements to select</em> and 
 			<em>Inverse Selection Order</em> flags can be used to defined what is selected in the active editor after tool execution. 
 			<br/>By default, only the top level created elements are selected.
@@ -77,6 +77,27 @@
 				</ul>
 			</li>
 		</ul>
+		<p>Some services exist natively in Sirius and can be used to contribute new select all actions for diagram. These services are all in the class 
+			<code>org.eclipse.sirius.diagram.ui.tools.api.interpreter.StandardDiagramServices</code>:
+		</p>
+		<ul>
+			<li>
+				<code>stdGetViewsRepresentingSameEType(DSemanticDiagram, List&lt;DSemanticDecorator&gt;)</code>: Return the list of 
+				<code>DSemanticDecorator</code> representing semantic element with same EType as the current selected diagram elements.
+			</li>
+			<li>
+				<code>stdGetViewsWithSameMapping(DSemanticDiagram, List&lt;DSemanticDecorator&gt;)</code>: Return the list of 
+				<code>DSemanticDecorator</code> having the same mappings as the current selected diagram elements.
+			</li>
+			<li>
+				<code>stdGetViewsRepresentingSelectedType(DSemanticDiagram)</code>: Return the list of 
+				<code>DSemanticDecorator</code> in the current diagram representing semantic element having the EType provided by the end-user through a dialog box. This dialog box can be improved. There is currently no completion, neither validation.
+			</li>
+			<li>
+				<code>stdGetViewsOfExpression(DSemanticDiagram)</code>: Return the list of 
+				<code>DSemanticDecorator</code> corresponding to the evaluation of an expression written by the end-user in a dialog box. This dialog box can be improved. There is currently no completion, neither validation.
+			</li>
+		</ul>
 		<p>
 			<strong>Tools' Body and Variables.</strong> The actual effect of a tool is defined inside its 
 			<em>body</em>, which is usually represented by a 
diff --git a/doc/specifier/tables/Tables.html b/doc/specifier/tables/Tables.html
index a7c428e..3850a5a 100644
--- a/doc/specifier/tables/Tables.html
+++ b/doc/specifier/tables/Tables.html
@@ -125,7 +125,7 @@
 		</p>
 		<p>Finally, the 
 			<em>Initial Header Column Width</em> (
-			<em>Advanced</em> category) is specific to table descriptions (both edition tables and cross tables). It can be used to specify the default size (in pixels) of the left-most column of the table, which contains the labels of the elements represented by each line. If the value if 0 (the default), the column width will be computed from the initial content when the table is created.
+			<em>Advanced</em> category) is specific to table descriptions (both edition tables and cross tables). It can be used to specify the default size (in pixels) of the left-most column of the table, which contains the labels of the elements represented by each line. If the value is 0 (the default), the column width will be computed from the initial content when the table is created. In case of edition tables, if the value is -1, the header Column is hidden. In case of cross tables, -1 value has the same behavior than 0 value.
 		</p>
 		<h3 id="table_tools">Table Tools</h3>
 		<p>Some tools which apply to the whole table are specified directly inside the 
diff --git a/doc/user/diagrams/Diagrams.html b/doc/user/diagrams/Diagrams.html
index bdd4ce0..8ad64ec 100644
--- a/doc/user/diagrams/Diagrams.html
+++ b/doc/user/diagrams/Diagrams.html
@@ -24,6 +24,11 @@
 							</li>
 							<li>
 								<a href="#ManagingDiagrams">Managing Diagrams</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#RulersGrid">Rulers &amp; Grid</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#Movingthediagram">Moving the diagram</a>
@@ -33,21 +38,67 @@
 							</li>
 							<li>
 								<a href="#Resizingelements">Resizing elements</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Compartments">Compartments</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#Movingelements">Moving elements</a>
 							</li>
 							<li>
 								<a href="#Manageedges">Manage edges</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Snapbackedgelabels">Snap back edge labels</a>
+									</li>
+									<li>
+										<a href="#Movebendpoints">Move bend-points</a>
+									</li>
+									<li>
+										<a href="#RemoveBendpoints">Remove Bend-points</a>
+									</li>
+									<li>
+										<a href="#straighten_an_edge">Straighten edges</a>
+									</li>
+									<li>
+										<a href="#move_edge_group">Move edge group</a>
+									</li>
+									<li>
+										<a href="#edge_label_attachment">Display attachment link between edge and its labels</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#distribute">Distribute elements</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Firstandlastshapes">First and last shapes</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#reset_origin">Reset Diagram or Container Origin</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Specificcases">Specific cases</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#Hidingelements">Hiding elements</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Hidinglabels">Hiding labels</a>
+									</li>
+									<li>
+										<a href="#HidingiconsoflabelsonShapesorConnectors">Hiding icons of labels on Shapes or Connectors</a>
+									</li>
+									<li>
+										<a href="#Collapsingcompartments">Collapsing compartments</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#Validatingthemodel">Validating the model</a>
@@ -63,27 +114,87 @@
 							</li>
 							<li>
 								<a href="#PortshiftingPortDragandDrop">Port shifting - Port Drag and Drop</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Selectionhandles">Selection handles</a>
+									</li>
+									<li>
+										<a href="#Portshiftinganddraganddrop">Port shifting and 'drag and drop'</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#copy_paste_format">Copy/paste of format</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#PasteLayout">Paste Layout</a>
+									</li>
+									<li>
+										<a href="#PasteStyle">Paste Style</a>
+									</li>
+									<li>
+										<a href="#PasteFormat">Paste Format</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#diagram_element_pinning">Diagram element pinning</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Introduction">Introduction</a>
+									</li>
+									<li>
+										<a href="#Pinunpinactions">Pin/unpin actions</a>
+									</li>
+									<li>
+										<a href="#Configuration">Configuration</a>
+									</li>
+									<li>
+										<a href="#PinUnpinonNotes">Pin/Unpin on Notes</a>
+									</li>
+									<li>
+										<a href="#PinUnpinelementsusingatreeviewer">Pin/Unpin elements using a tree viewer</a>
+									</li>
+								</ol>
 							</li>
 							<li>
-								<a href="#Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</a>
+								<a href="#edit_modes">Edit modes</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Standardmode">Standard mode</a>
+									</li>
+									<li>
+										<a href="#Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</a>
+									</li>
+									<li>
+										<a href="#Visibilitymodechangediagramelementvisibilitywithoutmodifyingsemanticmodels">Visibility mode: change diagram element visibility without modifying semantic models</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#synchronized_diagram">Synchronized/Unsynchronized diagram</a>
 							</li>
 							<li>
 								<a href="#UsingRegularExpressionstoFindDiagramElements">Using Regular Expressions to Find Diagram Elements</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#Rules">Rules</a>
+									</li>
+									<li>
+										<a href="#Examples">Examples</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#quick_outline">Quick Outline</a>
 							</li>
 							<li>
 								<a href="#styleCustomizations">Style customizations </a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#routingStylePref">Customize edge routing style from preferences</a>
+									</li>
+								</ol>
 							</li>
 						</ol>
 					</li>
@@ -95,9 +206,34 @@
 							</li>
 							<li>
 								<a href="#Palette">Palette</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#ManagingThePalette">Managing The Palette</a>
+									</li>
+									<li>
+										<a href="#standardToolId">Standard Tools</a>
+									</li>
+									<li>
+										<a href="#PaletteContents">Palette Contents</a>
+									</li>
+									<li>
+										<a href="#UsingTheToolsFromThePalette">Using The Tools From The Palette</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#ref_tabbar">Tab-bar</a>
+								<ol style="list-style: disc;">
+									<li>
+										<a href="#ref_tabbar_diagram">Tab-bar Actions Available on Diagram</a>
+									</li>
+									<li>
+										<a href="#ref_tabbar_element">Tab-bar Actions Available on Diagram Elements</a>
+									</li>
+									<li>
+										<a href="#ref_tabbar_4x">Tab-bar in Eclipse 4.2 and 4.3</a>
+									</li>
+								</ol>
 							</li>
 							<li>
 								<a href="#PropertiesView">Properties View</a>
@@ -885,7 +1021,19 @@
 		<p>	
 			<img border="0" src="images/diagram_editor_pin_toolbar_activated.png"/>
 		</p>
-		<h3 id="Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</h3>
+		<h3 id="edit_modes">Edit modes</h3>
+		<p>Different diagram edit modes are available. Each mode focus on a specific way of editing diagrams. Modes are accessible from a dropdown menu in the tabbar when no diagram element is selected:
+			<br/>
+			<img border="0" src="images/editModesDropdown.png"/>
+		</p>
+		<h4 id="Standardmode">Standard mode</h4>
+		<p>This is the default mode used to create diagrams and populate them. In this mode, there is no restriction regarding available tools and semantic changes.
+			<br/>To go back to this mode after changing it, you just have to select it from the tabbar:
+		</p>
+		<p>
+			<img border="0" src="images/standardModeActivation.png"/>
+		</p>
+		<h4 id="Layoutingmodearrangeyourdiagramswithoutmodifyingsemanticmodels">Layouting mode: arrange your diagrams without modifying semantic models</h4>
 		<p>When you only want to do layout operations (e.g. arrange a diagram by moving nodes or edges), you may modify the semantic models without paying attention. For example, when organizing bordered nodes, you may change the container of the semantic element, without wanting do so.</p>
 		<p>When this mode is enabled, the following operations are changed:</p>
 		<ul>
@@ -897,11 +1045,14 @@
 			<strong>Layout Mode is not a &#8220;read-only&#8221; mode and does not guarantee that the semantic model is not modified when it is enabled.</strong>
 		</p>
 		<p>
-			<strong>Layouting mode</strong> can be activated/disabled on a diagram through the tab bar (when there is no selected element) : 
+			<strong>Layouting mode</strong> can be activated on a diagram through the tab bar (when there is no selected element) : 
 		</p>
 		<p>
 			<img border="0" src="images/layouting_mode_tabbar_activate.png"/>
 		</p>
+		<p>To deactivate the mode you just have to select the 
+			<em>Standard mode</em>.
+		</p>
 		<p>The diagram&#8217;s status line then indicates that the diagram is currently in 
 			<em>Layouting mode</em> : 
 		</p>
@@ -916,6 +1067,45 @@
 		<p>When a diagram is closed, the 
 			<em>Layouting mode</em> is automatically disabled.
 		</p>
+		<h4 id="Visibilitymodechangediagramelementvisibilitywithoutmodifyingsemanticmodels">Visibility mode: change diagram element visibility without modifying semantic models</h4>
+		<p>This mode allows to visualize all diagram elements either visible or invisible because of a filter or a previous hiding action execution on the element. Invisible elements will be shown with transparency:</p>
+		<p>
+			<img border="0" src="images/show_hide_mode_example.png"/>
+		</p>
+		<p>This mode also allows to change visibility of diagram elements.
+			<br/>Indeed, when you double click on a visible diagram element, it will hide it like the &#8220;hide&#8221; menu action. And if not visible, it will show it like the &#8220;show&#8221; menu action. 
+			<br/>Additional features of the double click are the following:
+		</p>
+		<ul>
+			<li>If the diagram element to make visible is contained by other invisible elements, then all its parent elements will be made visible.</li>
+			<li>If the diagram element to make visible has children, these children will be made visible if they are not hidden. Otherwise they will be displayed with transparency.</li>
+			<li>A double click on an edge to show will also show its source and target.</li>
+			<li>If a diagram element is invisible because a filter hiding is activated, then you will be asked if you want to deactivate this filter to make it visible after a double click on it.</li>
+			<li>If a diagram element is invisible because the layer showing it is not activated, then you will be asked if you want to activate this layer to make it visible after a double click on it.</li>
+		</ul>
+		<p>It is easy to do semantics changes whereas you only want to change diagram element visibility.
+			<br/>So when this mode is enabled, the following operations are changed:
+		</p>
+		<ul>
+			<li>direct edit is disabled on all elements;</li>
+			<li>moving elements by dragging them can be used to change their position, but will never trigger a drag and drop operation;</li>
+			<li>moving the extremity of an edge to adjust its connection point (to the source or target element) is possible, but will never trigger a reconnection operation.</li>
+		</ul>
+		<p>Note that other operations which can change the semantic model are still possible. Only the operations listed above, which are easy to misuse, are disabled/modified. 
+			<strong>Visibility mode is not a &#8220;read-only&#8221; mode and does not guarantee that the semantic model is not modified when it is enabled.</strong>
+		</p>
+		<p>
+			<strong>Visibility mode</strong> can be activated on a diagram through the tabbar (when there is no selected element) : 
+		</p>
+		<p>
+			<img border="0" src="images/show_hide_mode_tabbar_activate.png"/>
+		</p>
+		<p>To deactivate the mode you just have to select the 
+			<em>Standard mode</em>.
+		</p>
+		<p>When a diagram is closed, the 
+			<em>Visibility mode</em> is automatically disabled.
+		</p>
 		<h3 id="synchronized_diagram">Synchronized/Unsynchronized diagram</h3>
 		<p>The contextual menu on the background of the diagram provides an action to toggle between 
 			<i>Synchronized</i> / 
@@ -1155,22 +1345,23 @@
 			<em>Zoom out</em>) button is active, clicking anywhere on the diagram will increment (resp. decrement) the zoom level by 25%. The current zoom level is visible in the tabbar when no diagram element is selected (see the section on the tabbar buttons for more ways to control the zoom level).
 		</p>
 		<p id="notes">
-			<i>Notes, Link Notes and Note attachments</i>. All Sirius diagrams support the creation of notes and text elements, which can be attached to diagram elements. These elements are purely graphical annotations, and have no effect on the semantic model. The tools used to create them are available in a combo-box in the palette&#8217;s top row. By default, the 
+			<i>Notes, Representation Links and Note attachments</i>. All Sirius diagrams support the creation of notes and text elements, which can be attached to diagram elements. These elements are purely graphical annotations, and have no effect on the semantic model. The tools used to create them are available in a combo-box in the palette&#8217;s top row. By default, the 
 			<em>Note</em> tool (represented by a yellow sticky note) is selected. If you click on the small arrow next to the sticky note, a menu appears where you can select one of the available tools: 
 			<em>Note</em>, 
-			<em>Link Note</em>, 
+			<em>Representation Link</em>, 
 			<em>Text</em> or 
 			<em>Note attachment</em>.
 		</p>
 		<p>
 			<em>Notes</em>, 
-			<em>Link Notes</em> and 
+			<em>Representation Links</em> and 
 			<em>Text</em> elements are created in a similar way: either a single click somewhere on the diagram (which creates an element with a default size), or a click-drag to create the element with a custom initial size. Once created, one can edit the text inside the note or text zone usual the standard &#8220;direct edit&#8221; behavior (
 			<em>F2</em>, a slow double click, or by directly starting to enter alpha-numeric text). The only difference between notes and text zones is the visual presentation; notes have a yellow background (by default) and a border which represents a sticky not with a folded top-right corner. 
 		</p>
 		<p>A 
-			<em>Link Note</em> is a special kind of note which references any existing representation in the project. When creating a link note, a the target representation must be selected from a dialog. The link note displays the name of the target representation and its icon as the note header. It is possible to navigate to the target representation by double clicking on a link note. When the targeted representation is deleted, all link notes that reference it are deleted automatically. Just like normal notes, link notes have a text field for free text and can be attached to other elements with the note attachment tool. It is also possible to set a new target representation for an existing link note by selecting 
-			<em>Set target representation ...</em> from the link note&#8217;s context menu.
+			<em>Representation Link</em> is a special kind of note which references any existing representation in the project. When creating a representation link, a the target representation must be selected from a dialog. The representation link displays the name of the target representation and its icon as the note header. It is possible to navigate to the target representation by double clicking on a representation link. When the targeted representation is deleted, representation links that reference it are 
+			<strong>not</strong> deleted. Instead, such representation links show the text &#8220;Broken representation link&#8221; in their header, and have a small red cross as their icon. Just like normal notes, representation links have a text field for free text and can be attached to other elements with the note attachment tool. It is also possible to set a new target representation for an existing representation link by selecting 
+			<em>Set target representation ...</em> from the representation link&#8217;s context menu.
 		</p>
 		<p>
 			<em>Note attachments</em> can be created to link either notes or text zone to diagram elements (including other notes and text attachments). To create an attachment, activate the tool and then click once on the source element and once on the target element. You can also click and drag from the source to the target elements.
@@ -1580,6 +1771,12 @@
 		</p> 
 		<img border="0" src="images/preferences_sirius_diagram_appearance.png"/>
 		<p>The 
+			<em>Display viewpoint colors</em> preference allows, if checked, to display, in the color Palette, the fixed colors that are defined in the activated viewpoints.
+			<br/>The viewpoint colors are displayed after the grayed colors and before the colors of the rainbow.
+			<br/>  
+			<img border="0" src="images/PropertiesView_Appearance_ColorPalette_ViewpointColors.png"/>
+		</p>
+		<p>The 
 			<em>Authorize decoration overlapping</em> preference lets, if checked, the decorations of different positions overlapping each other or displaying outside the diagram element bounding. If unchecked, decorations may be grouped in a 
 			<em>list decorator</em> to avoid overlapping.
 		</p>
diff --git a/doc/user/diagrams/images/PropertiesView_Appearance_ColorPalette_ViewpointColors.png b/doc/user/diagrams/images/PropertiesView_Appearance_ColorPalette_ViewpointColors.png
new file mode 100644
index 0000000..4801308
--- /dev/null
+++ b/doc/user/diagrams/images/PropertiesView_Appearance_ColorPalette_ViewpointColors.png
Binary files differ
diff --git a/doc/user/diagrams/images/editModesDropdown.png b/doc/user/diagrams/images/editModesDropdown.png
new file mode 100644
index 0000000..3c908fb
--- /dev/null
+++ b/doc/user/diagrams/images/editModesDropdown.png
Binary files differ
diff --git a/doc/user/diagrams/images/layouting_mode_tabbar_activate.png b/doc/user/diagrams/images/layouting_mode_tabbar_activate.png
index c6e8330..289b1d0 100644
--- a/doc/user/diagrams/images/layouting_mode_tabbar_activate.png
+++ b/doc/user/diagrams/images/layouting_mode_tabbar_activate.png
Binary files differ
diff --git a/doc/user/diagrams/images/preferences_sirius_diagram_appearance.png b/doc/user/diagrams/images/preferences_sirius_diagram_appearance.png
index fa5fc45..aad1b29 100644
--- a/doc/user/diagrams/images/preferences_sirius_diagram_appearance.png
+++ b/doc/user/diagrams/images/preferences_sirius_diagram_appearance.png
Binary files differ
diff --git a/doc/user/diagrams/images/show_hide_mode_example.png b/doc/user/diagrams/images/show_hide_mode_example.png
new file mode 100644
index 0000000..563ce18
--- /dev/null
+++ b/doc/user/diagrams/images/show_hide_mode_example.png
Binary files differ
diff --git a/doc/user/diagrams/images/show_hide_mode_tabbar_activate.png b/doc/user/diagrams/images/show_hide_mode_tabbar_activate.png
new file mode 100644
index 0000000..25972cc
--- /dev/null
+++ b/doc/user/diagrams/images/show_hide_mode_tabbar_activate.png
Binary files differ
diff --git a/doc/user/diagrams/images/standardModeActivation.png b/doc/user/diagrams/images/standardModeActivation.png
new file mode 100644
index 0000000..6d227b2
--- /dev/null
+++ b/doc/user/diagrams/images/standardModeActivation.png
Binary files differ
diff --git a/doc/user/general/Modeling Project.html b/doc/user/general/Modeling Project.html
index ae3fb17..05aa45c 100644
--- a/doc/user/general/Modeling Project.html
+++ b/doc/user/general/Modeling Project.html
@@ -158,7 +158,18 @@
 			<a href="../../Release_Notes.html">release notes</a> for more details.
 		</p>
 		<h3 id="Migration">Migration of Existing Representation Files</h3>
-		<p>Representation files are now automatically migrated when opened. This migration is transparent for the end-user. While a representation file is not saved, the automatic migration will be replayed at the next opening.</p>
+		<p>By default, representation and design files are now automatically migrated when opened. This migration is transparent for the end-user. While a representation file is not saved, the automatic migration will be replayed at the next opening.</p>
+		<p>You can activate a preference to be asked to save resources when a migration has been done. It is available in Sirius preferences page:</p> 
+		<img border="0" src="images/migrationPreference.png"/>
+		<p>When checked, a dialog asking you to save migrated resources is shown in the following situations if a migration was necessary:</p>
+		<ul>
+			<li>When you open or expand a modeling project not yet loaded.</li>
+			<li>When you open the session by double clicking on the aird or VSM or by using the contextual menu 
+				<em>open</em>.
+			</li>
+			<li>When you open your bundle whereas a Sirius editor was opened previously.</li>
+		</ul>
+		<p>The side effect of this operation is that your model will not be openable in previous version of the product. So you should backup your models if you still want to be able to open it in the previous version.</p>
 		<h3 id="UICHanges">User Interface Changes</h3>
 		<p>You will notice some radical changes in the user interface. The most important change is the disappearance of the 
 			<em>Model Content</em> view. It has been replaced with a streamlined UI which integrates directly into the Eclipse explorer view. The notion of &#8220;Local Session&#8221; has disappeared from the user interface; its management has been made as transparent as possible so you do not have to deal with it except in some very specific circumstances.
diff --git a/doc/user/general/images/migrationPreference.png b/doc/user/general/images/migrationPreference.png
new file mode 100644
index 0000000..6f01602
--- /dev/null
+++ b/doc/user/general/images/migrationPreference.png
Binary files differ
diff --git a/doc/user/sequences/Sequence Diagrams.html b/doc/user/sequences/Sequence Diagrams.html
index 7a0349d..154cdf0 100644
--- a/doc/user/sequences/Sequence Diagrams.html
+++ b/doc/user/sequences/Sequence Diagrams.html
@@ -141,8 +141,12 @@
 			<em>Arrange All</em> command which launches an automatic layout of all the elements on a diagram has been completely customized for sequence diagrams. Arranging a sequence diagram will keep the relative positions of all the elements, but reduce any un-needed vertical or horizontal spaces. All elements will be resized to the minimum size necessary, and &#8220;packed&#8221; towards the top-left corner of the diagram. This results in a diagram which uses the minimum space required to present all the elements, while keeping enough white-space between them to be easy to read.
 		</p>
 		<h3 id="insert_vertical_blank_space">Manually insert vertical blank space</h3>
-		<p>It is also possible to manually insert vertical blank space to facilitate the organization of messages or to add new events in a sequence diagram. This feature is available on the vertical ruler by dragging the mouse with the Ctrl key pressed.
-			<br/>Below, an example where user inserts blank space before message m3:
+		<p>It is also possible to manually insert vertical blank space to facilitate the organization of messages or to add new events in a sequence diagram. </p>
+		<p>This feature is available in two different contexts: </p>
+		<ul>
+			<li>on the vertical ruler by dragging the mouse with the Ctrl key pressed.</li>
+		</ul>
+		<p>Below, an example where user inserts blank space before message m3:
 			<br/>
 			<img alt="Example where user inserts blank space before message m3" title="Example where user inserts blank space before message m3" border="0" src="images/insert_vertical_blank_space.png"/>
 		</p>
@@ -150,6 +154,9 @@
 			<em>Show Ruler</em> as explained in 
 			<a href="../diagrams/Diagrams.html#RulersGrid">Rulers &amp; Grid</a> chapter.
 		</p>
+		<ul>
+			<li>on standard edition mode by dragging the mouse anywhere in the canvas with the Ctrl+Shift keys pressed.</li>
+		</ul>
 		<h2 id="elements">Sequence Diagram Elements</h2>
 		<p>This section presents each type of elements specific to sequence diagrams which are supported by Sirius, and their specificities (if any). Note that not all sequence diagrams will support all kinds of elements; this depends on the diagram&#8217;s configuration.</p>
 		<h3 id="Lifelines">Life-lines</h3>
