refactorings REMOVE EMPTY ASSOCIATED CLASS and INLINE CLASS added
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class
new file mode 100644
index 0000000..3a5cdbb
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..3ef980f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class
new file mode 100644
index 0000000..da45b3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..18c5640
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..a1e64c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class
new file mode 100644
index 0000000..9f93efd
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..26e91c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/bin/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel
new file mode 100644
index 0000000..1badfcb
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<comrel:CompositeRefactoring xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:comrel="http://comrel/0.1" name="inlineclass" refId="comrel.inlineclass" label="Inline Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+  <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="inlineclass">

+    <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedAttributesNoAssocEnds" helperUnitId="comrel.getownedattributesnoassocends" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.0">

+      <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="property_s" type="org.eclipse.uml2.uml.Property"/>

+    </helperUnits>

+    <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedOperations" helperUnitId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" multiFeatureHelper="//@helper.1">

+      <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="operation_s" type="org.eclipse.uml2.uml.Operation"/>

+    </helperUnits>

+    <helperUnits xsi:type="comrel:SingleFeatureUnit" name="Get Associated Class" helperUnitId="comrel.getassociatedclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" singleFeatureHelper="//@helper.2">

+      <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="class_out" type="org.eclipse.uml2.uml.Class"/>

+    </helperUnits>

+    <helperUnits xsi:type="comrel:SingleFeatureUnit" name="Get Class  Name" helperUnitId="comrel.getclassname" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" singleFeatureHelper="//@helper.3">

+      <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="string_out" type="java.lang.String"/>

+    </helperUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="1">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Attribute" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.0">

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+        <inputPorts name="className" description="" type="java.lang.String"/>

+      </refactoringUnit>

+      <singleInputPorts name="className" type="java.lang.String"/>

+      <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Property"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" seqExecutionOrder="2">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="Move Operation" unitId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.1">

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+        <inputPorts name="className" description="" type="java.lang.String"/>

+      </refactoringUnit>

+      <singleInputPorts name="className" type="java.lang.String"/>

+      <multiInputPort name="selectedEObjects" type="org.eclipse.uml2.uml.Operation"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:AtomicUnit" name="Remove Empty Associated Class" seqExecutionOrder="3" unitId="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass" label="Remove Empty Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML" modelRefactoring="//@modelRefactorings.2">

+      <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+    </refactoringUnits>

+    <inputPorts xsi:type="comrel:SingleInputPort" name="selectedEObject" type="org.eclipse.uml2.uml.Class"/>

+  </mainRefactoringUnit>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.1"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.0/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.1/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.2/@inputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.2/@outputPort" target="//@mainRefactoringUnit/@helperUnits.3/@inputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.3/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.3/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.2/@inputPorts.0"/>

+  <modelRefactorings name="Move Attribute" refId="org.eclipse.emf.refactor.refactorings.uml24.moveattribute" label="Move Attribute" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+    <inputPorts name="className" description="" type="java.lang.String"/>

+  </modelRefactorings>

+  <modelRefactorings name="Move Operation" refId="org.eclipse.emf.refactor.refactorings.uml24.moveoperation" label="Move Operation" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+    <inputPorts name="className" description="" type="java.lang.String"/>

+  </modelRefactorings>

+  <modelRefactorings name="Remove Empty Associated Class" refId="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass" label="Remove Empty Associated Class" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+  </modelRefactorings>

+  <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedAttributesNoAssocEnds" helperId="comrel.getownedattributesnoassocends" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="property_s" type="org.eclipse.uml2.uml.Property"/>

+  </helper>

+  <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedOperations" helperId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPort name="class_" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="operation_s" type="org.eclipse.uml2.uml.Operation"/>

+  </helper>

+  <helper xsi:type="comrel:SingleFeatureHelper" name="Get Associated Class" helperId="comrel.getassociatedclass" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="class_out" type="org.eclipse.uml2.uml.Class"/>

+  </helper>

+  <helper xsi:type="comrel:SingleFeatureHelper" name="Get Class  Name" helperId="comrel.getclassname" namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">

+    <inputPort name="class_in" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="string_out" type="java.lang.String"/>

+  </helper>

+</comrel:CompositeRefactoring>

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram
new file mode 100644
index 0000000..7393961
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/comrelmodels/inlineclass.comrel_diagram
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:comrel="http://comrel/0.1" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_Yq6icOn7EeChi9jJDguWgA" type="Comrel" name="inlineclass.comrel_diagram" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_gNF6cOn7EeChi9jJDguWgA" type="2005" fontName="Segoe UI">

+    <children xmi:type="notation:DecorationNode" xmi:id="_gNF6c-n7EeChi9jJDguWgA" type="5083"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_gNF6dOn7EeChi9jJDguWgA" type="7079">

+      <children xmi:type="notation:Shape" xmi:id="_5LPaEOn7EeChi9jJDguWgA" type="3062" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_5LPaEun7EeChi9jJDguWgA" type="5045"/>

+        <children xmi:type="notation:Shape" xmi:id="_5LYkAOn7EeChi9jJDguWgA" type="3013" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_5LYkAun7EeChi9jJDguWgA" type="5010">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_5LYkA-n7EeChi9jJDguWgA" x="-94" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LYkAen7EeChi9jJDguWgA" x="168" y="-19"/>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_5LYkBOn7EeChi9jJDguWgA" type="3015">

+          <children xmi:type="notation:DecorationNode" xmi:id="_5LYkCen7EeChi9jJDguWgA" type="5012">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_5LYkCun7EeChi9jJDguWgA" y="5"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_5LYkBen7EeChi9jJDguWgA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_5LYkBun7EeChi9jJDguWgA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_5LYkB-n7EeChi9jJDguWgA"/>

+          <element xmi:type="comrel:MultiOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0/@outputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LYkCOn7EeChi9jJDguWgA" x="168" y="39"/>

+        </children>

+        <element xmi:type="comrel:MultiFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.0"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LPaEen7EeChi9jJDguWgA" x="38" y="94"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_MqavkOn8EeChi9jJDguWgA" type="3062" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_Mqavkun8EeChi9jJDguWgA" type="5045"/>

+        <children xmi:type="notation:Shape" xmi:id="_Mqavk-n8EeChi9jJDguWgA" type="3013" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_Mqavlen8EeChi9jJDguWgA" type="5010">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_Mqavlun8EeChi9jJDguWgA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MqavlOn8EeChi9jJDguWgA" x="78" y="-19"/>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_Mqavl-n8EeChi9jJDguWgA" type="3015">

+          <children xmi:type="notation:DecorationNode" xmi:id="_MqavnOn8EeChi9jJDguWgA" type="5012">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_Mqavnen8EeChi9jJDguWgA" y="5"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_MqavmOn8EeChi9jJDguWgA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_Mqavmen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_Mqavmun8EeChi9jJDguWgA"/>

+          <element xmi:type="comrel:MultiOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1/@outputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mqavm-n8EeChi9jJDguWgA" x="78" y="39"/>

+        </children>

+        <element xmi:type="comrel:MultiFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.1"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mqavken8EeChi9jJDguWgA" x="422" y="98"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_S54igOn8EeChi9jJDguWgA" type="3061" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_S54igun8EeChi9jJDguWgA" type="5044"/>

+        <children xmi:type="notation:Shape" xmi:id="_S6x6YOn8EeChi9jJDguWgA" type="3009" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_S6x6Yun8EeChi9jJDguWgA" type="5006">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_S6x6Y-n8EeChi9jJDguWgA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2/@inputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S6x6Yen8EeChi9jJDguWgA" x="114" y="-19"/>

+        </children>

+        <children xmi:type="notation:Shape" xmi:id="_S6x6ZOn8EeChi9jJDguWgA" type="3011" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_S6x6Zun8EeChi9jJDguWgA" type="5008">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_S6x6Z-n8EeChi9jJDguWgA" y="5"/>

+          </children>

+          <element xmi:type="comrel:SingleOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2/@outputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S6x6Zen8EeChi9jJDguWgA" x="48" y="39"/>

+        </children>

+        <element xmi:type="comrel:SingleFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.2"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S54igen8EeChi9jJDguWgA" x="734" y="70"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_VnW1YOn8EeChi9jJDguWgA" type="3061" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_VnW1Yun8EeChi9jJDguWgA" type="5044"/>

+        <children xmi:type="notation:Shape" xmi:id="_VngmYOn8EeChi9jJDguWgA" type="3009" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_VngmYun8EeChi9jJDguWgA" type="5006">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_VngmY-n8EeChi9jJDguWgA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3/@inputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VngmYen8EeChi9jJDguWgA" x="78" y="-19"/>

+        </children>

+        <children xmi:type="notation:Shape" xmi:id="_VngmZOn8EeChi9jJDguWgA" type="3011" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_VngmZun8EeChi9jJDguWgA" type="5008">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_VngmZ-n8EeChi9jJDguWgA" y="5"/>

+          </children>

+          <element xmi:type="comrel:SingleOutputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3/@outputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VngmZen8EeChi9jJDguWgA" x="72" y="39"/>

+        </children>

+        <element xmi:type="comrel:SingleFeatureUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@helperUnits.3"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VnW1Yen8EeChi9jJDguWgA" x="704" y="190"/>

+      </children>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_gNF6den7EeChi9jJDguWgA" type="7080">

+      <children xmi:type="notation:Shape" xmi:id="_l42jYOn7EeChi9jJDguWgA" type="3065" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_l42jY-n7EeChi9jJDguWgA" type="5061"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_l42jZOn7EeChi9jJDguWgA" type="7049"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_l42jZen7EeChi9jJDguWgA" type="7050">

+          <children xmi:type="notation:Shape" xmi:id="_qHUu8On7EeChi9jJDguWgA" type="3068" fontName="Segoe UI">

+            <children xmi:type="notation:DecorationNode" xmi:id="_qHUu8un7EeChi9jJDguWgA" type="5048"/>

+            <children xmi:type="notation:Shape" xmi:id="_qHUu8-n7EeChi9jJDguWgA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_qHUu9en7EeChi9jJDguWgA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_qHUu9un7EeChi9jJDguWgA" x="-187" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.0"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu9On7EeChi9jJDguWgA" x="120" y="-19"/>

+            </children>

+            <children xmi:type="notation:Shape" xmi:id="_qHUu9-n7EeChi9jJDguWgA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_qHUu-en7EeChi9jJDguWgA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_qHUu-un7EeChi9jJDguWgA" x="40" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.1"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu-On7EeChi9jJDguWgA" x="156" y="-19"/>

+            </children>

+            <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit"/>

+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qHUu8en7EeChi9jJDguWgA" x="68" y="91"/>

+          </children>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_l5AUYOn7EeChi9jJDguWgA" type="3024">

+          <children xmi:type="notation:DecorationNode" xmi:id="_l5AUZen7EeChi9jJDguWgA" type="5021">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_l5AUZun7EeChi9jJDguWgA" x="-193" y="-20"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_l5AUYen7EeChi9jJDguWgA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_l5AUYun7EeChi9jJDguWgA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_l5AUY-n7EeChi9jJDguWgA"/>

+          <element xmi:type="comrel:MultiInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l5AUZOn7EeChi9jJDguWgA" x="198" y="-19"/>

+        </children>

+        <children xmi:type="notation:Shape" xmi:id="_vTPaMOn7EeChi9jJDguWgA" type="3023" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_vTPaMun7EeChi9jJDguWgA" type="5020">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_vTPaM-n7EeChi9jJDguWgA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vTPaMen7EeChi9jJDguWgA" x="234" y="-19"/>

+        </children>

+        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l42jYen7EeChi9jJDguWgA"/>

+        <element xmi:type="comrel:SingleQueuedUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.0"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l42jYun7EeChi9jJDguWgA" x="8" y="130" width="397" height="254"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_DFKskOn8EeChi9jJDguWgA" type="3065" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_DFKsk-n8EeChi9jJDguWgA" type="5061"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_DFKslOn8EeChi9jJDguWgA" type="7049"/>

+        <children xmi:type="notation:BasicCompartment" xmi:id="_DFKslen8EeChi9jJDguWgA" type="7050">

+          <children xmi:type="notation:Shape" xmi:id="_EbdKEOn8EeChi9jJDguWgA" type="3068" fontName="Segoe UI">

+            <children xmi:type="notation:DecorationNode" xmi:id="_EbdKEun8EeChi9jJDguWgA" type="5048"/>

+            <children xmi:type="notation:Shape" xmi:id="_EbdKE-n8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_EbdKFen8EeChi9jJDguWgA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_EbdKFun8EeChi9jJDguWgA" x="-198" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKFOn8EeChi9jJDguWgA" x="132" y="-19"/>

+            </children>

+            <children xmi:type="notation:Shape" xmi:id="_EbdKF-n8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">

+              <children xmi:type="notation:DecorationNode" xmi:id="_EbdKGen8EeChi9jJDguWgA" type="5026">

+                <layoutConstraint xmi:type="notation:Location" xmi:id="_EbdKGun8EeChi9jJDguWgA" x="40" y="-20"/>

+              </children>

+              <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>

+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKGOn8EeChi9jJDguWgA" x="168" y="-19"/>

+            </children>

+            <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit"/>

+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EbdKEen8EeChi9jJDguWgA" x="69" y="78"/>

+          </children>

+        </children>

+        <children xmi:type="notation:Node" xmi:id="_DFUdkOn8EeChi9jJDguWgA" type="3024">

+          <children xmi:type="notation:DecorationNode" xmi:id="_DFUdlen8EeChi9jJDguWgA" type="5021">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_DFUdlun8EeChi9jJDguWgA" x="-204" y="-20"/>

+          </children>

+          <styles xmi:type="notation:DescriptionStyle" xmi:id="_DFUdken8EeChi9jJDguWgA"/>

+          <styles xmi:type="notation:FontStyle" xmi:id="_DFUdkun8EeChi9jJDguWgA" fontName="Segoe UI"/>

+          <styles xmi:type="notation:FillStyle" xmi:id="_DFUdk-n8EeChi9jJDguWgA"/>

+          <element xmi:type="comrel:MultiInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFUdlOn8EeChi9jJDguWgA" x="217" y="-19"/>

+        </children>

+        <children xmi:type="notation:Shape" xmi:id="_KbTMoOn8EeChi9jJDguWgA" type="3023" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_KbTMoun8EeChi9jJDguWgA" type="5020">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_KbTMo-n8EeChi9jJDguWgA" x="40" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KbTMoen8EeChi9jJDguWgA" x="253" y="-19"/>

+        </children>

+        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_DFKsken8EeChi9jJDguWgA"/>

+        <element xmi:type="comrel:SingleQueuedUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.1"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFKskun8EeChi9jJDguWgA" x="416" y="131" width="415" height="253"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_gE2H8On8EeChi9jJDguWgA" type="3074" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_gE2H8un8EeChi9jJDguWgA" type="5050"/>

+        <children xmi:type="notation:Shape" xmi:id="_gE_48On8EeChi9jJDguWgA" type="3035" fontName="Segoe UI">

+          <children xmi:type="notation:DecorationNode" xmi:id="_gE_48un8EeChi9jJDguWgA" type="5026">

+            <layoutConstraint xmi:type="notation:Location" xmi:id="_gE_48-n8EeChi9jJDguWgA" x="-164" y="-20"/>

+          </children>

+          <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2/@inputPorts.0"/>

+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gE_48en8EeChi9jJDguWgA" x="183" y="-19"/>

+        </children>

+        <element xmi:type="comrel:AtomicUnit" href="inlineclass.comrel#//@mainRefactoringUnit/@refactoringUnits.2"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gE2H8en8EeChi9jJDguWgA" x="848" y="210"/>

+      </children>

+    </children>

+    <children xmi:type="notation:Shape" xmi:id="_hJM9YOn7EeChi9jJDguWgA" type="3027" fontName="Segoe UI">

+      <children xmi:type="notation:DecorationNode" xmi:id="_hJM9Yun7EeChi9jJDguWgA" type="5022">

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hJM9Y-n7EeChi9jJDguWgA" x="40" y="-20"/>

+      </children>

+      <element xmi:type="comrel:SingleInputPort" href="inlineclass.comrel#//@mainRefactoringUnit/@inputPorts.0"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hJM9Yen7EeChi9jJDguWgA"/>

+    </children>

+    <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_gNF6cen7EeChi9jJDguWgA"/>

+    <element xmi:type="comrel:SequentialUnit" href="inlineclass.comrel#//@mainRefactoringUnit"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gNF6cun7EeChi9jJDguWgA" x="66" y="72" width="1177" height="757"/>

+  </children>

+  <styles xmi:type="notation:DiagramStyle" xmi:id="_Yq6icen7EeChi9jJDguWgA"/>

+  <element xmi:type="comrel:CompositeRefactoring" href="inlineclass.comrel#/"/>

+  <edges xmi:type="notation:Connector" xmi:id="_uf6f0On7EeChi9jJDguWgA" type="4003" source="_l5AUYOn7EeChi9jJDguWgA" target="_qHUu8-n7EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_uf6f0en7EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiSinglePortMapping" href="inlineclass.comrel#//@portMappings.0"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uf6f0un7EeChi9jJDguWgA" points="[-1, 10, 14, -215]$[-17, 215, -2, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_xFgCAOn7EeChi9jJDguWgA" type="4001" source="_vTPaMOn7EeChi9jJDguWgA" target="_qHUu9-n7EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_xFgCAen7EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.1"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xFgCAun7EeChi9jJDguWgA" points="[-2, 10, 27, -215]$[-33, 215, -4, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_8W6E0On7EeChi9jJDguWgA" type="4002" source="_5LYkBOn7EeChi9jJDguWgA" target="_l5AUYOn7EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_8W6E0en7EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiPortMapping" href="inlineclass.comrel#//@portMappings.2"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8W6E0un7EeChi9jJDguWgA" points="[1, 10, -25, -245]$[25, 253, -1, -2]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_-auWsOn7EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_5LYkAOn7EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_-auWsen7EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.3"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-auWsun7EeChi9jJDguWgA" points="[-10, 3, 405, -147]$[-418, 140, -3, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_H8aIUOn8EeChi9jJDguWgA" type="4003" source="_DFUdkOn8EeChi9jJDguWgA" target="_EbdKE-n8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_H8aIUen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiSinglePortMapping" href="inlineclass.comrel#//@portMappings.4"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_H8aIUun8EeChi9jJDguWgA" points="[-4, 10, -1, -208]$[-4, 208, -1, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_LHMCQOn8EeChi9jJDguWgA" type="4001" source="_KbTMoOn8EeChi9jJDguWgA" target="_EbdKF-n8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_LHMCQen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.5"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LHMCQun8EeChi9jJDguWgA" points="[1, 10, -32, -208]$[31, 208, -2, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_OiVTcOn8EeChi9jJDguWgA" type="4002" source="_Mqavl-n8EeChi9jJDguWgA" target="_DFUdkOn8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_OiVTcen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:MultiPortMapping" href="inlineclass.comrel#//@portMappings.6"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OiVTcun8EeChi9jJDguWgA" points="[6, 10, -156, -252]$[160, 252, -2, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_PUd7AOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_Mqavk-n8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_PUd7Aen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.7"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PUd7Aun8EeChi9jJDguWgA" points="[-8, 10, 113, -144]$[-131, 154, -10, 0]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_ZOsvgOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_S6x6YOn8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_ZOsvgen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.8"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZOsvgun8EeChi9jJDguWgA" points="[10, 5, -217, -121]$[226, 116, -1, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Z3LEwOn8EeChi9jJDguWgA" type="4001" source="_S6x6ZOn8EeChi9jJDguWgA" target="_VngmYOn8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Z3LEwen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.9"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Z3LEwun8EeChi9jJDguWgA" points="[-8, 10, 52, -70]$[-61, 70, -1, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_afyj8On8EeChi9jJDguWgA" type="4001" source="_VngmZOn8EeChi9jJDguWgA" target="_vTPaMOn7EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_afyj8en8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.10"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_afyj8un8EeChi9jJDguWgA" points="[-10, 4, 470, -202]$[-480, 196, 0, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_bgWpEOn8EeChi9jJDguWgA" type="4001" source="_VngmZOn8EeChi9jJDguWgA" target="_KbTMoOn8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_bgWpEen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.11"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bgWpEun8EeChi9jJDguWgA" points="[-2, 10, 28, -197]$[-30, 197, 0, -10]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_iDAdwOn8EeChi9jJDguWgA" type="4001" source="_hJM9YOn7EeChi9jJDguWgA" target="_gE_48On8EeChi9jJDguWgA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_iDAdwen8EeChi9jJDguWgA" fontName="Segoe UI"/>

+    <element xmi:type="comrel:SinglePortMapping" href="inlineclass.comrel#//@portMappings.12"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDAdwun8EeChi9jJDguWgA" points="[10, 0, -443, -573]$[453, 0, 0, -573]$[453, 563, 0, -10]"/>

+  </edges>

+</notation:Diagram>

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
index a8ac11e..de01257 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/plugin.xml
@@ -88,6 +88,12 @@
       id="org.eclipse.emf.refactor.refactorings.uml24.extractsuperclass"

       menulabel="Extract Superclass"

       namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

+   <refactoring

+      controller="org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringController"

+      gui="org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringGuiHandler"

+      id="org.eclipse.emf.refactor.refactorings.uml24.inlineclass"

+      menulabel="Inline Class"

+      namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

    <refactoring 

       controller="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringController" 

       gui="org.eclipse.emf.refactor.refactorings.uml24.introduceparameterobject.RefactoringGuiHandler" 

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java
new file mode 100644
index 0000000..195d94c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringController.java
@@ -0,0 +1,227 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $

+ */

+package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;

+

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;

+import org.eclipse.emf.refactor.refactorings.uml24.compositional.UmlUtils;

+import org.eclipse.ltk.core.refactoring.RefactoringStatus;

+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;

+import org.eclipse.uml2.uml.Class;

+

+import comrel.InputPort;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+import comrel.interpreter.ComrelInterpreter;

+

+public final class RefactoringController implements IController{

+

+	/**

+	 * Refactoring supported by the controller.

+	 * @generated

+	 */

+	private Refactoring parent;

+	

+	/**

+	 * DataManagement object of the model refactoring.

+	 * @generated

+	 */

+	private RefactoringDataManagement dataManagement = 

+									new RefactoringDataManagement();

+	

+	/**

+	 * Invocation context of the model refactoring.

+	 * @generated

+	 */	

+	private List<EObject> selection = new ArrayList<EObject>();

+	

+	/**

+	 * Ltk RefactoringProcessor of the model refactoring.

+	 * @generated

+	 */

+	private InternalRefactoringProcessor refactoringProcessor = null;

+	

+	/**

+	 * Gets the Refactoring supported by the controller.

+	 * @return Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return this.parent;

+	}

+	

+	/**

+	 * Sets the Refactoring supported by the controller.

+	 * @param emfRefactoring Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+	

+	/**

+	 * Returns the DataManagement object of the model refactoring.

+	 * @return DataManagement object of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getDataManagementObject()

+	 * @generated

+	 */

+	@Override

+	public IDataManagement getDataManagementObject() {

+		return this.dataManagement;

+	}

+

+	/**

+	 * Returns the ltk RefactoringProcessor of the model refactoring.

+	 * @return Ltk RefactoringProcessor of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getLtkRefactoringProcessor()

+	 * @generated

+	 */

+	@Override

+	public RefactoringProcessor getLtkRefactoringProcessor() {

+		return this.refactoringProcessor;

+	}

+	

+	/**

+	 * Sets the selected EObject (invocation context of the model refactoring).

+	 * @param selection Invocation context of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setSelection(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public void setSelection(List<EObject> selection) {

+		this.selection = selection;

+		this.refactoringProcessor = 

+				new InternalRefactoringProcessor(this.selection);

+	}	

+	

+	/**

+	 * Returns a Runnable object that executes the model refactoring.

+	 * @return Runnable object that executes the model refactoring.

+	 * @generated

+	 */

+	private Runnable applyRefactoring() {

+		return new Runnable() {				

+			/**

+			 * @see java.lang.Runnable#run()

+			 * @generated

+			 */

+			@Override

+			public void run() {

+				try {

+					org.eclipse.uml2.uml.Class selectedEObject = 

+						(org.eclipse.uml2.uml.Class) dataManagement.

+							getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+					// begin prepare and execute comrel interpreter

+					ComrelInterpreter interpreter = new ComrelInterpreter(selectedEObject);

+					interpreter.loadComrelModel(dataManagement.getComrelFilePath());

+					setRootPortValues(interpreter, selectedEObject);

+					interpreter.execute();

+					// end prepare and execute comrel interpreter

+					stopTimeRecording();

+				} catch (IOException e) {

+					e.printStackTrace();

+				}

+			}

+			

+			private void setRootPortValues(

+					ComrelInterpreter interpreter,

+					org.eclipse.uml2.uml.Class selectedEObject) {

+				RefactoringUnit rootRefactoringUnit = interpreter.getRootRefactoringUnit();

+				for (InputPort ip : rootRefactoringUnit.getAllInputPorts()) {

+					System.out.println(ip.getName());

+					if (ip.getName().equals("selectedEObject")) {

+						((SingleInputPort) ip).setValue(selectedEObject);

+					}

+				}

+			}

+		};

+	}

+

+	/**

+	 * Internal class for providing an instance of a LTK RefactoringProcessor 

+	 * used for EMF model refactorings.	 

+	 * @generated

+	 */

+	public final class InternalRefactoringProcessor extends 

+									LtkEmfRefactoringProcessorAdapter {

+

+		/**

+		 * Constructor using the invocation context of the model refactoring.

+		 * @param selection Invocation context of the model refactoring.

+		 * @generated

+		 */

+		private InternalRefactoringProcessor(List<EObject> selection){

+				super(getParent(), selection, applyRefactoring());				

+		}

+			

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	 	 * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkInitialConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				org.eclipse.uml2.uml.Class selectedEObject = 

+					(org.eclipse.uml2.uml.Class) dataManagement.

+							getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+				// test: the selected class must be associated to at least one class

+				List<Class> associatedclasses = 

+									UmlUtils.getOtherAssociatedClasses(selectedEObject);

+				String msg = "Class '" + selectedEObject.getName() + 

+											"' is not associated to any classes!";

+				if (associatedclasses.isEmpty()) {

+					result.addFatalError(msg);

+					return result;

+				}

+				return result;

+		}

+		

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	     * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor, 

+	     * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkFinalConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				// the refactoring does not have any additional initial conditions

+				startTimeRecording();

+				return result;

+		}

+		

+	}

+	

+	long zstVorher;

+	long zstNachher;

+	

+	private void startTimeRecording() {

+		zstVorher = System.currentTimeMillis();

+	}

+

+	private void stopTimeRecording() {

+		zstNachher = System.currentTimeMillis();

+		System.out.println("Time needed (withoud loading): " + ((zstNachher - zstVorher)) + " ms");

+	}

+

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..fcd82c2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringDataManagement.java
@@ -0,0 +1,81 @@
+ 

+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $

+ */

+package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;

+

+import java.io.File;

+import java.util.List;

+

+import org.eclipse.core.runtime.FileLocator;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Port;

+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;

+import org.eclipse.emf.refactor.refactorings.uml24.compositional.Activator;

+import org.osgi.framework.Bundle;

+

+/**

+ * Class for specific data concerning a model refactoring.

+ * @generated

+ */

+public class RefactoringDataManagement extends DataManagementAdapter {

+

+	protected final String SELECTEDEOBJECT = "selectedEObject";

+	protected final String COMRELMODELS = "comrelmodels";

+	protected final String COMRELMODELSSLASH = "\\comrelmodels\\";

+	

+	private String comrelFileName = "inlineclass.comrel";

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public RefactoringDataManagement() {

+		this.addPorts();

+	}

+	

+	/**

+	 * Adds the ports to the data management used for parameter passing.

+	 * @generated

+	 */

+	private void addPorts(){

+		this.inPorts.add

+			(new Port<org.eclipse.uml2.uml.Class>

+				(SELECTEDEOBJECT, org.eclipse.uml2.uml.Class.class));		

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.IDataManagement#

+	 * preselect(java.util.List)

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	@Override

+	public void preselect(List<EObject> selection) {

+		getInPortByName(SELECTEDEOBJECT).

+				setValue((org.eclipse.uml2.uml.Class) selection.get(0));

+	}

+	

+	public String getComrelFilePath() {

+		String path = "";

+		final Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);

+		try {

+			if (bundle != null) {

+				path = FileLocator.toFileURL(bundle.getEntry(COMRELMODELS)).getFile();

+				path += this.comrelFileName;

+			} else {

+				path = new File(".").getCanonicalPath() 

+						+  COMRELMODELSSLASH + this.comrelFileName;

+			}

+		} catch(Exception e) {

+			e.printStackTrace();

+		}

+		return path;

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..56b6f68
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringGuiHandler.java
@@ -0,0 +1,76 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;

+

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;

+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;

+

+/**

+ * Class used for specifying gui topics of a specific model refactoring.

+ * @generated

+ */

+public class RefactoringGuiHandler implements IGuiHandler {

+

+	/**

+	 * Refactoring supported by the GuiHandler.

+	 * @generated

+	 */

+	Refactoring parent;

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return parent;

+	}

+

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+		

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#show()

+	 * @generated

+	 */

+	@Override

+	public RefactoringWizard show() {

+		return new org.eclipse.emf.refactor.refactorings.uml24.inlineclass.RefactoringWizard

+		((RefactoringController)this.parent.getController());

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * showInMenu(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public boolean showInMenu(List<EObject> selection) {

+		if (selection.size() != 1) return false;

+		for (EObject o : selection) {

+			if (null != o) {

+				if (o instanceof org.eclipse.uml2.uml.Class) {

+					return true;

+				}

+			} 

+		}

+		return false;

+	}

+

+}	

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java
new file mode 100644
index 0000000..9613d6f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizard.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;

+

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+

+/**

+ * Class used for providing an implementation of an LTK

+ * RefactoringWizard in EMF Refactor.

+ * @generated

+ */

+public class RefactoringWizard 

+    extends AbstractRefactoringWizard {

+		

+	/**

+	 * Default constructor implementation.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */					

+	public RefactoringWizard(IController controller) {

+		super(controller);

+	}

+

+	/**

+	 * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#

+	 * addUserInputPages()

+	 * @generated

+	 */

+	@Override

+	protected void addUserInputPages() {

+		addPage(new RefactoringWizardPage

+			(controller.getParent().getName(), (RefactoringController)controller));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..fa73892
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24.compositional/src/org/eclipse/emf/refactor/refactorings/uml24/inlineclass/RefactoringWizardPage.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.inlineclass;

+

+import java.util.List;

+

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.IInputPageButtonCreator;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.InputPageButtonLoader;

+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Listener;

+

+/**

+ * Class for setting model refactoring specific parameters

+ * by the user.

+ * @generated

+ */

+public class RefactoringWizardPage extends 

+				UserInputWizardPage implements Listener {

+	

+	/**

+	 * Controller of the EMF model refactoring.

+	 * @generated

+	 */	

+	private final RefactoringController controller;

+	

+

+	/**

+	 * Default constructor using a name and the controller of the 

+	 * EMF model refactoring.

+	 * @param name Name of the WizardPage.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */

+	public RefactoringWizardPage

+		(String name, RefactoringController controller) {

+		super(name);

+		this.controller = controller;

+	}

+

+	/**

+	 * @see org.eclipse.swt.widgets.Listener#

+	 * handleEvent(org.eclipse.swt.widgets.Event)

+	 * @generated

+	 */

+	@Override

+	public void handleEvent(Event event) {		

+		getWizard().getContainer().updateButtons();

+	}

+	

+	/**

+	 * @see org.eclipse.jface.dialogs.IDialogPage#

+	 * createControl(org.eclipse.swt.widgets.Composite)

+	 * @generated

+	 */

+	@Override

+	public void createControl(Composite parent) {

+		Composite composite = new Composite(parent, SWT.NONE);

+		GridLayout gl = new GridLayout();

+		gl.numColumns = 2;

+		composite.setLayout(gl);

+		

+		List<IInputPageButtonCreator> buttonCreators = InputPageButtonLoader.iNSTANCE.getInputPageButtonCreatorClasses();

+		for(IInputPageButtonCreator creator : buttonCreators){

+			creator.createButton(composite, controller, (AbstractRefactoringWizard)this.getWizard());

+		}

+		

+		setControl(composite);

+	}

+	

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
index 33a7499..bd54d7c 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
+++ b/org.eclipse.emf.refactor.refactorings.uml24.henshin/bin/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
index 4e8db9f..069b828 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
+++ b/org.eclipse.emf.refactor.refactorings.uml24.henshin/src/org/eclipse/emf/refactor/refactorings/uml24/renameattribute/RefactoringGuiHandler.java
@@ -60,6 +60,7 @@
 	 */

 	@Override

 	public boolean showInMenu(List<EObject> selection) {

+		if (selection.size() > 1) return false;

 		for(EObject o:selection){

 			if(null != o){

 				if (o instanceof org.eclipse.uml2.uml.Property) {

diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
index a4bafe3..bbc1734 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class
new file mode 100644
index 0000000..64d200c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class
new file mode 100644
index 0000000..23f2a07
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController$InternalRefactoringProcessor.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class
new file mode 100644
index 0000000..78cd61a
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class
new file mode 100644
index 0000000..22ae892
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class
new file mode 100644
index 0000000..7ca7e62
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class
new file mode 100644
index 0000000..e863762
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class
new file mode 100644
index 0000000..9f36570
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class
new file mode 100644
index 0000000..6a56ce2
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class
new file mode 100644
index 0000000..cfbcf0f
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/bin/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
index 4c8ff22..538d8fb 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.refactorings.uml24/plugin.xml
@@ -56,6 +56,12 @@
       menulabel="Push Down Operation" 

       namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

 <refactoring 

+      controller="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringController" 

+      gui="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringGuiHandler" 

+      id="org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass" 

+      menulabel="Remove Empty Associated Class" 

+      namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML"/>

+<refactoring 

       controller="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass.RefactoringController" 

       gui="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass.RefactoringGuiHandler" 

       id="org.eclipse.emf.refactor.refactorings.uml24.removeemptysubclass" 

diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
index cdff5ab..2e686a2 100644
--- a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/pullupattribute/RefactoringGuiHandler.java
@@ -60,6 +60,7 @@
 	 */

 	@Override

 	public boolean showInMenu(List<EObject> selection) {

+		if (selection.size() > 1) return false;

 		for(EObject o:selection){

 			if(null != o){

 				if (o instanceof org.eclipse.uml2.uml.Property) {

diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java
new file mode 100644
index 0000000..e00f8cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringController.java
@@ -0,0 +1,261 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringController.javajet,v 1.3 2011/01/21 13:08:06 tarendt Exp $

+ */

+package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.interfaces.IDataManagement;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;

+import org.eclipse.emf.refactor.refactorings.uml24.UmlUtils;

+import org.eclipse.ltk.core.refactoring.RefactoringStatus;

+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;

+import org.eclipse.uml2.uml.Association;

+import org.eclipse.uml2.uml.Class;

+import org.eclipse.uml2.uml.Package;

+import org.eclipse.uml2.uml.Property;

+

+

+public final class RefactoringController implements IController{

+

+	/**

+	 * Refactoring supported by the controller.

+	 * @generated

+	 */

+	private Refactoring parent;

+	

+	/**

+	 * DataManagement object of the model refactoring.

+	 * @generated

+	 */

+	private RefactoringDataManagement dataManagement = 

+									new RefactoringDataManagement();

+	

+	/**

+	 * Invocation context of the model refactoring.

+	 * @generated

+	 */	

+	private List<EObject> selection = new ArrayList<EObject>();

+	

+	/**

+	 * Ltk RefactoringProcessor of the model refactoring.

+	 * @generated

+	 */

+	private InternalRefactoringProcessor refactoringProcessor = null;

+	

+	/**

+	 * Gets the Refactoring supported by the controller.

+	 * @return Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return this.parent;

+	}

+	

+	/**

+	 * Sets the Refactoring supported by the controller.

+	 * @param emfRefactoring Refactoring supported by the controller.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+	

+	/**

+	 * Returns the DataManagement object of the model refactoring.

+	 * @return DataManagement object of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getDataManagementObject()

+	 * @generated

+	 */

+	@Override

+	public IDataManagement getDataManagementObject() {

+		return this.dataManagement;

+	}

+

+	/**

+	 * Returns the ltk RefactoringProcessor of the model refactoring.

+	 * @return Ltk RefactoringProcessor of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * getLtkRefactoringProcessor()

+	 * @generated

+	 */

+	@Override

+	public RefactoringProcessor getLtkRefactoringProcessor() {

+		return this.refactoringProcessor;

+	}

+	

+	/**

+	 * Sets the selected EObject (invocation context of the model refactoring).

+	 * @param selection Invocation context of the model refactoring.

+	 * @see org.eclipse.emf.refactor.common.core.IController#

+	 * setSelection(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public void setSelection(List<EObject> selection) {

+		this.selection = selection;

+		this.refactoringProcessor = 

+				new InternalRefactoringProcessor(this.selection);

+	}	

+	

+	/**

+	 * Returns a Runnable object that executes the model refactoring.

+	 * @return Runnable object that executes the model refactoring.

+	 * @generated

+	 */

+	private Runnable applyRefactoring() {

+		return new Runnable() {				

+			/**

+			 * @see java.lang.Runnable#run()

+			 * @generated

+			 */

+			@Override

+			public void run() {

+				org.eclipse.uml2.uml.Class selectedEObject = 

+					(org.eclipse.uml2.uml.Class) dataManagement.

+							getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+				// execute: remove all associations from class

+				List<Association> associations = UmlUtils.getAssociations(selectedEObject);

+				List<Class> owningClasses = new ArrayList<Class>();

+				List<Property> attributesToDelete = new ArrayList<Property>();

+				List<Package> owningPackages = new ArrayList<Package>();

+				List<Association> associationsToDelete = new ArrayList<Association>();

+				for (Association assoc : associations) {

+					for (Property ae : assoc.getMemberEnds()) {

+						if (! assoc.getOwnedEnds().contains(ae)) {

+							owningClasses.add(ae.getClass_());

+							attributesToDelete.add(ae);

+						}

+					}

+					owningPackages.add(assoc.getPackage());

+					associationsToDelete.add(assoc);

+				}

+				// remove association end as class attributes

+				for (int i=0; i < owningClasses.size(); i++) {

+					owningClasses.get(i).getOwnedAttributes().remove(attributesToDelete.get(i));

+				}

+				// remove associations from owning packages

+				for (int i=0; i < owningPackages.size(); i++) {

+					owningPackages.get(i).getPackagedElements().remove(associationsToDelete.get(i));

+				}

+				// execute: remove selected class from owning package

+				Package owningPackage = selectedEObject.getPackage();

+				owningPackage.getPackagedElements().remove(selectedEObject);

+			}

+		};

+	}

+

+	/**

+	 * Internal class for providing an instance of a LTK RefactoringProcessor 

+	 * used for EMF model refactorings.	 

+	 * @generated

+	 */

+	public final class InternalRefactoringProcessor extends 

+									LtkEmfRefactoringProcessorAdapter {

+

+		/**

+		 * Constructor using the invocation context of the model refactoring.

+		 * @param selection Invocation context of the model refactoring.

+		 * @generated

+		 */

+		private InternalRefactoringProcessor(List<EObject> selection){

+				super(getParent(), selection, applyRefactoring());				

+		}

+			

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	 	 * checkInitialConditions(org.eclipse.core.runtime.IProgressMonitor)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkInitialConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				org.eclipse.uml2.uml.Class selectedEObject = 

+					(org.eclipse.uml2.uml.Class) dataManagement.

+							getInPortByName(dataManagement.SELECTEDEOBJECT).getValue();

+				// test: the selected class must be owned by a package

+				String msg = "This refactoring can only be applied" +

+								" on classes which are owned by a package!";

+				if (selectedEObject.getPackage() == null) {

+					result.addFatalError(msg);

+					return result;

+				}

+				// test: the selected class must be associated to at least one class

+				List<Class> associatedclasses = 

+									UmlUtils.getOtherAssociatedClasses(selectedEObject);

+				msg = "Class '" + selectedEObject.getName() + 

+											"' is not associated to any classes!";

+				if (associatedclasses.isEmpty()) {

+					result.addFatalError(msg);

+					return result;

+				}

+				// test: the selected class must be associated to at most one class

+				msg = "Class '" + selectedEObject.getName() + 

+						"' is associated to more than one class!";

+				if (associatedclasses.size() > 1) { 

+					result.addFatalError(msg);

+					return result;

+				}

+				// test: the selected class must not have any attributes

+				// except for those that are owned by associations

+				msg = "Class '" + selectedEObject.getName() + "' has further " +

+						"attributes except for those that are owned by associations!";

+				for (Property attr : selectedEObject.getOwnedAttributes()) {

+					if (attr.getAssociation() == null) result.addFatalError(msg); 

+				}

+				// test: the selected class  must not own any operations

+				msg = "Class '" + selectedEObject.getName() + "' owns at least one operation!";

+				if (UmlUtils.hasOperations(selectedEObject)) result.addFatalError(msg);

+				// test: the class must not have any inner classes

+				msg = "Class '" + selectedEObject.getName() + "' has at least one inner class!";

+				if (UmlUtils.hasInnerClasses(selectedEObject)) result.addFatalError(msg);

+				// test: the selected class must not have any subclasses

+				msg = "Class '" + selectedEObject.getName() + "' has at least one subclass!";

+				if (UmlUtils.hasSubclasses(selectedEObject)) result.addFatalError(msg);

+				// test: the selected class must not have any superclasses

+				msg = "Class '" + selectedEObject.getName() + "' has at least one superclass!";

+				if (UmlUtils.hasSuperclasses(selectedEObject)) result.addFatalError(msg);

+				// test: the class must not implement any interfaces

+				msg = "Class '" + selectedEObject.getName() + "' implements at least one interface!";

+				if (UmlUtils.implementsInterfaces(selectedEObject)) result.addFatalError(msg);

+				// test: the class must not use any interfaces

+				msg = "Class '" + selectedEObject.getName() + "' uses at least one interface!";

+				if (UmlUtils.usesInterfaces(selectedEObject)) result.addFatalError(msg);

+				// test: the class must not be used as attribute type

+				msg = "Class '" + selectedEObject.getName() +  "' is used as attribute type!";

+				if (UmlUtils.isUsedAsFurtherAttributeType(selectedEObject)) result.addFatalError(msg);

+				// test: the class must not be used as operation/parameter type

+				msg = "Class '" + selectedEObject.getName() + "' is used as operation/parameter type!";

+				if (UmlUtils.isUsedAsParameterType(selectedEObject)) result.addFatalError(msg);				

+				return result;

+		}

+		

+		/**

+		 * @see org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor#

+	     * checkFinalConditions(org.eclipse.core.runtime.IProgressMonitor, 

+	     * org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)

+		 * @generated

+		 */	

+		@Override

+		public RefactoringStatus checkFinalConditions(){

+				RefactoringStatus result = new RefactoringStatus();

+				// no final checks

+				return result;

+		}

+		

+	}

+

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java
new file mode 100644
index 0000000..3145384
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringDataManagement.java
@@ -0,0 +1,54 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringDataManagement.javajet,v 1.2 2011/01/21 13:08:06 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Port;

+import org.eclipse.emf.refactor.refactoring.runtime.DataManagementAdapter;

+

+/**

+ * Class for specific data concerning a model refactoring.

+ * @generated

+ */

+public class RefactoringDataManagement extends DataManagementAdapter {

+

+	protected final String SELECTEDEOBJECT = "selectedEObject";

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public RefactoringDataManagement() {

+		this.addPorts();

+	}

+	

+	/**

+	 * Adds the ports to the data management used for parameter passing.

+	 * @generated

+	 */

+	private void addPorts(){

+		this.inPorts.add

+			(new Port<org.eclipse.uml2.uml.Class>

+				(SELECTEDEOBJECT, org.eclipse.uml2.uml.Class.class));		

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.IDataManagement#

+	 * preselect(java.util.List)

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	@Override

+	public void preselect(List<EObject> selection) {

+		getInPortByName(SELECTEDEOBJECT).

+				setValue((org.eclipse.uml2.uml.Class) selection.get(0));

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java
new file mode 100644
index 0000000..3e3fa51
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringGuiHandler.java
@@ -0,0 +1,76 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringGuiHandler.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.interfaces.IGuiHandler;

+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;

+

+/**

+ * Class used for specifying gui topics of a specific model refactoring.

+ * @generated

+ */

+public class RefactoringGuiHandler implements IGuiHandler {

+

+	/**

+	 * Refactoring supported by the GuiHandler.

+	 * @generated

+	 */

+	Refactoring parent;

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#getParent()

+	 * @generated

+	 */

+	@Override

+	public Refactoring getParent() {

+		return parent;

+	}

+

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * setParent(org.eclipse.emf.refactor.common.core.Refactoring)

+	 * @generated

+	 */

+	@Override

+	public void setParent(Refactoring emfRefactoring) {

+		this.parent = emfRefactoring;

+	}

+		

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#show()

+	 * @generated

+	 */

+	@Override

+	public RefactoringWizard show() {

+		return new org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass.RefactoringWizard

+		((RefactoringController)this.parent.getController());

+	}

+	

+	/**

+	 * @see org.eclipse.emf.refactor.common.core.ui.IGuiHandler#

+	 * showInMenu(java.util.List)

+	 * @generated

+	 */

+	@Override

+	public boolean showInMenu(List<EObject> selection) {

+		if (selection.size() > 1) return false;

+		for(EObject o:selection){

+			if(null != o){

+				if (o instanceof org.eclipse.uml2.uml.Class) {

+					return true;

+				}

+			} 

+		}

+		return false;

+	}

+

+}	

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java
new file mode 100644
index 0000000..4c882e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringTest.java
@@ -0,0 +1,97 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringTest.javajet,v 1.2 2011/03/16 16:14:21 tarendt Exp $

+ */

+ 

+package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import java.io.File;

+import java.io.FilenameFilter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.runtime.test.JUnitTestCaseAdapter;

+import org.eclipse.uml2.uml.UMLPackage;

+import org.junit.Test;

+import org.junit.runner.RunWith;

+import org.junit.runners.Parameterized;

+import org.junit.runners.Parameterized.Parameters;

+

+/**

+ * Class used for running individual JUnit test cases

+ * of the specific model refactoring.

+ * @generated

+ */

+@RunWith(value = Parameterized.class)

+public class RefactoringTest extends JUnitTestCaseAdapter {

+

+	/**

+	 * Number of test cases.

+	 * @generated

+	 */

+	private String number;

+

+	/**

+	 * Constructor implementation.

+	 * @param number Number of test cases.

+	 * @generated

+	 */

+	public RefactoringTest(String number) throws IOException {

+		super("de.unimarburg.swt.refactorings.uml.removeemptyassociatedclass",

+			"uml",

+			new File(".").getCanonicalPath(),

+			new Refactoring(null, "", "http://www.eclipse.org/uml2/4.0.0/UML", new RefactoringGuiHandler(), new RefactoringController()));

+		register(UMLPackage.eINSTANCE);

+		this.number = number;

+	}

+	

+	@Parameters

+	public static Collection<Object[]> data() {

+		List<String> testNumbers = getTestNumbers();

+		Object[][] data = new Object[testNumbers.size()][1];

+		for (int i = 0; i < testNumbers.size(); i++) {

+			data[i][0] = testNumbers.get(i);

+		}

+		return Arrays.asList(data);

+	}

+	

+	private static List<String> getTestNumbers() {

+		List<String> numbers = new ArrayList<String>();

+		try {

+			String pathPrefix = new File(".").getCanonicalPath() + "/tests/" + "de.unimarburg.swt.refactorings.uml.removeemptyassociatedclass";

+			File testCaseDir = new File(pathPrefix,"/");

+			FilenameFilter filter = new FilenameFilter() {

+				public boolean accept(File dir, String name) {

+					return name.startsWith("test_");

+				}

+			};

+			String[] children = testCaseDir.list(filter);

+			if (children != null) {

+				for (String child : children) {

+					numbers.add(

+							child.substring(

+									child.indexOf('_') + 1));

+					}

+				}

+			} catch (IOException e) {

+				e.printStackTrace();

+			}

+		return numbers;

+	}

+

+	/**

+	 * Runs the test.

+	 */	

+	@Test

+	public void test() {

+		System.out.println("running test test_" + number);

+		executeTestCase(number);

+	}	

+	

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java
new file mode 100644
index 0000000..c262451
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizard.java
@@ -0,0 +1,40 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizard.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import org.eclipse.emf.refactor.refactoring.interfaces.IController;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+

+/**

+ * Class used for providing an implementation of an LTK

+ * RefactoringWizard in EMF Refactor.

+ * @generated

+ */

+public class RefactoringWizard 

+    extends AbstractRefactoringWizard {

+		

+	/**

+	 * Default constructor implementation.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */					

+	public RefactoringWizard(IController controller) {

+		super(controller);

+	}

+

+	/**

+	 * @see org.eclipse.ltk.ui.refactoring.RefactoringWizard#

+	 * addUserInputPages()

+	 * @generated

+	 */

+	@Override

+	protected void addUserInputPages() {

+		addPage(new RefactoringWizardPage

+			(controller.getParent().getName(), (RefactoringController)controller));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java
new file mode 100644
index 0000000..42cf287
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactorings.uml24/src/org/eclipse/emf/refactor/refactorings/uml24/removeemptyassociatedclass/RefactoringWizardPage.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id: RefactoringWizardPage.javajet,v 1.1 2010/07/15 13:08:44 tarendt Exp $

+ */

+ package org.eclipse.emf.refactor.refactorings.uml24.removeemptyassociatedclass;

+

+import java.util.List;

+

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.ui.AbstractRefactoringWizard;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.IInputPageButtonCreator;

+import org.eclipse.emf.refactor.refactoring.runtime.ui.InputPageButtonLoader;

+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Listener;

+

+/**

+ * Class for setting model refactoring specific parameters

+ * by the user.

+ * @generated

+ */

+public class RefactoringWizardPage extends 

+				UserInputWizardPage implements Listener {

+	

+	/**

+	 * Controller of the EMF model refactoring.

+	 * @generated

+	 */	

+	private final RefactoringController controller;

+	

+

+	/**

+	 * Default constructor using a name and the controller of the 

+	 * EMF model refactoring.

+	 * @param name Name of the WizardPage.

+	 * @param controller Controller of the EMF model refactoring.

+	 * @generated

+	 */

+	public RefactoringWizardPage

+		(String name, RefactoringController controller) {

+		super(name);

+		this.controller = controller;

+	}

+

+	/**

+	 * @see org.eclipse.swt.widgets.Listener#

+	 * handleEvent(org.eclipse.swt.widgets.Event)

+	 * @generated

+	 */

+	@Override

+	public void handleEvent(Event event) {		

+		getWizard().getContainer().updateButtons();

+	}

+	

+	/**

+	 * @see org.eclipse.jface.dialogs.IDialogPage#

+	 * createControl(org.eclipse.swt.widgets.Composite)

+	 * @generated

+	 */

+	@Override

+	public void createControl(Composite parent) {

+		Composite composite = new Composite(parent, SWT.NONE);

+		GridLayout gl = new GridLayout();

+		gl.numColumns = 2;

+		composite.setLayout(gl);	

+		

+		List<IInputPageButtonCreator> buttonCreators = InputPageButtonLoader.iNSTANCE.getInputPageButtonCreatorClasses();

+		for(IInputPageButtonCreator creator : buttonCreators){

+			creator.createButton(composite, controller, (AbstractRefactoringWizard)this.getWizard());

+		}

+		

+		setControl(composite);

+	}

+	

+}

+	
\ No newline at end of file