Class names of Figures generated as inner classes may clash with well-known classes, thus we have to make sure we avoid that
diff --git a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/LinkEditPartGenerator.java b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/LinkEditPartGenerator.java
index fcfc916..c61876c 100644
--- a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/LinkEditPartGenerator.java
+++ b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/LinkEditPartGenerator.java
@@ -66,7 +66,11 @@
     stringBuffer.append(TEXT_5);
     ImportUtil importManager = new ImportUtil(genDiagram.getEditPartsPackageName());
     stringBuffer.append(TEXT_6);
-    importManager.markImportLocation(stringBuffer);
+    
+if (genLink.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genLink.getViewmap()).getClassName());
+}
+importManager.markImportLocation(stringBuffer);
     stringBuffer.append(TEXT_7);
     stringBuffer.append(genLink.getEditPartClassName());
     stringBuffer.append(TEXT_8);
diff --git a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeEditPartGenerator.java b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeEditPartGenerator.java
index 4a84309..59cea44 100644
--- a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeEditPartGenerator.java
+++ b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeEditPartGenerator.java
@@ -254,6 +254,9 @@
 importManager.addImport("org.eclipse.gmf.runtime.notation.View");
 importManager.addImport("org.eclipse.emf.ecore.EAnnotation");
 importManager.addImport("org.eclipse.gmf.runtime.draw2d.ui.internal.figures.ImageFigureEx");
+if (genNode.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genNode.getViewmap()).getClassName());
+}
 importManager.markImportLocation(stringBuffer);
 
     stringBuffer.append(TEXT_6);
diff --git a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeLabelEditPartGenerator.java b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeLabelEditPartGenerator.java
index 5023496..d9c6f8e 100644
--- a/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeLabelEditPartGenerator.java
+++ b/plugins/org.eclipse.gmf.codegen/src-templates/org/eclipse/gmf/codegen/templates/parts/NodeLabelEditPartGenerator.java
@@ -204,7 +204,11 @@
     stringBuffer.append(TEXT_4);
     stringBuffer.append(genDiagram.getEditPoliciesPackageName());
     stringBuffer.append(TEXT_5);
-    importManager.markImportLocation(stringBuffer);
+    
+if (genLabel.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genLabel.getViewmap()).getClassName());
+}
+importManager.markImportLocation(stringBuffer);
     stringBuffer.append(TEXT_6);
     stringBuffer.append(genLabel.getEditPartClassName());
     stringBuffer.append(TEXT_7);
diff --git a/plugins/org.eclipse.gmf.codegen/templates/parts/LinkEditPart.javajet b/plugins/org.eclipse.gmf.codegen/templates/parts/LinkEditPart.javajet
index a25fd60..e6d6e75 100644
--- a/plugins/org.eclipse.gmf.codegen/templates/parts/LinkEditPart.javajet
+++ b/plugins/org.eclipse.gmf.codegen/templates/parts/LinkEditPart.javajet
@@ -12,7 +12,11 @@
 import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.notation.View;
-<%importManager.markImportLocation(stringBuffer);%>
+<%
+if (genLink.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genLink.getViewmap()).getClassName());
+}
+importManager.markImportLocation(stringBuffer);%>
 
 /**
  * @generated
diff --git a/plugins/org.eclipse.gmf.codegen/templates/parts/NodeEditPart.javajet b/plugins/org.eclipse.gmf.codegen/templates/parts/NodeEditPart.javajet
index e2018c9..f2b1bc2 100644
--- a/plugins/org.eclipse.gmf.codegen/templates/parts/NodeEditPart.javajet
+++ b/plugins/org.eclipse.gmf.codegen/templates/parts/NodeEditPart.javajet
@@ -24,6 +24,9 @@
 importManager.addImport("org.eclipse.gmf.runtime.notation.View");
 importManager.addImport("org.eclipse.emf.ecore.EAnnotation");
 importManager.addImport("org.eclipse.gmf.runtime.draw2d.ui.internal.figures.ImageFigureEx");
+if (genNode.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genNode.getViewmap()).getClassName());
+}
 importManager.markImportLocation(stringBuffer);
 %>
 
diff --git a/plugins/org.eclipse.gmf.codegen/templates/parts/NodeLabelEditPart.javajet b/plugins/org.eclipse.gmf.codegen/templates/parts/NodeLabelEditPart.javajet
index 240401f..4e40e96 100644
--- a/plugins/org.eclipse.gmf.codegen/templates/parts/NodeLabelEditPart.javajet
+++ b/plugins/org.eclipse.gmf.codegen/templates/parts/NodeLabelEditPart.javajet
@@ -15,7 +15,11 @@
 //import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
 import <%=genDiagram.getEditPoliciesPackageName()%>.LabelDirectEditPolicy;
 import org.eclipse.gmf.runtime.notation.View;
-<%importManager.markImportLocation(stringBuffer);%>
+<%
+if (genLabel.getViewmap() instanceof InnerClassViewmap) {
+importManager.registerInnerClass(((InnerClassViewmap) genLabel.getViewmap()).getClassName());
+}
+importManager.markImportLocation(stringBuffer);%>
 
 /**
  * @generated
diff --git a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportAssistant.java b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportAssistant.java
index 8005e54..be4d0b9 100644
--- a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportAssistant.java
+++ b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportAssistant.java
@@ -22,4 +22,5 @@
 	void emitSortedImports();
 	String getImportedName(String qualifiedName);
 	void addImport(String qualifiedName);
+	void registerInnerClass(String innerClassName);
 }
diff --git a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportUtil.java b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportUtil.java
index b2e3e60..1461e82 100644
--- a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportUtil.java
+++ b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/ImportUtil.java
@@ -89,6 +89,10 @@
 		myImportManager.addImport(qualifiedName);
 	}
 
+	public void registerInnerClass(String innerClassName) {
+		myImportManager.addPseudoImport(innerClassName);
+	}
+
 	public void addImport(String packageName, String shortName) {
 		myImportManager.addImport(packageName, shortName);
 	}
diff --git a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/NullImportAssistant.java b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/NullImportAssistant.java
index 888a0c7..05e2ee8 100644
--- a/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/NullImportAssistant.java
+++ b/plugins/org.eclipse.gmf.common/src/org/eclipse/gmf/common/codegen/NullImportAssistant.java
@@ -68,4 +68,9 @@
 	public void addImport(String qualifiedName) {
 	}
 
+	/*
+	 * NO-OP
+	 */
+	public void registerInnerClass(String innerClassName) {
+	}
 }