https://bugs.eclipse.org/bugs/show_bug.cgi?id=77412
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Util.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Util.java
index 24a1472..06df66b 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Util.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Util.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2Util.java,v 1.1 2005/01/12 22:03:28 khussey Exp $
+ * $Id: UML2Util.java,v 1.2 2005/01/12 22:52:52 khussey Exp $
  */
 package org.eclipse.uml2.util;
 
@@ -317,7 +317,7 @@
 		protected Collection packages = null;
 
 		protected void setName(ENamedElement eNamedElement, String name) {
-			eNamedElement.setName(name);
+			eNamedElement.setName(getValidIdentifier(name));
 		}
 
 		protected void setName(ENamedElement eNamedElement,
@@ -2222,6 +2222,38 @@
 		element.setValue(stereotype, propertyName, value);
 	}
 
+	protected static String getValidIdentifier(String name) {
+		return appendValidIdentifier(new StringBuffer(), name).toString();
+	}
+
+	protected static StringBuffer appendValidIdentifier(
+			StringBuffer validIdentifier, String name) {
+
+		if (!isEmpty(name)) {
+			char char_0 = name.charAt(0);
+
+			if (Character.isJavaIdentifierStart(char_0)) {
+				validIdentifier.append(char_0);
+			} else {
+				validIdentifier.append('_');
+
+				if (Character.isJavaIdentifierPart(char_0)) {
+					validIdentifier.append(char_0);
+				}
+			}
+
+			for (int i = 1; i < name.length(); ++i) {
+				char char_i = name.charAt(i);
+
+				if (Character.isJavaIdentifierPart(char_i)) {
+					validIdentifier.append(char_i);
+				}
+			}
+		}
+
+		return validIdentifier;
+	}
+
 	protected static String getQualifiedText(EObject eObject) {
 		return getQualifiedText(eObject, new QualifiedTextProvider());
 	}