[544487] Tweaking formatting and bumping bundle/feature versions.
diff --git a/examples/org.eclipse.uml2.examples.uml.ui/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples.uml.ui/META-INF/MANIFEST.MF
index 53003aa..49584e7 100644
--- a/examples/org.eclipse.uml2.examples.uml.ui/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.uml2.examples.uml.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.uml2.examples.uml.ui; singleton:=true
-Bundle-Version: 5.5.0.qualifier
+Bundle-Version: 5.6.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.uml2.examples.uml.ui.UMLExamplesUIPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/dialogs/UML2EcoreConverterOptionsDialog.java b/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/dialogs/UML2EcoreConverterOptionsDialog.java
index c071b8c..ca845f7 100644
--- a/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/dialogs/UML2EcoreConverterOptionsDialog.java
+++ b/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/dialogs/UML2EcoreConverterOptionsDialog.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
+ * Copyright (c) 2005, 2019 IBM Corporation, Embarcadero Technologies, CEA, EclipseSource, and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -203,21 +203,21 @@
 			UMLUtil.UML2EcoreConverter.OPTION__OPPOSITE_ROLE_NAMES,
 			new String[]{ignoreChoiceLabel, processChoiceLabel},
 			ignoreChoiceLabel);
-		
-		createOptionArea(
-			parent,
+
+		createOptionArea(parent,
 			UMLExamplesUIPlugin.INSTANCE
 				.getString("_UI_UnsettablePrimitiveAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
-		
-		createOptionArea(
-			parent,
+
+		createOptionArea(parent,
 			UMLExamplesUIPlugin.INSTANCE
 				.getString("_UI_NullableEnumAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
 	}
 
diff --git a/examples/org.eclipse.uml2.examples/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples/META-INF/MANIFEST.MF
index 8b77f3d..0d8a1e0 100644
--- a/examples/org.eclipse.uml2.examples/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.uml2.examples/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.uml2.examples
-Bundle-Version: 5.5.0.qualifier
+Bundle-Version: 5.6.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/examples/org.eclipse.uml2.examples/about.properties b/examples/org.eclipse.uml2.examples/about.properties
index b50288f..2828ddd 100644
--- a/examples/org.eclipse.uml2.examples/about.properties
+++ b/examples/org.eclipse.uml2.examples/about.properties
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+# Copyright (c) 2006, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 # All rights reserved.   This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
 #   Kenn Hussey (Embarcadero Technologies) - 219804, 204200
 #   Kenn Hussey (CEA) - 327039, 316165
 #   Kenn Hussey - 526568, 535301
+#   Camille Letavernier (EclipseSource) - 544487
 #
 
 # NLS_MESSAGEFORMAT_VAR
@@ -24,5 +25,5 @@
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2003, 2018.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2003, 2019.  All rights reserved.\n\
 Visit http://www.eclipse.org/uml2
diff --git a/features/org.eclipse.uml2-feature/feature.xml b/features/org.eclipse.uml2-feature/feature.xml
index 81bed3d..9761ff9 100644
--- a/features/org.eclipse.uml2-feature/feature.xml
+++ b/features/org.eclipse.uml2-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.uml2"
       label="%feature.label"
-      version="5.5.0.qualifier"
+      version="5.6.0.qualifier"
       provider-name="%feature.provider-name"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.license"
@@ -13,7 +13,7 @@
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v20.html">
-      Copyright (c) 2003, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+      Copyright (c) 2003, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 All rights reserved.   This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v2.0
 which accompanies this distribution, and is available at
diff --git a/features/org.eclipse.uml2.examples-feature/feature.xml b/features/org.eclipse.uml2.examples-feature/feature.xml
index 27f5eb7..2e6e555 100644
--- a/features/org.eclipse.uml2.examples-feature/feature.xml
+++ b/features/org.eclipse.uml2.examples-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.uml2.examples"
       label="%feature.label"
-      version="5.5.0.qualifier"
+      version="5.6.0.qualifier"
       provider-name="%feature.provider-name"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.license"
@@ -13,7 +13,7 @@
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v20.html">
-      Copyright (c) 2003, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+      Copyright (c) 2003, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 All rights reserved.   This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v2.0
 which accompanies this distribution, and is available at
diff --git a/features/org.eclipse.uml2.sdk-feature/feature.xml b/features/org.eclipse.uml2.sdk-feature/feature.xml
index 22380e2..b9401b5 100644
--- a/features/org.eclipse.uml2.sdk-feature/feature.xml
+++ b/features/org.eclipse.uml2.sdk-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.uml2.sdk"
       label="%feature.label"
-      version="5.5.0.qualifier"
+      version="5.6.0.qualifier"
       provider-name="%feature.provider-name"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.license"
@@ -13,7 +13,7 @@
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v20.html">
-      Copyright (c) 2003, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+      Copyright (c) 2003, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 All rights reserved.   This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v2.0
 which accompanies this distribution, and is available at
diff --git a/features/org.eclipse.uml2.uml-feature/feature.xml b/features/org.eclipse.uml2.uml-feature/feature.xml
index 5172d12..1dabdc4 100644
--- a/features/org.eclipse.uml2.uml-feature/feature.xml
+++ b/features/org.eclipse.uml2.uml-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.uml2.uml"
       label="%feature.label"
-      version="5.5.0.qualifier"
+      version="5.6.0.qualifier"
       provider-name="%feature.provider-name"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.license"
@@ -13,7 +13,7 @@
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v20.html">
-      Copyright (c) 2003, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+      Copyright (c) 2003, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 All rights reserved.   This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v2.0
 which accompanies this distribution, and is available at
diff --git a/plugins/org.eclipse.uml2.uml.ecore.importer/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2.uml.ecore.importer/META-INF/MANIFEST.MF
index c1b13a9..ce842cf 100644
--- a/plugins/org.eclipse.uml2.uml.ecore.importer/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.uml2.uml.ecore.importer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.uml2.uml.ecore.importer;singleton:=true
-Bundle-Version: 3.5.0.qualifier
+Bundle-Version: 3.6.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.uml2.uml.ecore.importer.UMLImporterPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.uml2.uml.ecore.importer/src/org/eclipse/uml2/uml/ecore/importer/ui/UMLImporterDetailPage.java b/plugins/org.eclipse.uml2.uml.ecore.importer/src/org/eclipse/uml2/uml/ecore/importer/ui/UMLImporterDetailPage.java
index 9351684..41483ce 100644
--- a/plugins/org.eclipse.uml2.uml.ecore.importer/src/org/eclipse/uml2/uml/ecore/importer/ui/UMLImporterDetailPage.java
+++ b/plugins/org.eclipse.uml2.uml.ecore.importer/src/org/eclipse/uml2/uml/ecore/importer/ui/UMLImporterDetailPage.java
@@ -286,17 +286,19 @@
 			UMLUtil.UML2EcoreConverter.OPTION__OPPOSITE_ROLE_NAMES,
 			new String[]{ignoreChoiceLabel, processChoiceLabel},
 			ignoreChoiceLabel);
-		addOptionControl(
-			optionsComposite,
-			UMLImporterPlugin.INSTANCE.getString("_UI_UnsettablePrimitiveAttributes_label"), //$NON-NLS-1$
+		addOptionControl(optionsComposite,
+			UMLImporterPlugin.INSTANCE
+				.getString("_UI_UnsettablePrimitiveAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
-		addOptionControl(
-			optionsComposite,
-			UMLImporterPlugin.INSTANCE.getString("_UI_NullableEnumAttributes_label"), //$NON-NLS-1$
+		addOptionControl(optionsComposite,
+			UMLImporterPlugin.INSTANCE
+				.getString("_UI_NullableEnumAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
 
 		scrolledComposite.setContent(optionsComposite);
diff --git a/plugins/org.eclipse.uml2.uml.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2.uml.editor/META-INF/MANIFEST.MF
index 923efda..d03c84e 100644
--- a/plugins/org.eclipse.uml2.uml.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.uml2.uml.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.uml2.uml.editor; singleton:=true
-Bundle-Version: 5.5.0.qualifier
+Bundle-Version: 5.6.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.uml2.uml.editor.UMLEditorPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.uml2.uml.editor/src/org/eclipse/uml2/uml/editor/dialogs/Profile2EPackageConverterOptionsDialog.java b/plugins/org.eclipse.uml2.uml.editor/src/org/eclipse/uml2/uml/editor/dialogs/Profile2EPackageConverterOptionsDialog.java
index a6bec71..2361895 100644
--- a/plugins/org.eclipse.uml2.uml.editor/src/org/eclipse/uml2/uml/editor/dialogs/Profile2EPackageConverterOptionsDialog.java
+++ b/plugins/org.eclipse.uml2.uml.editor/src/org/eclipse/uml2/uml/editor/dialogs/Profile2EPackageConverterOptionsDialog.java
@@ -193,19 +193,21 @@
 			UMLUtil.UML2EcoreConverter.OPTION__OPPOSITE_ROLE_NAMES,
 			new String[]{ignoreChoiceLabel, processChoiceLabel},
 			ignoreChoiceLabel);
-		
-		createOptionArea(
-			parent,
-			UMLEditorPlugin.INSTANCE.getString("_UI_UnsettablePrimitiveAttributes_label"), //$NON-NLS-1$
+
+		createOptionArea(parent,
+			UMLEditorPlugin.INSTANCE
+				.getString("_UI_UnsettablePrimitiveAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
-		
-		createOptionArea(
-			parent,
-			UMLEditorPlugin.INSTANCE.getString("_UI_NullableEnumAttributes_label"), //$NON-NLS-1$
+
+		createOptionArea(parent,
+			UMLEditorPlugin.INSTANCE
+				.getString("_UI_NullableEnumAttributes_label"), //$NON-NLS-1$
 			UMLUtil.UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
-			new String[]{ignoreChoiceLabel, reportChoiceLabel, processChoiceLabel},
+			new String[]{ignoreChoiceLabel, reportChoiceLabel,
+				processChoiceLabel},
 			ignoreChoiceLabel);
 	}
 }
diff --git a/plugins/org.eclipse.uml2.uml/about.properties b/plugins/org.eclipse.uml2.uml/about.properties
index d9bfff9..8edbc38 100644
--- a/plugins/org.eclipse.uml2.uml/about.properties
+++ b/plugins/org.eclipse.uml2.uml/about.properties
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+# Copyright (c) 2006, 2019 IBM Corporation, Embarcadero Technologies, CEA, and others.
 # All rights reserved.   This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
 #   Kenn Hussey - 323181, 526217, 535301
 #   Christian W. Damus (CEA) - 227616
 #   Kenn Hussey (CEA) - 227616, 454864, 485756, 511674
+#   Camille Letavernier (EclipseSource) - 544487
 #
 
 # NLS_MESSAGEFORMAT_VAR
@@ -25,5 +26,5 @@
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2003, 2018.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2003, 2019.  All rights reserved.\n\
 Visit http://www.eclipse.org/uml2
diff --git a/plugins/org.eclipse.uml2.uml/plugin.properties b/plugins/org.eclipse.uml2.uml/plugin.properties
index aea308f..47b812f 100644
--- a/plugins/org.eclipse.uml2.uml/plugin.properties
+++ b/plugins/org.eclipse.uml2.uml/plugin.properties
@@ -1,4 +1,4 @@
-# Copyright (c) 2005, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
+# Copyright (c) 2005, 2019 IBM Corporation, Embarcadero Technologies, CEA, EclipseSource and others.
 # All rights reserved.   This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
 #   Kenn Hussey (CEA) - 327039, 351774, 373709, 388636, 295864, 397140, 316165, 322715, 80307, 416833, 418466, 459651, 491718
 #   Christian W. Damus (CEA) - 373643, 374012, 163556, 409396, 180744, 403374, 420338, 405065
 #   Kenn Hussey - 535301
+#   Camille Letavernier (EclipseSource) - 544487
 #
 
 # NLS_MESSAGEFORMAT_VAR
@@ -90,7 +91,7 @@
 _UI_Ecore2UMLConverter_ProcessAnnotationDetails_diagnostic = Annotated element ''{0}'' with details from source ''{1}''.
 _UI_Ecore2UMLConverter_ProcessOppositeRoleName_diagnostic = Property ''{0}'' association-owned opposite has been named ''{1}''.
 _UI_UML2EcoreConverter_ProcessOptionalPrimitiveAttribute_diagnostic = Optional primitive attribute ''{0}}'' has been made unsettable.
-_UI_UML2EcoreConverter_ProcessOptionalEnumAttribute_diagnostic = Optional enum attribute ''{0}'' has been typed with a nullable enumeration.
+_UI_UML2EcoreConverter_ProcessOptionalEnumAttribute_diagnostic = Optional enum attribute ''{0}'' has been made unsettable and typed with a nullable enumeration.
 
 _UI_Ecore2UMLConverter_ReportEcoreTaggedValue_diagnostic = Element ''{0}'' should have an Ecore tag ''{1}'' with value of ''{2}''.
 _UI_Ecore2UMLConverter_ReportRedefinesAnnotation_diagnostic = ''{0}'' should redefine ''{1}'' based on an annotation.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
index 9bba684..3981c61 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
@@ -4163,21 +4163,22 @@
 		 * @since 5.0
 		 */
 		public static final String OPTION__LINE_SEPARATOR = "LINE_SEPARATOR"; //$NON-NLS-1$
-		
+
 		/**
-		 * The option for converting optional UML properties to unsettable Ecore attributes,
-		 * when they are typed with primitives.
-		 * Supported choices are <code>OPTION__IGNORE</code>, <code>OPTION__REPORT</code>
-		 * and <code>OPTION__PROCESS</code>.
+		 * The option for converting optional UML properties typed with a
+		 * primitive to unsettable Ecore attributes. Supported choices are
+		 * <code>OPTION__IGNORE</code>, <code>OPTION__REPORT</code> and
+		 * <code>OPTION__PROCESS</code>.
 		 * 
 		 * @since 5.6
 		 */
 		public static final String OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES = "UNSETTABLE_PRIMITIVE_ATTRIBUTES"; //$NON-NLS-1$
-		
+
 		/**
-		 * The option for converting optional UML properties typed with an Enumeration
-		 * to nullable Ecore attributes. Supported choices are <code>OPTION__IGNORE</code>, 
-		 * <code>OPTION__REPORT</code> and <code>OPTION__PROCESS</code>.
+		 * The option for converting optional UML properties typed with an
+		 * Enumeration to nullable Ecore attributes. Supported choices are
+		 * <code>OPTION__IGNORE</code>, <code>OPTION__REPORT</code> and
+		 * <code>OPTION__PROCESS</code>.
 		 * 
 		 * @since 5.6
 		 */
@@ -4875,17 +4876,21 @@
 				setName(eEnum, enumeration);
 
 				if (options != null && OPTION__PROCESS
-							.equals(options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))) {
-					// Also generate the corresponding EDataType, for Optional Enums
+					.equals(options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))) {
+
+					// Also generate the corresponding EDataType, for optional
+					// Enums; see
 					// https://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_enumeration-based_attributes_that_support_null
-					EDataType enumType = EcoreFactory.eINSTANCE.createEDataType();
+					EDataType enumType = EcoreFactory.eINSTANCE
+						.createEDataType();
 					enumToDataType.put(eEnum, enumType);
 					ePackage.getEClassifiers().add(enumType);
-	
-					// XXX EMF Recipe recommends using the same name, but that's not required;
-					// Using a different name will probably make it easier to generate Java and
-					// the validation isn't going to complain that 2 classifiers have the same name
-					enumType.setName(eEnum.getName()+"_Optional");
+
+					// XXX EMF Recipe recommends using the same name, but that's
+					// not required; using a different name will probably make
+					// it easier to generate Java and the validation isn't going
+					// to complain that 2 classifiers have the same name
+					enumType.setName(eEnum.getName() + "_Optional");
 					enumType.setInstanceTypeName(Enumerator.class.getName());
 					ExtendedMetaData.INSTANCE.setBaseType(enumType, eEnum);
 				}
@@ -5406,64 +5411,97 @@
 
 				caseMultiplicityElement(property);
 				
-				if (eStructuralFeature.getEType() != null && eStructuralFeature instanceof EAttribute 
-						&& eStructuralFeature.getLowerBound() == 0 && eStructuralFeature.getUpperBound() == 1) {
-					EAttribute eAttribute = (EAttribute)eStructuralFeature;
-					
-					Class<?> instanceClass = eAttribute.getEType().getInstanceClass();
-					if (instanceClass != null && (instanceClass.isPrimitive() || instanceClass == String.class)) { // Optional Primitives + Strings
-						// Note: we need String as well, because EMF/Ecore is inconsistent regarding Optional 
-						// Strings that aren't unsettable, when they have a default value. The null value will 
-						// be kept in memory, but not persisted, causing the value to change (from null to 
+				if (eStructuralFeature.getEType() != null
+					&& eStructuralFeature instanceof EAttribute
+					&& eStructuralFeature.getLowerBound() == 0
+					&& eStructuralFeature.getUpperBound() == 1) {
+
+					EAttribute eAttribute = (EAttribute) eStructuralFeature;
+
+					Class<?> instanceClass = eAttribute.getEType()
+						.getInstanceClass();
+
+					if (instanceClass != null && (instanceClass.isPrimitive()
+						|| instanceClass == String.class)) {
+
+						// Note: we need String as well, because EMF/Ecore is
+						// inconsistent regarding optional Strings that aren't
+						// unsettable, when they have a default value. The null
+						// value will be kept in memory, but not persisted,
+						// causing the value to change (from null to
 						// default) when the model is reloaded.
-						if (options != null
-								&& OPTION__PROCESS.equals(options.get(OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES))){
-							((EAttribute)eAttribute).setUnsettable(true);
+						if (options != null && OPTION__PROCESS.equals(options
+							.get(OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES))) {
+
+							((EAttribute) eAttribute).setUnsettable(true);
+
 							if (diagnostics != null) {
-								diagnostics.add(new BasicDiagnostic(Diagnostic.INFO,
-										UMLValidator.DIAGNOSTIC_SOURCE, OPTIONAL_ATTRIBUTE, UMLPlugin.INSTANCE
-										.getString(
-												"_UI_UML2EcoreConverter_ProcessOptionalPrimitiveAttribute_diagnostic", //$NON-NLS-1$
-												getMessageSubstitutions(context, property)),
-										new Object[]{eAttribute}));
-							}
-						} else if (options != null 
-								&& OPTION__REPORT.equals(options.get(OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES))) {
-							// UML Multiplicity is 0..1 but the EAttribute is not unsettable; 
-							// warn about the semantic inconsistency
-							diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
-									UMLValidator.DIAGNOSTIC_SOURCE, OPTIONAL_ATTRIBUTE, UMLPlugin.INSTANCE
-									.getString(
-											"_UI_UML2EcoreConverter_ReportOptionalPrimitiveAttribute_diagnostic", //$NON-NLS-1$
-											getMessageSubstitutions(context, property)),
+								diagnostics.add(new BasicDiagnostic(
+									Diagnostic.INFO,
+									UMLValidator.DIAGNOSTIC_SOURCE,
+									OPTIONAL_ATTRIBUTE,
+									UMLPlugin.INSTANCE.getString(
+										"_UI_UML2EcoreConverter_ProcessOptionalPrimitiveAttribute_diagnostic", //$NON-NLS-1$
+										getMessageSubstitutions(context,
+											property)),
 									new Object[]{eAttribute}));
+							}
+						} else if (options != null
+							&& OPTION__REPORT.equals(options.get(
+								OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES))) {
+
+							// UML multiplicity is 0..1 but the EAttribute is
+							// not unsettable; warn about the semantic
+							// inconsistency
+							diagnostics.add(new BasicDiagnostic(
+								Diagnostic.WARNING,
+								UMLValidator.DIAGNOSTIC_SOURCE,
+								OPTIONAL_ATTRIBUTE,
+								UMLPlugin.INSTANCE.getString(
+									"_UI_UML2EcoreConverter_ReportOptionalPrimitiveAttribute_diagnostic", //$NON-NLS-1$
+									getMessageSubstitutions(context, property)),
+								new Object[]{eAttribute}));
 						}
-					} else if (eAttribute.getEType() instanceof EEnum) { // Optional Enums 
-						if (options != null 
-							&& OPTION__PROCESS.equals(options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))){
-							EEnum eEnum = (EEnum)eAttribute.getEType();
+					} else if (eAttribute.getEType() instanceof EEnum) {
+
+						if (options != null && OPTION__PROCESS.equals(
+							options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))) {
+
+							EEnum eEnum = (EEnum) eAttribute.getEType();
 							EDataType enumType = enumToDataType.get(eEnum);
-							eAttribute.setEType(enumType); // Use the Optional Enum type
-							eAttribute.setUnsettable(true); // Make unsettable, so EMF can distinguish Null (NIL) from Default
-							
+
+							// Use the optional Enum type
+							eAttribute.setEType(enumType);
+
+							// Make unsettable, so EMF can distinguish Null
+							// (NIL) from default
+							eAttribute.setUnsettable(true);
+
 							if (diagnostics != null) {
-								diagnostics.add(new BasicDiagnostic(Diagnostic.INFO,
-									UMLValidator.DIAGNOSTIC_SOURCE, OPTIONAL_ENUM_ATTRIBUTE, UMLPlugin.INSTANCE
-										.getString(
-											"_UI_UML2EcoreConverter_ProcessOptionalEnumAttribute_diagnostic", //$NON-NLS-1$
-											getMessageSubstitutions(context, property)),
+								diagnostics.add(new BasicDiagnostic(
+									Diagnostic.INFO,
+									UMLValidator.DIAGNOSTIC_SOURCE,
+									OPTIONAL_ENUM_ATTRIBUTE,
+									UMLPlugin.INSTANCE.getString(
+										"_UI_UML2EcoreConverter_ProcessOptionalEnumAttribute_diagnostic", //$NON-NLS-1$
+										getMessageSubstitutions(context,
+											property)),
 									new Object[]{eAttribute}));
 							}
-						} else if (options != null 
-								&& OPTION__REPORT.equals(options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))) {
-							// UML Multiplicity is 0..1 but the EAttribute is not a Nullable Enum; 
-							// warn about the semantic inconsistency
-							diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
-									UMLValidator.DIAGNOSTIC_SOURCE, OPTIONAL_ENUM_ATTRIBUTE, UMLPlugin.INSTANCE
-									.getString(
-											"_UI_UML2EcoreConverter_ReportOptionalEnumAttribute_diagnostic", //$NON-NLS-1$
-											getMessageSubstitutions(context, property)),
-									new Object[]{eAttribute}));
+						} else if (options != null && OPTION__REPORT.equals(
+							options.get(OPTION__NULLABLE_ENUM_ATTRIBUTES))) {
+
+							// UML multiplicity is 0..1 but the EAttribute is
+							// not a nullable Enum; warn about the semantic
+							// inconsistency
+							diagnostics.add(new BasicDiagnostic(
+								Diagnostic.WARNING,
+								UMLValidator.DIAGNOSTIC_SOURCE,
+								OPTIONAL_ENUM_ATTRIBUTE,
+								UMLPlugin.INSTANCE.getString(
+									"_UI_UML2EcoreConverter_ReportOptionalEnumAttribute_diagnostic", //$NON-NLS-1$
+									getMessageSubstitutions(context, property)),
+								new Object[]{eAttribute}));
 						}
 					}
 				}
@@ -13056,21 +13094,20 @@
 				UML2EcoreConverter.OPTION__PROPERTY_DEFAULT_EXPRESSIONS,
 				OPTION__IGNORE);
 		}
-		
-		if (!options
-				.containsKey(UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
 
-				options.put(
-					UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
-					OPTION__IGNORE);
+		if (!options.containsKey(
+			UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
+
+			options.put(
+				UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
+				OPTION__IGNORE);
 		}
-		
-		if (!options
-				.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
 
-				options.put(
-					UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
-					OPTION__IGNORE);
+		if (!options
+			.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
+
+			options.put(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
+				OPTION__IGNORE);
 		}
 
 		return convertToEcore(package_, options, null, null);
@@ -13221,13 +13258,18 @@
 				UML2EcoreConverter.OPTION__PROPERTY_DEFAULT_EXPRESSIONS,
 				OPTION__REPORT);
 		}
-		
-		if (!options.containsKey(UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
-			options.put(UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES, OPTION__REPORT);
+
+		if (!options.containsKey(
+			UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
+			options.put(
+				UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
+				OPTION__REPORT);
 		}
-		
-		if (!options.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
-			options.put(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES, OPTION__REPORT);
+
+		if (!options
+			.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
+			options.put(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
+				OPTION__REPORT);
 		}
 
 		@SuppressWarnings("unchecked")
@@ -13507,13 +13549,18 @@
 				UML2EcoreConverter.OPTION__PROPERTY_DEFAULT_EXPRESSIONS,
 				OPTION__REPORT);
 		}
-		
-		if (!options.containsKey(UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
-			options.put(UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES, OPTION__REPORT);
+
+		if (!options.containsKey(
+			UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES)) {
+			options.put(
+				UML2EcoreConverter.OPTION__UNSETTABLE_PRIMITIVE_ATTRIBUTES,
+				OPTION__REPORT);
 		}
-		
-		if (!options.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
-			options.put(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES, OPTION__REPORT);
+
+		if (!options
+			.containsKey(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES)) {
+			options.put(UML2EcoreConverter.OPTION__NULLABLE_ENUM_ATTRIBUTES,
+				OPTION__REPORT);
 		}
 
 		@SuppressWarnings("unchecked")
diff --git a/plugins/org.eclipse.uml2/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2/META-INF/MANIFEST.MF
index 4174ed9..94e3f4b 100644
--- a/plugins/org.eclipse.uml2/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.uml2/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.uml2
-Bundle-Version: 5.5.0.qualifier
+Bundle-Version: 5.6.0.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.uml2/about.properties b/plugins/org.eclipse.uml2/about.properties
index 6ffe126..e0dfece 100644
--- a/plugins/org.eclipse.uml2/about.properties
+++ b/plugins/org.eclipse.uml2/about.properties
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2018 IBM Corporation, Embarcadero Technologies, and others.
+# Copyright (c) 2006, 2019 IBM Corporation, Embarcadero Technologies, and others.
 # All rights reserved.   This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
 #   Kenn Hussey (Embarcadero Technologies) - 219804, 204200
 #   Kenn Hussey - 323181, 530555, 535301
 #   Kenn Hussey (CEA) - 286404, 485756, 511674
+#   Camille Letavernier (EclipseSource) - 544487
 #
 
 # NLS_MESSAGEFORMAT_VAR
@@ -24,5 +25,5 @@
 Version: {featureVersion}\n\
 Build id: {0}\n\
 \n\
-(c) Copyright Eclipse contributors and others 2003, 2018.  All rights reserved.\n\
+(c) Copyright Eclipse contributors and others 2003, 2019.  All rights reserved.\n\
 Visit http://www.eclipse.org/uml2