<?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.3.4">Changes in Sirius 6.3.4</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="#sirius6.3.3">Changes in Sirius 6.3.3</a>
					</li>
					<li>
						<a href="#sirius6.3.2">Changes in Sirius 6.3.2</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="#sirius6.3.1">Changes in Sirius 6.3.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="#sirius6.3.0">Changes in Sirius 6.3.0</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#UserVisibleChanges4">User-Visible Changes</a>
							</li>
							<li>
								<a href="#SpecifierVisibleChanges">Specifier-Visible Changes</a>
							</li>
							<li>
								<a href="#DeveloperVisibleChanges4">Developer-Visible Changes</a>
							</li>
						</ol>
					</li>
					<li>
						<a href="#sirius6.2.2">Changes in Sirius 6.2.2</a>
					</li>
					<li>
						<a href="#sirius6.2.1">Changes in Sirius 6.2.1</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#DeveloperVisibleChanges5">Developer-Visible Changes</a>
							</li>
						</ol>
					</li>
					<li>
						<a href="#sirius6.2.0">Changes in Sirius 6.2.0</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#UserVisibleChanges5">User-Visible Changes</a>
							</li>
							<li>
								<a href="#SpecifierVisibleChanges2">Specifier-Visible Changes</a>
							</li>
							<li>
								<a href="#DeveloperVisibleChanges6">Developer-Visible Changes</a>
							</li>
						</ol>
					</li>
					<li>
						<a href="#sirius6.1.2">Changes in Sirius 6.1.2</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#UserVisibleChanges6">User-Visible Changes</a>
							</li>
							<li>
								<a href="#DeveloperVisibleChanges7">Developer-Visible Changes</a>
							</li>
						</ol>
					</li>
					<li>
						<a href="#sirius6.1.1">Changes in Sirius 6.1.1</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#Changesinorg.eclipse.sirius.diagram5">Changes in  @org.eclipse.sirius.diagram@</a>
							</li>
						</ol>
					</li>
					<li>
						<a href="#sirius6.1.0">Changes in Sirius 6.1.0</a>
						<ol style="list-style: disc;">
							<li>
								<a href="#UserVisibleChanges7">User-Visible Changes</a>
							</li>
							<li>
								<a href="#SpecifierVisibleChanges3">Specifier-Visible Changes</a>
							</li>
							<li>
								<a href="#DeveloperVisibleChanges8">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="#UserVisibleChanges8">User-Visible Changes</a>
							</li>
							<li>
								<a href="#SpecifierVisibleChanges4">Specifier-Visible Changes</a>
							</li>
							<li>
								<a href="#DeveloperVisibleChanges9">Developer-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.3.4">Changes in Sirius 6.3.4</h2>
		<h3 id="UserVisibleChanges">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-info">Modified</span> In properties views, the labels are correctly rendered again. There used to be a regression on recent versions of Eclipse which made changes in styling/theming. Sirius now includes an updated version of EEF (v2.1.5) which fixes [the issue](https://bugs.eclipse.org/bugs/show_bug.cgi?id=552626).</li>
		</ul>
		<h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
		<ul>
			<li>Sirius 6.3.4 is compatible with Eclipse 2020-09 (this required some internal changes to adapt to changes in the platform).</li>
			<li>EEF has been updated to version 2.1.5 which fixes </li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.tests.swtbot.support">Changes in 
			<code>org.eclipse.sirius.tests.swtbot.support</code>
		</h4>
		<ul>
			<li>The Sirius SWTBot test APIs have been updated to be compatible with SWTBot 3.0 final (in addition to SWTBot 3.0M2).</li>
		</ul>
		<h2 id="sirius6.3.3">Changes in Sirius 6.3.3</h2>
		<p>Sirius 6.3.3 fixes a single performance issue which only occurred in specific circumstances should not have any visible impact in normal use.</p>
		<h2 id="sirius6.3.2">Changes in Sirius 6.3.2</h2>
		<h3 id="UserVisibleChanges2">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-info">Modified</span> In diagrams, the display of the label of the compartments has been improved. When there is not enough space to display the label of the compartment container or the contained compartments, it is displayed on multiple lines. Refer to 
				<a href="user/diagrams/Diagrams.html#Compartments">Compartment section</a> for more information.
			</li>
		</ul>
		<p>A consequence is that the display of existing compartments in diagrams may be changed. When refreshing the existing diagram, the project may become dirty.</p>
		<ul>
			<li><span class="label label-info">Modified</span> In Sirius 6.3.1, the behavior for the labels of operands, in sequence diagrams, has been changed. Since Sirius 6.3.1, they are drawn on top of the rest of the diagram elements so that they are always completely visible. Since Sirius 6.3.2, this is now the same for labels of combined fragment. Indeed, the problem was the same:</li>
		</ul> 
		<img border="0" src="images/combined_fragment_label_before.png"/> With Sirius 6.3.2, the label is now on the top of execution: 
		<img border="0" src="images/combined_fragment_label_after.png"/>
		<h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
		<h4 id="Changesinorg.eclipse.sirius.common">Changes in  
			<code>org.eclipse.sirius.common</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> In the 
				<code>org.eclipse.sirius.common.package_meta_data</code> extension point, it is now possible for a given metamodel (nsURI) to declare some EClasses as potential DocumentRoots. This is needed with some XSD-derived metamodels which normally declare some of their containment references as transient to make sure Sirius will properly consider these classes (and their contents) as needing to be serialized. 
			</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 class 
				<code>org.eclipse.sirius.diagram.ui.graphical.figures.OverlayLabelsDrawerFigure</code> is a &#8220;virtual&#8221; figure that should be added to the 
				<code>DDiagramRootEditPart#OVERLAY_LAYER</code> and which paints all the overlay labels (instance of 
				<code>OverlayLabel</code>) on top of the rest of the diagram to make sure they are always readable. This figure is currently only used by sequence diagrams for operand labels(
				<code>org.eclipse.sirius.diagram.sequence.ui.tool.internal.edit.part.OperandEditPart</code>) and combined fragment labels (
				<code>org.eclipse.sirius.diagram.sequence.ui.tool.internal.edit.part.CombinedFragmentEditPart</code>). 
			</li>
			<li><span class="label label-success">Added</span> The class 
				<code>org.eclipse.sirius.diagram.ui.graphical.figures.OverlayLabel</code> is a special label that can be painted or not, on the OVERLAY layer, depending on the current context/layer.
			</li>
			<li><span class="label label-success">Added</span> A new field, 
				<code>useOverlayLabel</code>, has been added in 
				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart</code>. Its value can be changed with 
				<code>setUseOverlayLabel(boolean)</code> and accessed through 
				<code>useOverlayLabel()</code>. This new field allows to use an 
				<code>OverlayLabel</code> for the figure of this edit part.
			</li>
			<li><span class="label label-success">Added</span> A new constructor has been added for class 
				<code>org.eclipse.sirius.diagram.ui.tools.api.figure.GradientRoundedRectangle</code> to allow the use of 
				<code>OverlayLabel</code> for this kind of figure (
				<code>GradientRoundedRectangle(Dimension, int, View, boolean)</code>).
			</li>
		</ul>
		<h2 id="sirius6.3.1">Changes in Sirius 6.3.1</h2>
		<h3 id="UserVisibleChanges3">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> A new type of jump link has been added in Sirius 6.3.1. As reminder, a jump link is a way to graphically improve the way how 2 edges intersect. This new type is graphically represented by a blank line instead of the classical &#8220;jump&#8221;. This new type is documented in the 
				<a href="user/diagrams/Diagrams.html#Appearance">Appearance</a> section of edge Properties view.
			</li>
			<li><span class="label label-success">Added</span> New preferences have been added to allow to override the default values of jump links properties. They are documented in the 
				<a href="user/diagrams/Diagrams.html#Connections">Connections</a> section of the Preferences.
			</li>
			<li><span class="label label-info">Modified</span> When the end-user changes the routing style of an edge into Oblique style (from a different style), the edge is now transformed into an oblique line without intermediate bendpoints.</li>
			<li><span class="label label-info">Modified</span> In sequence diagrams, the labels of operands (sections inside combined fragments) could be partially hidden by other diagram elements, for exemple executions:</li>
		</ul> 
		<img border="0" src="images/operand_label_before.png"/> They are now drawn on top of the rest of the diagram elements so that they are always completely visible: 
		<img border="0" src="images/operand_label_after.png"/>
		<ul>
			<li><span class="label label-danger">Removed</span> The feature concerning the capability to move labels on border of node, or border node, all around the node, added in 6.3.0, has been reverted. There are unexpected side effects (wrong location after a rename of a label for example).</li>
		</ul>
		<h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
		<ul>
			<li><span class="label label-info">Modified</span> Upgraded ELK version from 0.5.0 to 0.6.1, see the 
				<a href="https://projects.eclipse.org/projects/modeling.elk/releases/0.6.1">ELK documentation</a> for the list of changes in that version (and previous).
			</li>
			<li><span class="label label-info">Modified</span> Sirius now requires GMF Notation &amp; Runtime 1.13.0.</li>
			<li><span class="label label-info">Modified</span> 
				<code>org.eclipse.sirius.diagram.ui.tools.api.graphical.edit.styles.SimpleStyleConfiguration.isShowIcon(DDiagramElement, IGraphicalEditPart)</code> is now protected instead of private.
			</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> New preferences key have been added in 
				<code>org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramCorePreferences</code>:
				<ul>
					<li>
						<code>PREF_JUMP_LINK_ENABLE_OVERRIDE</code>: Id of the preference that says if the override of jump links preferences is enabled or not.
					</li>
					<li>
						<code>PREF_JUMP_LINK_ENABLE_OVERRIDE_DEFAULT_VALUE</code>: Default value for override of jump link preference, equals to 
						<code>false</code>.
					</li>
					<li>
						<code>PREF_JUMP_LINK_STATUS</code>: Id of the preference used to know the default jump link status if the override of connection jump links preferences is enabled.
					</li>
					<li>
						<code>PREF_JUMP_LINK_STATUS_DEFAULT_VALUE</code>: Default value of above preference, equals to 
						<code>JumpLinkStatus#NONE</code>.
					</li>
					<li>
						<code>PREF_JUMP_LINK_TYPE</code>:  Id of the preference used to know the default jump link type if the override of connection jump links preferences is enabled.
					</li>
					<li>
						<code>PREF_JUMP_LINK_TYPE_DEFAULT_VALUE</code>: Default value of above preference, equals to 
						<code>JumpLinkType#SEMICIRCLE</code>.
					</li>
					<li>
						<code>PREF_REVERSE_JUMP_LINK</code>: Id of the preference used to know if reverse of the jump link is enabled or not,  if the override of connection jump links preferences is enabled.
					</li>
					<li>
						<code>PREF_REVERSE_JUMP_LINK_DEFAULT_VALUE</code>: Default value for reverse jump link preference, equals to 
						<code>false</code>.
					</li>
				</ul>
			</li>
		</ul>
		<h4 id="Migrations">Migrations</h4>
		<ul>
			<li><span class="label label-success">Added</span> A migration participant has been added only to change the version of the model. Indeed, if the new value &#8220;Tunnel&#8221; of GMF jump link type is used, see &#8220;User-Visible Changes&#8221; in 
				<a href="Release_Notes.html#sirius6.3.1">Sirius 6.1.3</a>, the model will be invalid for an older version of Sirius. The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
				<em>14.3.1.202003101500</em>.
			</li>
			<li><span class="label label-info">Modified</span> The migration participant 
				<code>LabelOnBorderMigrationParticipant</code> has been updated to revert the effect of itself. This migration participant has been added in Sirius 6.3.0 according to buzgilla 
				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=550382">550382</a>. The new feature added in this bugzilla was imperfect so it is decided to revert it. The new corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
				<em>14.3.1.202003261200</em>.
			</li>
		</ul>
		<h4 id="TranslationKeysChanges">Translation Keys Changes</h4>
		<p>See 
			<a href="i18n_changes.html#sirius631">this document</a> for the complete list of message keys added or removed in Sirius 6.3.1.
		</p>
		<h2 id="sirius6.3.0">Changes in Sirius 6.3.0</h2>
		<h3 id="UserVisibleChanges4">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> It is now possible to move labels on border of node, or border node, all around the node. Before, for label larger than the node, only centered location was authorized on North or South side.</li>
			<li><span class="label label-info">Modified</span> The GIF and BMP formats which are currently supported when exporting diagrams as images should be considered 
				<em>deprecated</em>. Their support may be removed in a future version, as they cause various issues depending on the platform and increase the maintenance costs for little value. If you really need diagram images in these formats, you can export in PNG (which is lossless), and convert the image into the required format using an external tool.
			</li>
		</ul>
		<h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> A new column 
				<code>Target</code> has been added in the dialog allowing to choose layout options to override for ELK layout algorithms. It describes the element to which the option applies. The filter textfield in that dialog also applies on columns&amp; 
				<code>Name</code>, 
				<code>Targets</code> and 
				<code>Type</code>.
			</li>
		</ul>
		<h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
		<ul>
			<li><span class="label label-info">Modified</span> Upgraded ELK version from 0.4.1 to 0.5.0, see the <a href="https://projects.eclipse.org/projects/modeling.elk/releases/0.5.0" target="_blank">ELK documentation</a> for the list of changes in that version.</li>
			<li><span class="label label-info">Modified</span> Upgraded EEF version from 2.1.2 to 2.1.3 (which contains a single bugfix, for <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=550436" target="_blank">#550436</a>).</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 EAttribute 
				<code>changeId</code> has been added in 
				<code>DRepresentationDescriptor</code>. It allows to know if two 
				<code>DRepresentation</code>(each associated to one DRepresentationDescriptor) are the same and have the exact same content. It can be useful to not load the representation if not needed. The methods 
				<code>updateChangeId(DRepresentationDescriptor)</code> and 
				<code>areRepresentationIdentical(DRepresentationDescriptor, DRepresentationDescriptor)</code> have been added in 
				<code>org.eclipse.sirius.business.api.helper.RepresentationHelper</code> to get change id information and to update it if needed in DRepresentationDescriptor.
			</li>
		</ul>
		<p>In case of migration the method 
			<code>org.eclipse.sirius.business.api.migration.AbstractRepresentationsFileMigrationParticipant.updateChangeId(DAnalysis, DRepresentation)</code> is available to update change id. New migration participants created after this Sirius version must update the change id of the DRepresentationDescriptor of the DRepresentation they change. The API to do that is described in MigrationParticpant 
			<a href="developer/extensions-provide_migrate_contribution.html#MigrationParticipantsImplem">documentation:</a> .
		</p>
		<ul>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.business.api.query.DViewQuery.getLoadedRepresentationsDescriptors()</code> has been added and allows to retrieve all loaded 
				<code>DRepresentationDescriptor</code> in a 
				<code>DView</code>.
			</li>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.business.api.session.AbstractSavingPolicy.hasDifferentSerialization(Resource, Map)</code> has been extracted from internal subclasses. It is able to tell whether a save operation on a resource can succeed or not, and if the resulting file will change. It should be used with care as it basically saves the resource in a temporary resource to know whether it will change the file or not.
			</li>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.business.api.query.DRepresentationQuery.findDescriptorFromAnalysis(DAnalysis)</code> has been added to provide a way to look up for a 
				<code>DRepresentationDescriptor</code> in a given 
				<code>DAnalysis</code>.
			</li>
			<li><span class="label label-info">Modified</span> The method 
				<code>org.eclipse.sirius.business.api.dialect.DialectServices.copyRepresentation(DRepresentation, String, Session, IProgressMonitor)</code> is now deprecated. It is recommended to use the  new alternative, 
				<code>org.eclipse.sirius.business.api.dialect.DialectServices.copyRepresentation(DRepresentationDescriptor, String, Session, IProgressMonitor)</code> which is identical except that it take a 
				<code>DRepresentationDescriptor</code> instead of a 
				<code>DRepresentation</code>. Also the constructor of 
				<code>org.eclipse.sirius.business.api.dialect.command.CopyRepresentationCommand</code> has been modified. Its parameter 
				<code>Collection&lt;DRepresentation&gt; representations</code> has been replaced by 
				<code>Collection&lt;DRepresentationDescriptor&gt; representationDescriptors</code>. Theses changes were made  to be able to copy the name that is now only in 
				<code>DRepresentationDescriptor</code>.
			</li>
			<li><span class="label label-info">Modified</span> The 
				<code>DocumentedElement</code> interface providing a description for the representation implemented by 
				<code>DRepresentation</code> is now implemented by 
				<code>DRepresentationDescriptor</code>. Also the 
				<code>name</code> EAttribute in 
				<code>DRepresentation</code> has been added to 
				<code>DRepresentationDescriptor</code>. These changes allows to use these information without loading associated representation. The 
				<code>name</code> and 
				<code>description</code> attributes on 
				<code>DREpresentation</code> are now transient and volatile and computed from 
				<code>DRepresentationDescriptor</code>
			</li>
			<li><span class="label label-info">Modified</span>The class 
				<code>org.eclipse.sirius.business.api.helper.SiriusHelper</code> has been renamed into 
				<code>org.eclipse.sirius.business.api.helper.RepresentationHelper</code>.
			</li>
			<li><span class="label label-danger">Removed</span> In 
				<code>org.eclipse.sirius.business.api.session.CustomDataConstants</code>, the constants 
				<code>DREPRESENTATION</code> and 
				<code>DREPRESENTATION_DESCRIPTOR</code> has been removed because they are not available anymore in custom data.
			</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> A cache has been added to optimize the way the uri fragments are computed in 
				<code>org.eclipse.sirius.common.tools.api.util.EqualityHelper</code>, it is managed with the 
				<code>setUriFragmentCacheEnabled(boolean)</code> method. The cache is currently used in three locations: 
				<code>org.eclipse.sirius.diagram.business.internal.sync.DDiagramSynchronizer.refreshOperation(IProgressMonitor)</code>, 
				<code>org.eclipse.sirius.diagram.business.internal.helper.display.DisplayServiceImpl.refreshAllElementsVisibility(DDiagram)</code> and in the hidden elements lookup phase of 
				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDDiagramEditPart.activate()</code>. This optimization is enabled by default, it can be disabled by setting the system property 
				<code>org.eclipse.sirius.common.enableUriFragmentOptimization</code> to 
				<code>false</code>.
			</li>
			<li><span class="label label-danger">Removed</span> The classes 
				<code>org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer</code>, 
				<code>org.eclipse.sirius.common.tools.api.util.ECrossReferenceAdapterWithUnproxyCapability</code> have been merged in 
				<code>org.eclipse.sirius.business.internal.session.danalysis.SessionLazyCrossReferencer</code> to reduce complexity.
			</li>
			<li><span class="label label-danger">Removed</span> The class 
				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl</code> has been merged in 
				<code>org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapter</code>.
			</li>
			<li><span class="label label-danger">Removed</span> The 
				<code>org.eclipse.sirius.business.internal.session.danalysis.LocalResourceCollector</code> has been merged in 
				<code>SiriusCrossReferenceAdapter</code> to have only one instance of a cross referencer for a Sirius session. This implies that resource collector is no more installed on all resourceSet resources by default but only on those managed by the Sirius session semantic cross reference. But if the getRefencing/ed services are used, it will install itself on a non managed resource and then return the references for all resources on which it is installed.
			</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 cache has been added to optimize the way Sirius checks that a mapping is in the activated layers of a diagram. The cache is currently used in three locations: 
				<code>org.eclipse.sirius.diagram.business.internal.sync.DDiagramSynchronizer.refreshOperation(IProgressMonitor)</code>, 
				<code>org.eclipse.sirius.diagram.business.internal.helper.display.DisplayServiceImpl.refreshAllElementsVisibility(DDiagram)</code> and in the hidden elements lookup phase of 
				<code>org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDDiagramEditPart.activate()</code>. This optimization is enabled by default, it can be disabled by setting the system property 
				<code>org.eclipse.sirius.diagram.enableActiveParentLayerOptimization</code> to 
				<code>false</code>.
			</li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.diagram.elk">Changes in  
			<code>org.eclipse.sirius.diagram.elk</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> The 
				<code>org.eclipse.sirius.diagram.elk.layout.extension</code> experimental extension-point has been added to make it possible to extend the ELK layout with pre end post operations. See the extension-point associated documentation and 
				<code>org.eclipse.sirius.diagram.elk.IELKLayoutExtension</code> interface for more details.
			</li>
		</ul>
		<h4 id="Migrations2">Migrations</h4>
		<ul>
			<li><span class="label label-success">Added</span> A migration participant has been added to move the name and documentation from the representations to their descriptors (see 
				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=548631">bugzilla #548631</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
				<em>14.3.0.201908071200</em>.
			</li>
			<li><span class="label label-success">Added</span> A migration participant has been added to change the GMF coordinates of the labels that are:</li>
		</ul>   * on border of its node or border node
		    * larger that its node or border node
		    * on the North or South side.
		The goal of this migration participant is to keep centered labels visually fixed compared to previous version (see 
		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=549887">bugzilla #550382</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
		<em>14.3.0.201908231800</em>.
		<ul>
			<li><span class="label label-success">Added</span> A migration participant has been added to sort the already activated filters. The activated filters list is now sorted on each filter activation, the sorted result is stored in the model whereas in older version the list was sorted on almost each use of those activated filters (see 
				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=550663">bugzilla #550663</a> for more details). The corresponding version, stored in attribute version of viewpoint:DAnalysis of the aird file, is 
				<em>14.3.0.201909031200</em>.
			</li>
		</ul>
		<h2 id="sirius6.2.2">Changes in Sirius 6.2.2</h2>
		<p>There are no user-visible changes in Sirius 6.2.2 compared to 6.2.1. The only changes are internal and related either to the build process or to the automated tests.</p>
		<h2 id="sirius6.2.1">Changes in Sirius 6.2.1</h2>
		<h3 id="DeveloperVisibleChanges5">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> Added a constructor 
				<code>org.eclipse.sirius.business.api.query.DRepresentationQuery.DRepresentationQuery(DRepresentation, Session)</code> to compute queries directly from the given session instead of computing it.
			</li>
			<li><span class="label label-success">Added</span> In 
				<code>viewpoint.ecore</code>, the 
				<code>UIState</code> class has a new 
				<code>subDiagramDecorationDescriptors</code> attribute. It is used as a cache to speed up sub diagram decorations computing.
			</li>
			<li><span class="label label-success">Added</span> It is now possible to consider that some specific graphical changes need a refresh of the representation. Before Sirius 6.1.3, only semantic changes triggers a refresh. Now you can use 
				<code>RefreshHelper.registerImpactingNotification(Predicate&lt;Notification&gt;)</code> to consider a specific graphical changes. An example is the possibility to launch a refresh when the region container is collapsed or expanded. See 
				<a href="developer/trigger-refresh-graphical-changes.html">Trigger a Sirius refresh on specific graphical changes</a> in the developer documentation for more details.
			</li>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.tools.api.ui.RefreshHelper.isAutoRefresh()</code> has been added to know if Sirius is in automatic refresh mode or in manual mode.
			</li>
			<li><span class="label label-success">Added</span> The methods 
				<code>org.eclipse.sirius.tools.api.ui.RefreshHelper.registerImpactingNotification(Predicate&lt;Notification&gt;)</code> and 
				<code>org.eclipse.sirius.tools.api.ui.RefreshHelper.unregisterImpactingNotification(Predicate&lt;Notification&gt;)</code> have been added to allow to consider some graphical modifications as requiring a refresh. By default, only semantic changes are considered as requiring a refresh.  
			</li>
			<li><span class="label label-danger">Removed</span> The 
				<code>org.eclipse.sirius.business.api.helper.task.NotificationTask</code> class has been removed. It was not used anywhere.
			</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-info">Modified</span> The 
				<code>org.eclipse.sirius.diagram.ui.business.api.image.ImageSelector.IMAGES_RESOURCE_NAME</code> constant has been deprecated. It was present in the initial commit of Sirius but has never been used in its open source components.
			</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 methods 
				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas.mouseMoveLeftClick(int, int, boolean, int[])</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer.click(int, int, boolean, int[])</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.clickWithKeys(String, int...)</code>, have been added to make a mouse click with key modifiers for a multi selection for example.
			</li>
		</ul>
		<ul>
			<li><span class="label label-success">Added</span>  The method 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.selectPropertyTabItem(String, SWTBot)</code> has been added. It allows to look for property tab from a given bot. The bot corresponding to the property view should be given otherwise the search could fail starting from Eclipse 2019-06.
			</li>
		</ul>
		<ul>
			<li><span class="label label-success">Added</span>The method 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.getShellBot(String)</code> has been added and allows to retrieve a bot related to a shell with the given label.
			</li>
		</ul>
		<ul>
			<li><span class="label label-success">Added</span>The method 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.menu(SWTBot, String)</code> has been added and allows to retrieve a menu even when the active shell is null. Should be used over 
				<code>SWTBot.menu(String)</code> method.
			</li>
		</ul>
		<h2 id="sirius6.2.0">Changes in Sirius 6.2.0</h2>
		<h3 id="UserVisibleChanges5">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> On sequence diagrams, it is now possible to remove vertical blank spaces on standard edition mode by dragging the mouse from bottom to top anywhere in the canvas with the Ctrl+Shift keys pressed. This 
				<a href="user/sequences/Sequence%20Diagrams.html#remove_vertical_blank_space">feature</a> was here since version 6.0.0 but was only accessible through the ruler.
			</li>
		</ul>
		<h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> It is now possible to add action/group in the &#8220;New&#8221; contextual menu of diagram elements. This menu was missed in Sirius 6.1.0. It is now documented in the 
				<a href="specifier/diagrams/Diagrams.html#group">corresponding documentation</a> .
			</li>
		</ul>
		<h3 id="DeveloperVisibleChanges6">Developer-Visible Changes</h3>
		<h4 id="Changesinorg.eclipse.sirius.common3">Changes in 
			<code>org.eclipse.sirius.common</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> A new interface 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IConverter</code> has been added: it encapsulates the coercion rules used to convert raw results returned by interpreted expressions into the types expected by Sirius (depending on the context of use of the expression).
			</li>
			<li><span class="label label-success">Added</span> In interface 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreter</code>, a new method 
				<code>getConverter()</code> has been added to obtain the 
				<code>IConverter</code> for a given interpreter.
			</li>
			<li><span class="label label-success">Added</span> A new class 
				<code>org.eclipse.sirius.common.tools.api.interpreter.EvaluationResult</code> has been added. It serves as a default implementation of 
				<code>IEvaluationResult</code>. It provides static factory methods for common cases (successful evaluation or failure).
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.interpreter.TypeName</code>, the methods 
				<code>getJavaClass()</code> and 
				<code>getPackagePrefix()</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.profiler.ProfilerTaskRegistry</code>, the method 
				<code>get(String)</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.query.NotifierQuery</code>, the method 
				<code>getAdapter(Class&lt;?&gt;)</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.resource.ResourceSetSync</code>, the method 
				<code>getResourceSetSync(TransactionalEditingDomain)</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.util.MarkerUtil</code>, the method 
				<code>addMarkerFor(IResource, String, int, String)</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
			<li><span class="label label-info">Modified</span> In 
				<code>org.eclipse.sirius.common.tools.api.util.ReflectionHelper</code>, all the following methods which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead: 
				<code>setConstructorVisibleWithoutException(Class&lt;? extends Object&gt;, Class&lt;?&gt;...)</code>
			</li>
		</ul>
		<p>
			<code>setFieldVisibleWithoutException(Class&lt;? extends Object&gt;, String)</code>, 
			<code>getClassForNameWithoutException(String)</code>, 
			<code>instantiateWithoutException(String, Class&lt;?&gt;[], Object[])</code>, 
			<code>getFieldValueWithoutException(Object, String)</code>, 
			<code>getFieldValueWithoutException(Class&lt;? extends Object&gt;, String)</code>, and 
			<code>getFieldValueWithoutException(Object, String, Class&lt;? extends Object&gt;)</code>.
		</p>
		<ul>
			<li><span class="label label-info">Modified</span> The interface 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreterWithDiagnostic.IEvaluationResult</code> has been promoted as a top-level type as 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IEvaluationResult</code>. In the process it has gained several methods to check for success and coerce the raw evaluation result into any of the types that are used by Sirius (depending on the usage context).
			</li>
			<li><span class="label label-danger">Removed</span> In interface 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IInterpreter</code> (and all its implementations shipped with Sirius), the methods 
				<code>addVariableStatusListener()</code> and 
				<code>removeVariableStatusListener()</code> have been removed, along with the corresponding type 
				<code>org.eclipse.sirius.common.tools.api.interpreter.IVariableStatusListener</code>. These correspond to obsolete and unused mechanisms.
			</li>
			<li><span class="label label-danger">Removed</span> The 
				<code>interface org.eclipse.sirius.common.tools.api.interpreter.IInterpreterWithDiagnostic</code> has been removed. The single method it defined, 
				<code>evaluateExpression()</code>, is now implemented directly by the main 
				<code>IInterpreter</code> interface. In effect, all 
				<code>IInterpreter</code> are now &#8220;with diagnostic&#8221;. 
			</li>
			<li><span class="label label-danger">Removed</span> The interface 
				<code>org.eclipse.sirius.tools.api.interpreter.context.SiriusInterpreterContextFactory</code> has been removed from the API (it has been moved into an internal package): it should only be needed by Sirius itself and has no reason to be exposed as public API.
			</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-info">Modified</span> In 
				<code>org.eclipse.sirius.common.ui.tools.api.dialog.quickoutline.QuickOutlineDescriptor</code>, the methods 
				<code>getFirstPage()</code> and 
				<code>getNextPage(QuickOutlinePageDescriptor)</code> which used to return a 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> now return standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.diagram.layoutdata">Changes in  
			<code>org.eclipse.sirius.diagram.layoutdata</code>
		</h4>
		<ul>
			<li><span class="label label-danger">Removed</span> This plugin has been removed and fully replaced by  
				<code>org.eclipse.sirius.diagram.formatdata</code>
			</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 message 
				<code>org.eclipse.sirius.diagram.Messages.SynchronizeGMFModelCommand_label</code> has been added. It replaces 
				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SynchronizeGMFModelCommand_label</code>.
			</li>
			<li><span class="label label-success">Added</span> In 
				<code>org.eclipse.sirius.diagram.business.api.query.DragAndDropTargetQuery</code>, a new method 
				<code>getLogicalChildren()</code> has been added. It makes it easy to iterate over the logical structure of diagram elements. A static factory method 
				<code>on()</code> was also added to provide a more fluent API, e.g. 
				<code>DragAndDropTargetQuery.on(container).getLogicalChildren()</code>.
			</li>
			<li><span class="label label-success">Added</span> The extension point org.eclipse.sirius.diagram.customBundledImageShape has been created in order to provide custom shape to the bundled image style. This extension point offers more flexibility on the specification of the svg tags and attributes holding the color, border color and border size information than the extension point org.eclipse.sirius.diagram.bundledImageShape.</li>
			<li><span class="label label-info">Modified</span> The extension point org.eclipse.sirius.diagram.bundledImageShape has been marked as deprecated. Shapes provided by this extension point still work.</li>
			<li><span class="label label-info">Modified</span> The method 
				<code>org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactory.buildInsertVerticalBlankSpaceCommand(DDiagram, int, int)</code> has been renamed to 
				<code>org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactory.buildInsertOrRemoveVerticalBlankSpaceCommand(DDiagram, int, int)</code> because it handles now both addition and removal.
			</li>
			<li><span class="label label-info">Modified</span> Method 
				<em>getAllEdgeMappings</em> defined in 
				<code>org.eclipse.sirius.diagram.business.internal.metamodel.helper.ContentHelper</code> has been moved in a new class called 
				<code>org.eclipse.sirius.diagram.business.internal.metamodel.helper.ContentLayerHelper</code> to ensure method to be independent from pure Sirius code. 
			</li>
			<li><span class="label label-danger">Removed</span> EOperations and features have been removed from the metamodel 
				<code>diagram.ecore</code>. This is the ones that are computed outside of EMF environment with dependencies to IInterpreter or that are deprecated. The following EOperations have been removed/replaced: 
				<ul>
					<li>
						<code>DEdge.isRootFolding</code> has been removed
					</li>
					<li>
						<code>DDiagram.getNodesFromMapping</code> has been replaced by 
						<code>DDiagramSpecOperations.getNodesFromMapping</code>
					</li>
					<li>
						<code>DDiagram.getEdgesFromMapping</code> has been replaced by 
						<code>DDiagramSpecOperations.getEdgesFromMapping</code>
					</li>
					<li>
						<code>DDiagram.getContainersFromMapping</code> has been replaced by 
						<code>DDiagramSpecOperations.getEdgesFromMapping</code>
					</li>
					<li>
						<code>DiagramElementMapping.checkPrecondition</code> has been replaced by 
						<code>SiriusElementMappingSpecOperations.checkPrecondition</code>
					</li>
					<li>
						<code>DiagramElementMapping.getAllMappings</code> has been replaced by 
						<code>MappingHelper.getAllMappings</code>
					</li>
					<li>
						<code>DiagramElementMapping.isFrom</code> has been replaced by 
						<code>SiriusElementMappingSpecOperations.isFrom</code>
					</li>
					<li>
						<code>AbstractNodeMapping.clearDNodesDone</code> has been replaced by 
						<code>NodeMappingHelper.clearDNodesDone</code>
					</li>
					<li>
						<code>AbstractNodeMapping.addDoneNode</code> has been replaced by 
						<code>NodeMappingHelper.addDoneNode</code>
					</li>
					<li>
						<code>AbstractNodeMapping.getAllBorderedNodeMappings</code> has been replaced by 
						<code>MappingHelper.getAllBorderedNodeMappings</code>
					</li>
					<li>
						<code>NodeMapping.createNode</code> has been replaced by 
						<code>NodeMappingHelper.createNode</code>. You must verify that 
						<code>NodeMapping</code> is an 
						<code>INodeMappingExt</code> before calling this method. Previously, in other cases, when a 
						<code>NodeMapping</code> is not 
						<code>INodeMappingExt</code>, an 
						<code>UnsupportedOperationException</code> was thrown.
					</li>
					<li>
						<code>NodeMapping.updateNode</code> has been replaced by 
						<code>NodeMappingHelper.updateNode</code>
					</li>
					<li>
						<code>NodeMapping.updateListElement</code> has been replaced by 
						<code>NodeMappingHelper.updateListElement</code>
					</li>
					<li>
						<code>NodeMapping.getNodesCandidates(semanticOrigin,container)</code> has been replaced by 
						<code>NodeMappingHelper.getNodesCandidates(semanticOrigin,container)</code>
					</li>
					<li>
						<code>NodeMapping.getNodesCandidates(semanticOrigin,container,containerView)</code> has been replaced by 
						<code>NodeMappingHelper.getNodesCandidates(semanticOrigin,container,containerView)</code>
					</li>
					<li>
						<code>ContainerMapping.getBestStyle</code> has been replaced by 
						<code>ContainerMappingWithInterpreterHelper.getBestStyle</code>
					</li>
					<li>
						<code>EdgeMapping.createEdge(source,target,semanticTarget)</code> has been replaced by 
						<code>EdgeMappingHelper.createEdge(EdgeMapping, EdgeTarget, EdgeTarget, EObject, EObject)</code>
					</li>
					<li>
						<code>EdgeMapping.createEdge(source,target,container,semanticTarget)</code> has been replaced by 
						<code>EdgeMappingHelper.createEdge(EdgeMapping, EdgeTarget, EdgeTarget, EObject, EObject)</code>
					</li>
					<li>
						<code>EdgeMapping.getBestStyle</code> has been replaced by 
						<code>MappingWithInterpreterHelper.getBestStyle</code>
					</li>
					<li>
						<code>EdgeMapping.updateEdge</code> has been replaced by 
						<code>EdgeMappingHelper.updateEdge</code>
					</li>
					<li>
						<code>EdgeMapping.getEdgeTargetCandidates(semanticOrigin,viewPoint)</code> has been replaced by 
						<code>EdgeMappingHelper.getEdgeTargetCandidates</code>
					</li>
					<li>
						<code>EdgeMapping.getEdgeSourceCandidates</code> has been replaced by 
						<code>EdgeMappingHelper.getEdgeSourceCandidates</code>
					</li>
					<li>
						<code>EdgeMapping.getEdgeTargetCandidates(semanticOrigin,container,containerView)</code> has been replaced by 
						<code>EdgeMappingHelper.getEdgeTargetCandidates</code>
					</li>
					<li>
						<code>EdgeCreationDescription.getBestMapping</code> has been removed because it is never used.
					</li>
					<li>
						<code>ContainerDropDescription.getBestMapping</code> has been replaced by 
						<code>ContainerMappingWithInterpreterHelper.getBestMapping</code>
					</li>
					<li>
						<code>Filter.isVisible</code> has been replaced by 
						<code>FilterService.isVisible(Filter, DDiagramElement)</code>
					</li>
					<li>
						<code>VariableFilter.resetVariables</code> has been replaced by 
						<code>VariableFilterWrapper.resetVariables</code>
					</li>
				</ul>
			</li>
			<li><span class="label label-info">Modified</span> The following features have been removed/replaced:
				<ul>
					<li>
						<code>DiagramDescription.allNodeMappings</code> has been replaced by 
						<code>ContentHelper.getAllNodeMappings</code> (with 
						<code>false</code> value for parameter 
						<code>withoutOptionalLayers</code>)
					</li>
					<li>
						<code>DiagramDescription.allContainerMappings</code> has been replaced by 
						<code>ContentHelper.getAllContainerMappings</code> (with 
						<code>false</code> value for parameter 
						<code>withoutOptionalLayers</code>)
					</li>
					<li>
						<code>DiagramDescription.allLayers</code> has been replaced by 
						<code>LayerHelper.getAllLayers</code>
					</li>
					<li>
						<code>ContainerMapping.allNodeMappings</code> has been replaced by 
						<code>ContainerMappingHelper.getAllNodeMappings</code>
					</li>
					<li>
						<code>ContainerMapping.allContainerMappings</code> has been replaced by 
						<code>ContainerMappingHelper.getAllContainerMappings</code>
					</li>
					<li>
						<code>Layer.allEdgeMappings</code> has been replaced by 
						<code>ContentLayerHelper.getAllEdgeMappings</code>
					</li>
				</ul>
			</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 method 
				<code>org.eclipse.sirius.diagram.ui.business.api.query.EditPartQuery.getDDiagram()</code> has been added to retrieve the  
				<code>DDiagram</code> associated to the edit part or to one of its ancestor.
			</li>
			<li><span class="label label-danger">Removed</span> The message 
				<code>org.eclipse.sirius.diagram.ui.provider.Messages.SynchronizeGMFModelCommand_label</code> has been removed. It has been replaced in 
				<code>org.eclipse.sirius.diagram.Messages</code>.
			</li>
			<li><span class="label label-danger">Removed</span> The extension point 
				<code>layoutDataManager</code>, deprecated since Sirius 4.1.0, has been removed. The corresponding plug-in 
				<code>org.eclipse.sirius.diagram.layoutdata</code> has also been removed.
			</li>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.diagram.ui.business.api.query.ConnectionEditPartQuery.getCenteredAnchorsAbsoluteLocation(Rectangle)</code> has been added in order to compute the location of the anchor of a connection centered on its target or source.
			</li>
			<li><span class="label label-success">Added</span> The method 
				<code>org.eclipse.sirius.diagram.ui.business.api.query.ConnectionQuery.getAbsolutePointList(RelativeBendpoints, PrecisionPoint, PrecisionPoint)</code> has been added to compute the absolute coordinates of the bendpoints of a connection.
			</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-info">Modified</span> The method 
				<code>org.eclipse.sirius.ui.editor.api.pages.PageProvider.provides()</code> now takes the 
				<code>SessionEditor</code> as an additional parameter to allow implementation to decide if it should provide an additional page or not.
			</li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.diagram.sequence">Changes in 
			<code>org.eclipse.sirius.diagram.sequence</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> A new translatable message 
				<code>org.eclipse.sirius.diagram.sequence.Messages.VerticalSpaceReduction_operationName</code> has been added. It&#8217;s key is 
				<code>VerticalSpaceReduction_operationName</code> and its default value is 
				<code>Auto-reduction of {0}</code>. It is used when reducing spaces in sequence diagram.
			</li>
			<li><span class="label label-success">Added</span> A new translatable message 
				<code>org.eclipse.sirius.diagram.ui.provider.Messages.RemoveBlankSpace_cmdName</code> has been added. It&#8217;s key is 
				<code>RemoveBlankSpace_cmdName</code> and its default value is 
				<code>Remove blank space</code>. It is used when removing spaces in sequence diagram.
			</li>
			<li><span class="label label-success">Added</span>  The methods 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas.mouseDragWithKeys(int, int, int, int, AtomicBoolean, int...)</code>, have been added to make a drag an drop with more than one key modifier.
			</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> In 
				<code>org.eclipse.sirius.ecore.extender.business.internal.accessor.ModelAccessorAdapter</code>, the methods 
				<code>getAdapter(ResourceSet resourceSet)</code> and 
				<code>removeAdapter(ResourceSet resourceSet)</code> now return 
				<code>java.util.Optional&lt;T&gt;</code> instead of instance of Sirius&#8217;s custom 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code>.
			</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-info">Modified</span> In 
				<code>org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper</code>, all the methods which used to take or return an 
				<code>org.eclipse.sirius.ext.base.Option&lt;T&gt;</code> not take or return a standard 
				<code>java.util.Optional&lt;T&gt;</code> instead.
			</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>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code> and 
				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas.mouseDragWithKeys(int, int, int, int, AtomicBoolean, int...)</code> have been added and allows to do a drag and drop with any key modifier you want.
			</li>
			<li><span class="label label-info">Modified</span> The methods 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKey(int, int, int, int, int, AtomicBoolean)</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer.dragWithKey(int, int, int, int, int, AtomicBoolean)</code> and 
				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas.mouseDragWithKey(int, int, int, int, int, AtomicBoolean)</code> have been marked as deprecated. The method 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code>, 
				<code>org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusGefViewer.dragWithKeys(int, int, int, int, AtomicBoolean, int...)</code> and 
				<code>org.eclipse.sirius.tests.swtbot.support.api.widget.SWTBotSiriusFigureCanvas.mouseDragWithKeys(int, int, int, int, AtomicBoolean, int...)</code> should be used instead.C
			</li>
		</ul>
		<h2 id="sirius6.1.2">Changes in Sirius 6.1.2</h2>
		<h3 id="UserVisibleChanges6">User-Visible Changes</h3>
		<ul>
			<li><span class="label label-info">Modified</span> Invalid representations, that are either representations which semantic target does not exist anymore or representations that can not be retrieved anymore, are grayed in the Model Explorer and the only available action is 
				<em>Delete</em>. It was previously the case only for representations which semantic target does not exist anymore.
			</li>
		</ul>
		<h3 id="DeveloperVisibleChanges7">Developer-Visible Changes</h3>
		<ul>
			<li><span class="label label-success">Added</span> If the 
				<code>org.eclipse.sirius.diagam.ui.hidePrintingOfPermissionAuthorityDecoration</code> system property is set to true and if there is no other printable decoration provided at the same location (South-West), the permission authority decorations displayed on diagrams are not printed nor exported in images (export as image actions).
			</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 methods 
				<code>org.eclipse.sirius.business.api.query.DRepresentationDescriptorQuery.isRepresentationReachable()</code> and 
				<code>org.eclipse.sirius.business.api.query.DRepresentationDescriptorQuery.isRepresentationValid()</code> have been added. The former allows to know if the 
				<code>DRepresentation</code> can be retrieved from the 
				<code>DRepresentationDescriptor.repPath</code>: the repPath is correctly set and the representation effectively exists. The latter returns true if the 
				<code>DRepresentationDescriptor</code> is either dangling (
				<code>DRepresentationDescriptor.repPath</code> can not be found) or can not by retrieved.
			</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>  A new field 
				<code>CustomLayoutConfiguration layoutConfiguration</code> has been added to 
				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.provider.DefaultLayoutProvider</code> and its setter method 
			</li>
		</ul>
		<p>
			<code>setLayoutConfiguration(CustomLayoutConfiguration)</code>. It allows any layout provider to be aware of any VSM layout configuration that should be used.
		</p>
		<ul>
			<li><span class="label label-info">Modified</span> The method 
				<code>getDiagramLayoutProvider(DiagramEditPart, IAdaptable)</code> in package  
				<code>org.eclipse.sirius.diagram.ui.tools.api.layout.provider.AbstractLayoutProvider</code> has been made protected to allow to provide layout provider from other mechanism than LayoutService.
			</li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.diagram4">Changes in  
			<code>org.eclipse.sirius.diagram</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> The getter and setter methods have been added for the new attribute 
				<code>org.eclipse.sirius.diagram.ui.tools.api.decoration.DecorationDescriptor.isPrintable</code>. This attribute is used to know if the decoration should be hidden when printing or exporting the diagram. The behavior is applied only if there is no printable decoration in its diagram element location (South, West, South-West etc).
			</li>
		</ul>
		<h4 id="Changesinorg.eclipse.sirius.common4">Changes in  
			<code>org.eclipse.sirius.common</code>
		</h4>
		<ul>
			<li><span class="label label-danger">Removed</span> The class 
				<code>org.eclipse.sirius.common.tools.api.util.SiriusCopier</code> has been replaced by the internal class 
				<code>org.eclipse.sirius.tools.internal.SiriusCopierHelper</code>. 
				<code>SiriusCopier.Helper.copy(T)</code> and 
				<code>SiriusCopier.Helper.copyAll(Collection&lt;? extends T&gt;)</code> have been replaced by 
				<code>SiriusCopierHelper.copyWithNoUidDuplication(T)</code>, 
				<code>SiriusCopierHelper.copyAllWithNoUidDuplication(Collection&lt;? extends T&gt;)</code> and 
				<code>SiriusCopierHelper.copyAllWithNoUidDuplication(Collection&lt;? extends EObject&gt;, boolean, boolean, boolean)</code>. It provides the ability to copy an object without copying the EAttribute 
				<code>IDENTIFIED_ELEMENT__UID</code>. For all these methods, this id is not set by the factory or during object creation, it is set during the copy using 
				<code>org.eclipse.emf.ecore.util.EcoreUtil.generateUUID()</code>.
			</li>
		</ul>
		<h2 id="sirius6.1.1">Changes in Sirius 6.1.1</h2>
		<h4 id="Changesinorg.eclipse.sirius.diagram5">Changes in  
			<code>org.eclipse.sirius.diagram</code>
		</h4>
		<ul>
			<li><span class="label label-success">Added</span> Add method 
				<code>allowsVisibilityModeActivation()</code> in 
				<code>org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider</code> This method is used to know if the visibility mode is supported by a specific diagram description.
			</li>
		</ul>
		<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/" target="_blank">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" target="_blank">the official FAQ</a> for details about the difference between EPL v1.0 (which was used before) and v2.0.</li>
		</ul>
		<h3 id="UserVisibleChanges7">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="SpecifierVisibleChanges3">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>
			<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="DeveloperVisibleChanges8">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.ui5">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.common5">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.support4">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="Migrations3">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>
		<h4 id="TranslationKeysChanges2">Translation Keys Changes</h4>
		<p>See 
			<a href="i18n_changes.html#sirius61">this document</a> for the complete list of message keys added or removed in Sirius 6.1.0.
		</p>
		<h2 id="sirius6.0.0">Changes in Sirius 6.0.0</h2>
		<h3 id="UserVisibleChanges8">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="SpecifierVisibleChanges4">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-success">Added</span> A new experimental feature regarding layouting is available. It brings you the capabilities of ELK layouting framework. If installed you can specify in your VSM the layout algorithm triggered by arrange all button among the ELK algorithms. To get an overview of what is possible with ELK you can read this 
				<a href="https://blog.obeo.fr/a-picture-is-worth-a-thousand-words">article</a>. To know how to use the ELK algorithms, read the 
				<a href="specifier/diagrams/Diagrams.html#useElk">documentation</a>
			</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="DeveloperVisibleChanges9">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.common6">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.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.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>
			<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.diagram6">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>
			<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.ui6">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>
		<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>
			<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.support5">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="Migrations4">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="TranslationKeysChanges3">Translation Keys Changes</h4>
		<p>See 
			<a href="i18n_changes.html#sirius60">this document</a> for the complete list of message keys added or removed in Sirius 6.0.
		</p>
	</body>
</html>