new UML metrics context Package added
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
index 2bc5166..bdd9569 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
@@ -11,6 +11,126 @@
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="A">
</metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.tc"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.TC"
+ metric_context="Package"
+ metric_description="Total coupling: afferent coupling + efferent coupling"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="TC">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.i"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.I"
+ metric_context="Package"
+ metric_description="Ratio between efferent coupling and total coupling (instability)"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="I">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ahf"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.AHF"
+ metric_context="Package"
+ metric_description="Attribute hiding factor"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="AHF">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.aif"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.AIF"
+ metric_context="Package"
+ metric_description="Attribute inheritance factor"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="AIF">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ohf"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.OHF"
+ metric_context="Package"
+ metric_description="Operation hiding factor"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="OHF">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.oif"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.OIF"
+ metric_context="Package"
+ metric_description="Operation inheritance factor"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="OIF">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.navcp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NAVCP"
+ metric_context="Package"
+ metric_description="Ratio between number of associations and number of classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NAVCP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ncap"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NCAP"
+ metric_context="Package"
+ metric_description="Number of classes and associations within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NCAP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ntctp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NTCTP"
+ metric_context="Package"
+ metric_description="Number of times classes within the package are used as attribute and association end types from outside the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NTCTP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nttcp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NTTCP"
+ metric_context="Package"
+ metric_description="Number of times classes within the package use classes in other packages as attribute and association end type"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NTTCP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nitrp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NITRP"
+ metric_context="Package"
+ metric_description="Number of internal class type relationships within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NITRP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nicrp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NICRP"
+ metric_context="Package"
+ metric_description="Number of internal relationships between classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NICRP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.h"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.H"
+ metric_context="Package"
+ metric_description="Relational cohesion"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="H">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ndcop"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NDCOP"
+ metric_context="Package"
+ metric_description="Number of dependencies of classes in other packages on classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NDCOP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.ndocp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NDOCP"
+ metric_context="Package"
+ metric_description="Number of dependencies of classes within the package on classes in other packages"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NDOCP">
+ </metric>
</extension>
<extension
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AHF.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AHF.java
new file mode 100644
index 0000000..6dd8b88
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AHF.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class AHF implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nnpatp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.natp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AIF.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AIF.java
new file mode 100644
index 0000000..8e51a5f
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/AIF.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class AIF implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.natip";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tnatp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/H.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/H.java
new file mode 100644
index 0000000..d908068
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/H.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class H implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nicrp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tncp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/I.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/I.java
new file mode 100644
index 0000000..1ae8796
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/I.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class I implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ce";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tc";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAVCP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAVCP.java
new file mode 100644
index 0000000..37355ee
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAVCP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NAVCP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nasp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tncp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NCAP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NCAP.java
new file mode 100644
index 0000000..8c86b9b
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NCAP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NCAP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nasp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tncp";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDCOP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDCOP.java
new file mode 100644
index 0000000..930183a
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDCOP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NDCOP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ntctp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nesubp";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDOCP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDOCP.java
new file mode 100644
index 0000000..cac0d69
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NDOCP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NDOCP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nttcp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nesupp";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NICRP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NICRP.java
new file mode 100644
index 0000000..3618527
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NICRP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NICRP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nitrp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nigp";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NITRP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NITRP.java
new file mode 100644
index 0000000..c5a82ac
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NITRP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NITRP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.niatp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.niaep";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTCTP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTCTP.java
new file mode 100644
index 0000000..48b4c61
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTCTP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NTCTP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.neacp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.neaecp";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTTCP.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTTCP.java
new file mode 100644
index 0000000..8ed7ba8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NTTCP.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class NTTCP implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.netap";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.naetop";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OHF.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OHF.java
new file mode 100644
index 0000000..79d26f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OHF.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class OHF implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nnpopp";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nopp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OIF.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OIF.java
new file mode 100644
index 0000000..2c446e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/OIF.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class OIF implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nopip";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.tnopp";
+
+ IOperation operation = Operations.getOperation("Division");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TC.java
new file mode 100644
index 0000000..29ffc34
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TC.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.core.Metric;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.interfaces.IOperation;
+import org.eclipse.emf.refactor.metrics.operations.Operations;
+
+public class TC implements IMetricCalculator {
+
+ private List<EObject> context;
+ private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.ca";
+ private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.ce";
+
+ IOperation operation = Operations.getOperation("Sum");
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ Metric metric1 = Metric.getMetricInstanceFromId(metricID1);
+ Metric metric2 = Metric.getMetricInstanceFromId(metricID2);
+
+ IMetricCalculator calc1 = metric1.getCalculateClass();
+ IMetricCalculator calc2 = metric2.getCalculateClass();
+
+ calc1.setContext(this.context);
+ calc2.setContext(this.context);
+ return operation.calculate(calc1.calculate(),calc2.calculate());
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/.settings/org.eclipse.core.resources.prefs b/org.eclipse.emf.refactor.metrics.uml24.henshin/.settings/org.eclipse.core.resources.prefs
index a4ca92b..322ad1e 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.henshin/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/.settings/org.eclipse.core.resources.prefs
@@ -1,6 +1,14 @@
eclipse.preferences.version=1
encoding//transformations/ICParC.henshin_diagram=UTF-8
encoding//transformations/ICParI.henshin_diagram=UTF-8
+encoding//transformations/NAETOP.henshin_diagram=UTF-8
encoding//transformations/NASOC.henshin_diagram=UTF-8
+encoding//transformations/NEACP.henshin_diagram=UTF-8
+encoding//transformations/NEAECP.henshin_diagram=UTF-8
+encoding//transformations/NESUBP.henshin_diagram=UTF-8
+encoding//transformations/NESUPP.henshin_diagram=UTF-8
+encoding//transformations/NETAP.henshin_diagram=UTF-8
+encoding//transformations/NIAEP.henshin_diagram=UTF-8
+encoding//transformations/NIGP.henshin_diagram=UTF-8
encoding//transformations/NNIACP.henshin=UTF-8
encoding//transformations/NNIACP.henshin_diagram=UTF-8
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
index 8c6bfe1..c6ed755 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugin>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric
id="org.eclipse.emf.refactor.metrics.uml24.nniacp"
@@ -9,7 +10,72 @@
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="NNIACP">
</metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.niaep"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NIAEP"
+ metric_context="Package"
+ metric_description="Number of internal navigable owned association end types within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIAEP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nigp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NIGP"
+ metric_context="Package"
+ metric_description="Number of internal generalization relationships within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIGP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.neacp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NEACP"
+ metric_context="Package"
+ metric_description="Number of owned attributes in external classes typed by classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NEACP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.neaecp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NEAECP"
+ metric_context="Package"
+ metric_description="Number of external navigable owned association ends typed by classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NEAECP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.naetop"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NAETOP"
+ metric_context="Package"
+ metric_description="Number of internal navigable owned association ends typed by classes in other packages"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NAETOP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.netap"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NETAP"
+ metric_context="Package"
+ metric_description="Number of attributes within the package typed by classes in other packages"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NETAP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nesubp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NESUBP"
+ metric_context="Package"
+ metric_description="Number of classes in other packages which are direct subclasses of classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NESUBP">
+ </metric>
+ <metric
+ id="org.eclipse.emf.refactor.metrics.uml24.nesupp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NESUPP"
+ metric_context="Package"
+ metric_description="Number of classes within the package which are direct subclasses of classes in other packages"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NESUPP">
+ </metric>
</extension>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric
id="org.eclipse.emf.refactor.metrics.uml24.nasoc"
@@ -36,4 +102,5 @@
metric_name="ICParI">
</metric>
</extension>
+
</plugin>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NAETOP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NAETOP.java
new file mode 100644
index 0000000..95644dd
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NAETOP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NAETOP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NAETOP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEACP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEACP.java
new file mode 100644
index 0000000..1bd59ce
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEACP.java
@@ -0,0 +1,42 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NEACP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NEACP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEAECP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEAECP.java
new file mode 100644
index 0000000..96f6a24
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NEAECP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NEAECP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NEAECP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUBP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUBP.java
new file mode 100644
index 0000000..5e1797c
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUBP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NESUBP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NESUBP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUPP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUPP.java
new file mode 100644
index 0000000..e005660
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NESUPP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NESUPP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NESUPP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NETAP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NETAP.java
new file mode 100644
index 0000000..ef48cd9
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NETAP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NETAP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NETAP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIAEP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIAEP.java
new file mode 100644
index 0000000..533e5a6
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIAEP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NIAEP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NIAEP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIGP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIGP.java
new file mode 100644
index 0000000..bd83132
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NIGP.java
@@ -0,0 +1,43 @@
+package org.eclipse.emf.refactor.metrics.umlpack;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.henshin.managers.HenshinManager;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.uml24.henshin.Activator;
+
+public class NIGP implements IMetricCalculator {
+
+ private String transformationPath = getFullPath("transformations/NIGP.henshin");
+
+ private EObject context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context.get(0);
+ }
+
+ @Override
+ public double calculate() {
+ return HenshinManager.run(transformationPath, this.context);
+ }
+
+ private String getFullPath(String transformationPath){
+ URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);
+ URL fileUrl = null;
+ try {
+ fileUrl = FileLocator.toFileURL(url);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ return fileUrl.getPath();
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin
new file mode 100644
index 0000000..12aa745
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_yU5k0qH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yU3voKH-EeObOe_NVdEHRg" incoming="_yU5k0qH-EeObOe_NVdEHRg" outgoing="_1r7yEKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQKH-EeObOe_NVdEHRg" incoming="_1r7yEKH-EeObOe_NVdEHRg" outgoing="_22-o4KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIKH-EeObOe_NVdEHRg" incoming="_22-o4KH-EeObOe_NVdEHRg _f7B3QKIOEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_d4afQKIOEeOQIJJp0Esjjw" outgoing="_f7B3QKIOEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <edges xmi:id="_yU5k0qH-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_yU3voKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1r7yEKH-EeObOe_NVdEHRg" source="_yU3voKH-EeObOe_NVdEHRg" target="_yxWQQKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ <edges xmi:id="_22-o4KH-EeObOe_NVdEHRg" source="_yxWQQKH-EeObOe_NVdEHRg" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_f7B3QKIOEeOQIJJp0Esjjw" source="_d4afQKIOEeOQIJJp0Esjjw" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_yU5k06H-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yU5k0KH-EeObOe_NVdEHRg" incoming="_yU5k06H-EeObOe_NVdEHRg" outgoing="_1r7yEaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQaH-EeObOe_NVdEHRg" incoming="_1r7yEaH-EeObOe_NVdEHRg" outgoing="_22_P8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIaH-EeObOe_NVdEHRg" incoming="_22_P8KH-EeObOe_NVdEHRg _f7B3QaIOEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_d4afQaIOEeOQIJJp0Esjjw" outgoing="_f7B3QaIOEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <edges xmi:id="_yU5k06H-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_yU5k0KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1r7yEaH-EeObOe_NVdEHRg" source="_yU5k0KH-EeObOe_NVdEHRg" target="_yxWQQaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ <edges xmi:id="_22_P8KH-EeObOe_NVdEHRg" source="_yxWQQaH-EeObOe_NVdEHRg" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_f7B3QaIOEeOQIJJp0Esjjw" source="_d4afQaIOEeOQIJJp0Esjjw" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_yU5k0aH-EeObOe_NVdEHRg" origin="_yU3voKH-EeObOe_NVdEHRg" image="_yU5k0KH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_yxW3UKH-EeObOe_NVdEHRg" origin="_yxWQQKH-EeObOe_NVdEHRg" image="_yxWQQaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_zfQfIqH-EeObOe_NVdEHRg" origin="_zfQfIKH-EeObOe_NVdEHRg" image="_zfQfIaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_d4afQqIOEeOQIJJp0Esjjw" origin="_d4afQKIOEeOQIJJp0Esjjw" image="_d4afQaIOEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin_diagram
new file mode 100644
index 0000000..cd9ef18
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NAETOP.henshin_diagram
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_XV3_UKIOEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_XXmdoKIOEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d4bGUqIOEeOQIJJp0Esjjw" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d4bGU6IOEeOQIJJp0Esjjw" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXmdoqIOEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXmdo6IOEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_XXo54KIOEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXo54qIOEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXo546IOEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXo55KIOEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XXo55aIOEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XXo55qIOEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NAETOP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XXo54aIOEeOQIJJp0Esjjw" x="22" y="16"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XXpg8KIOEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXpg8qIOEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXpg86IOEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXpg9KIOEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XXpg9aIOEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XXpg9qIOEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NAETOP.henshin#_yU3voKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XXpg8aIOEeOQIJJp0Esjjw" x="36" y="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XXpg96IOEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqIAKIOEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqIAaIOEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqIAqIOEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XXqIA6IOEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XXqIBKIOEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NAETOP.henshin#_yxWQQKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XXpg-KIOEeOQIJJp0Esjjw" x="280" y="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XXqIBaIOEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqIB6IOEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqICKIOEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XXqICaIOEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XXqICqIOEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XXqIC6IOEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NAETOP.henshin#_zfQfIKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XXqIBqIOEeOQIJJp0Esjjw" x="481" y="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_d4c7gKIOEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_d4c7gqIOEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d4c7g6IOEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d4c7hKIOEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_d4c7haIOEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_d4c7hqIOEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NAETOP.henshin#_d4afQKIOEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d4c7gaIOEeOQIJJp0Esjjw" x="481" y="16"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NAETOP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XXmdoaIOEeOQIJJp0Esjjw" x="60" y="43" width="611" height="296"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_XV4mYKIOEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NAETOP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_XX4KcKIOEeOQIJJp0Esjjw" type="4001" source="_XXo54KIOEeOQIJJp0Esjjw" target="_XXpg8KIOEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX4Kc6IOEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX4KdKIOEeOQIJJp0Esjjw" x="-20" y="-73"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX4KdaIOEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX4KdqIOEeOQIJJp0Esjjw" x="13" y="-49"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XX4KcaIOEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NAETOP.henshin#_yU5k0qH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XX4KcqIOEeOQIJJp0Esjjw" points="[-8, 26, 0, -125]$[-8, 125, 0, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XX5YkKIOEeOQIJJp0Esjjw" type="4001" source="_XXpg8KIOEeOQIJJp0Esjjw" target="_XXpg96IOEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX5Yk6IOEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX5_oKIOEeOQIJJp0Esjjw" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX5_oaIOEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX5_oqIOEeOQIJJp0Esjjw" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XX5YkaIOEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NAETOP.henshin#_1r7yEKH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XX5YkqIOEeOQIJJp0Esjjw" points="[6, 26, 0, 16]$[0, -16, -6, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XX5_o6IOEeOQIJJp0Esjjw" type="4001" source="_XXpg96IOEeOQIJJp0Esjjw" target="_XXqIBaIOEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX6msKIOEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX6msaIOEeOQIJJp0Esjjw" x="-2" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XX6msqIOEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XX6ms6IOEeOQIJJp0Esjjw" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XX5_pKIOEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NAETOP.henshin#_22-o4KH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XX5_paIOEeOQIJJp0Esjjw" points="[26, 26, 16, 16]$[-16, -16, -26, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_f7DFYKIOEeOQIJJp0Esjjw" type="4001" source="_d4c7gKIOEeOQIJJp0Esjjw" target="_XXqIBaIOEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_f7DFY6IOEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f7DscKIOEeOQIJJp0Esjjw" x="-16" y="74"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f7DscaIOEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f7DscqIOEeOQIJJp0Esjjw" x="10" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_f7DFYaIOEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NAETOP.henshin#_f7B3QKIOEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f7DFYqIOEeOQIJJp0Esjjw" points="[-12, 26, 53, -101]$[-27, 120, 38, -7]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin
new file mode 100644
index 0000000..25d65f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_5g8B0KILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_5g5lkKILEeOQIJJp0Esjjw" incoming="_5g8B0KILEeOQIJJp0Esjjw _CU38oKIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_6HcoMKILEeOQIJJp0Esjjw" outgoing="_AmE4gKIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_6zEYEKILEeOQIJJp0Esjjw" incoming="_AmE4gKIMEeOQIJJp0Esjjw" outgoing="_BzBz0KIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_7jjZ0KILEeOQIJJp0Esjjw" incoming="_BzBz0KIMEeOQIJJp0Esjjw" outgoing="_CU38oKIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <edges xmi:id="_5g8B0KILEeOQIJJp0Esjjw" source="_DkM-4KH-EeObOe_NVdEHRg" target="_5g5lkKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_AmE4gKIMEeOQIJJp0Esjjw" source="_6HcoMKILEeOQIJJp0Esjjw" target="_6zEYEKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_BzBz0KIMEeOQIJJp0Esjjw" source="_6zEYEKILEeOQIJJp0Esjjw" target="_7jjZ0KILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </edges>
+ <edges xmi:id="_CU38oKIMEeOQIJJp0Esjjw" source="_7jjZ0KILEeOQIJJp0Esjjw" target="_5g5lkKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_5g8B0aILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_5g6zsKILEeOQIJJp0Esjjw" incoming="_5g8B0aILEeOQIJJp0Esjjw _CU38oaIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_6HcoMaILEeOQIJJp0Esjjw" outgoing="_AmE4gaIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_6zEYEaILEeOQIJJp0Esjjw" incoming="_AmE4gaIMEeOQIJJp0Esjjw" outgoing="_BzBz0aIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_7jjZ0aILEeOQIJJp0Esjjw" incoming="_BzBz0aIMEeOQIJJp0Esjjw" outgoing="_CU38oaIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <edges xmi:id="_5g8B0aILEeOQIJJp0Esjjw" source="_DkPbJKH-EeObOe_NVdEHRg" target="_5g6zsKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_AmE4gaIMEeOQIJJp0Esjjw" source="_6HcoMaILEeOQIJJp0Esjjw" target="_6zEYEaILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_BzBz0aIMEeOQIJJp0Esjjw" source="_6zEYEaILEeOQIJJp0Esjjw" target="_7jjZ0aILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </edges>
+ <edges xmi:id="_CU38oaIMEeOQIJJp0Esjjw" source="_7jjZ0aILEeOQIJJp0Esjjw" target="_5g6zsKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_5g6zsaILEeOQIJJp0Esjjw" origin="_5g5lkKILEeOQIJJp0Esjjw" image="_5g6zsKILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_6HdPQKILEeOQIJJp0Esjjw" origin="_6HcoMKILEeOQIJJp0Esjjw" image="_6HcoMaILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_6zEYEqILEeOQIJJp0Esjjw" origin="_6zEYEKILEeOQIJJp0Esjjw" image="_6zEYEaILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_7jjZ0qILEeOQIJJp0Esjjw" origin="_7jjZ0KILEeOQIJJp0Esjjw" image="_7jjZ0aILEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin_diagram
new file mode 100644
index 0000000..2a1ecec
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEACP.henshin_diagram
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_w38ywKILEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_xI6m8KILEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5g8o4KILEeOQIJJp0Esjjw" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5g8o4aILEeOQIJJp0Esjjw" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xI9DMKILEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xI9DMaILEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_xLidIKILEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xLidIqILEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xLjEMKILEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xLjrQKILEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xLjrQaILEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xLjrQqILEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEACP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xLidIaILEeOQIJJp0Esjjw" x="31" y="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5hCvgKILEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5hCvgqILEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5hCvg6ILEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5hDWkKILEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5hDWkaILEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5hDWkqILEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEACP.henshin#_5g5lkKILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5hCvgaILEeOQIJJp0Esjjw" x="49" y="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6HfEcKILEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6HfrgKILEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6HfrgaILEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6HfrgqILEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6Hfrg6ILEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6HfrhKILEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEACP.henshin#_6HcoMKILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6HfEcaILEeOQIJJp0Esjjw" x="470" y="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6zG0UKILEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_6zHbYKILEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6zHbYaILEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6zHbYqILEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6zHbY6ILEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6zHbZKILEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEACP.henshin#_6zEYEKILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6zG0UaILEeOQIJJp0Esjjw" x="470" y="193"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7jl2EKILEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7jl2EqILEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7jl2E6ILEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7jmdIKILEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7jmdIaILEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7jmdIqILEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEACP.henshin#_7jjZ0KILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7jl2EaILEeOQIJJp0Esjjw" x="258" y="193"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NEACP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xI6m8aILEeOQIJJp0Esjjw" x="41" y="34" width="599" height="319"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_w38ywaILEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NEACP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_5hT1QKILEeOQIJJp0Esjjw" type="4001" source="_xLidIKILEeOQIJJp0Esjjw" target="_5hCvgKILEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5hUcUKILEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5hUcUaILEeOQIJJp0Esjjw" x="20" y="-81"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5hUcUqILEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5hUcU6ILEeOQIJJp0Esjjw" x="-11" y="-53"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5hT1QaILEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEACP.henshin#_5g8B0KILEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5hT1QqILEeOQIJJp0Esjjw" points="[-44, -26, 109, 65]$[-153, -91, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_AmGtsKIMEeOQIJJp0Esjjw" type="4001" source="_6HfEcKILEeOQIJJp0Esjjw" target="_6zG0UKILEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AmIi4aIMEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AmIi4qIMEeOQIJJp0Esjjw" x="-5" y="79"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AmIi46IMEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AmIi5KIMEeOQIJJp0Esjjw" x="-31" y="57"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_AmH70KIMEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEACP.henshin#_AmE4gKIMEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AmIi4KIMEeOQIJJp0Esjjw" points="[2, 26, -6, -146]$[2, 146, -6, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_BzFeMKIMEeOQIJJp0Esjjw" type="4001" source="_6zG0UKILEeOQIJJp0Esjjw" target="_7jl2EKILEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BzGFQqIMEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BzGFQ6IMEeOQIJJp0Esjjw" x="-1" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BzGFRKIMEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BzGFRaIMEeOQIJJp0Esjjw" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BzGFQKIMEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEACP.henshin#_BzBz0KIMEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BzGFQaIMEeOQIJJp0Esjjw" points="[-27, 26, 120, -125]$[-141, 125, 6, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CU5KwKIMEeOQIJJp0Esjjw" type="4001" source="_7jl2EKILEeOQIJJp0Esjjw" target="_5hCvgKILEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CU5x0KIMEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CU5x0aIMEeOQIJJp0Esjjw" x="-2" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CU5x0qIMEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CU5x06IMEeOQIJJp0Esjjw" x="-2" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_CU5KwaIMEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEACP.henshin#_CU38oKIMEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CU5KwqIMEeOQIJJp0Esjjw" points="[-13, -7, 317, 130]$[-292, -146, 38, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CU-DQKIMEeOQIJJp0Esjjw" id="(0.17105263157894737,0.5576923076923077)"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin
new file mode 100644
index 0000000..9100d01
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_5g8B0KILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_5g5lkKILEeOQIJJp0Esjjw" incoming="_5g8B0KILEeOQIJJp0Esjjw _CU38oKIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_6HcoMKILEeOQIJJp0Esjjw" outgoing="_0YE_sKINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_7jjZ0KILEeOQIJJp0Esjjw" incoming="_1co0AKINEeOQIJJp0Esjjw" outgoing="_CU38oKIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_w-oXoKINEeOQIJJp0Esjjw" incoming="_0YE_sKINEeOQIJJp0Esjjw" outgoing="_1co0AKINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <edges xmi:id="_5g8B0KILEeOQIJJp0Esjjw" source="_DkM-4KH-EeObOe_NVdEHRg" target="_5g5lkKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_CU38oKIMEeOQIJJp0Esjjw" source="_7jjZ0KILEeOQIJJp0Esjjw" target="_5g5lkKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_0YE_sKINEeOQIJJp0Esjjw" source="_6HcoMKILEeOQIJJp0Esjjw" target="_w-oXoKINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1co0AKINEeOQIJJp0Esjjw" source="_w-oXoKINEeOQIJJp0Esjjw" target="_7jjZ0KILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_5g8B0aILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_5g6zsKILEeOQIJJp0Esjjw" incoming="_5g8B0aILEeOQIJJp0Esjjw _CU38oaIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_6HcoMaILEeOQIJJp0Esjjw" outgoing="_0YFmwKINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_7jjZ0aILEeOQIJJp0Esjjw" incoming="_1cpbEKINEeOQIJJp0Esjjw" outgoing="_CU38oaIMEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_w-oXoaINEeOQIJJp0Esjjw" incoming="_0YFmwKINEeOQIJJp0Esjjw" outgoing="_1cpbEKINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <edges xmi:id="_5g8B0aILEeOQIJJp0Esjjw" source="_DkPbJKH-EeObOe_NVdEHRg" target="_5g6zsKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_CU38oaIMEeOQIJJp0Esjjw" source="_7jjZ0aILEeOQIJJp0Esjjw" target="_5g6zsKILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_0YFmwKINEeOQIJJp0Esjjw" source="_6HcoMaILEeOQIJJp0Esjjw" target="_w-oXoaINEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1cpbEKINEeOQIJJp0Esjjw" source="_w-oXoaINEeOQIJJp0Esjjw" target="_7jjZ0aILEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_5g6zsaILEeOQIJJp0Esjjw" origin="_5g5lkKILEeOQIJJp0Esjjw" image="_5g6zsKILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_6HdPQKILEeOQIJJp0Esjjw" origin="_6HcoMKILEeOQIJJp0Esjjw" image="_6HcoMaILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_7jjZ0qILEeOQIJJp0Esjjw" origin="_7jjZ0KILEeOQIJJp0Esjjw" image="_7jjZ0aILEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_w-oXoqINEeOQIJJp0Esjjw" origin="_w-oXoKINEeOQIJJp0Esjjw" image="_w-oXoaINEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin_diagram
new file mode 100644
index 0000000..6ab37c4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NEAECP.henshin_diagram
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_nPwekKINEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_nRxQwKINEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w-o-sqINEeOQIJJp0Esjjw" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w-o-s6INEeOQIJJp0Esjjw" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nRxQwqINEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nRxQw6INEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_nR0UEKINEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR0UEqINEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR0UE6INEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR0UFKINEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nR0UFaINEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nR0UFqINEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEAECP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nR0UEaINEeOQIJJp0Esjjw" x="25" y="14"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nR07IKINEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR07IqINEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR07I6INEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR07JKINEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nR07JaINEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nR07JqINEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEAECP.henshin#_5g5lkKILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nR07IaINEeOQIJJp0Esjjw" x="43" y="195"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nR1iMKINEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR1iMqINEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR1iM6INEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR1iNKINEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nR1iNaINEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nR1iNqINEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEAECP.henshin#_6HcoMKILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nR1iMaINEeOQIJJp0Esjjw" x="497" y="14"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nR2wUKINEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR2wUqINEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR2wU6INEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nR2wVKINEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nR2wVaINEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nR2wVqINEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEAECP.henshin#_7jjZ0KILEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nR2wUaINEeOQIJJp0Esjjw" x="223" y="195"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_w-qz4KINEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_w-ra8KINEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w-ra8aINEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w-ra8qINEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w-ra86INEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w-ra9KINEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NEAECP.henshin#_w-oXoKINEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w-qz4aINEeOQIJJp0Esjjw" x="493" y="195"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NEAECP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nRxQwaINEeOQIJJp0Esjjw" x="86" y="48" width="619" height="314"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_nPxFoKINEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NEAECP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_nSwvQKINEeOQIJJp0Esjjw" type="4001" source="_nR0UEKINEeOQIJJp0Esjjw" target="_nR07IKINEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nSwvQ6INEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nSwvRKINEeOQIJJp0Esjjw" x="6" y="-76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nSwvRaINEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nSwvRqINEeOQIJJp0Esjjw" x="-24" y="-48"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_nSwvQaINEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEAECP.henshin#_5g8B0KILEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nSwvQqINEeOQIJJp0Esjjw" points="[-7, 26, 0, 16]$[0, -16, 7, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nSzykKINEeOQIJJp0Esjjw" type="4001" source="_nR2wUKINEeOQIJJp0Esjjw" target="_nR07IKINEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nSzyk6INEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nSzylKINEeOQIJJp0Esjjw" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nSzylaINEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nSzylqINEeOQIJJp0Esjjw" y="-21"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_nSzykaINEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEAECP.henshin#_CU38oKIMEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nSzykqINEeOQIJJp0Esjjw" points="[-26, -26, 4, 4]$[-4, -4, 26, 26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0YG04KINEeOQIJJp0Esjjw" type="4001" source="_nR1iMKINEeOQIJJp0Esjjw" target="_w-qz4KINEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0YG046INEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0YG05KINEeOQIJJp0Esjjw" x="4" y="84"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0YHb8KINEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0YHb8aINEeOQIJJp0Esjjw" x="-24" y="77"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0YG04aINEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEAECP.henshin#_0YE_sKINEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0YG04qINEeOQIJJp0Esjjw" points="[-4, 26, 19, -145]$[-25, 145, -2, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1cqpMKINEeOQIJJp0Esjjw" type="4001" source="_w-qz4KINEeOQIJJp0Esjjw" target="_nR2wUKINEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1cqpM6INEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1cqpNKINEeOQIJJp0Esjjw" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1cqpNaINEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1cqpNqINEeOQIJJp0Esjjw" x="2" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1cqpMaINEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NEAECP.henshin#_1co0AKINEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1cqpMqINEeOQIJJp0Esjjw" points="[-9, 26, 62, -145]$[-33, 145, 38, -26]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin
new file mode 100644
index 0000000..879ecf3
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_IQujIKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_Hj2PAKIkEeOQIJJp0Esjjw" outgoing="_Lz69EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_IQt8EKIkEeOQIJJp0Esjjw" incoming="_IQujIKIkEeOQIJJp0Esjjw _NANKAKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_IxUuwKIkEeOQIJJp0Esjjw" incoming="_Lz69EKIkEeOQIJJp0Esjjw" outgoing="_MbesUKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_JMpY0KIkEeOQIJJp0Esjjw" incoming="_MbesUKIkEeOQIJJp0Esjjw" outgoing="_NANKAKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_IQujIKIkEeOQIJJp0Esjjw" source="_DkM-4KH-EeObOe_NVdEHRg" target="_IQt8EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_Lz69EKIkEeOQIJJp0Esjjw" source="_Hj2PAKIkEeOQIJJp0Esjjw" target="_IxUuwKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_MbesUKIkEeOQIJJp0Esjjw" source="_IxUuwKIkEeOQIJJp0Esjjw" target="_JMpY0KIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_NANKAKIkEeOQIJJp0Esjjw" source="_JMpY0KIkEeOQIJJp0Esjjw" target="_IQt8EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_IQujIaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_Hj4EMKIkEeOQIJJp0Esjjw" outgoing="_Lz69EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_IQt8EaIkEeOQIJJp0Esjjw" incoming="_IQujIaIkEeOQIJJp0Esjjw _NANKAaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_IxUuwaIkEeOQIJJp0Esjjw" incoming="_Lz69EaIkEeOQIJJp0Esjjw" outgoing="_MbesUaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_JMpY0aIkEeOQIJJp0Esjjw" incoming="_MbesUaIkEeOQIJJp0Esjjw" outgoing="_NANKAaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_IQujIaIkEeOQIJJp0Esjjw" source="_DkPbJKH-EeObOe_NVdEHRg" target="_IQt8EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_Lz69EaIkEeOQIJJp0Esjjw" source="_Hj4EMKIkEeOQIJJp0Esjjw" target="_IxUuwaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_MbesUaIkEeOQIJJp0Esjjw" source="_IxUuwaIkEeOQIJJp0Esjjw" target="_JMpY0aIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_NANKAaIkEeOQIJJp0Esjjw" source="_JMpY0aIkEeOQIJJp0Esjjw" target="_IQt8EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_Hj4EMaIkEeOQIJJp0Esjjw" origin="_Hj2PAKIkEeOQIJJp0Esjjw" image="_Hj4EMKIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_IQt8EqIkEeOQIJJp0Esjjw" origin="_IQt8EKIkEeOQIJJp0Esjjw" image="_IQt8EaIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_IxUuwqIkEeOQIJJp0Esjjw" origin="_IxUuwKIkEeOQIJJp0Esjjw" image="_IxUuwaIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_JMpY0qIkEeOQIJJp0Esjjw" origin="_JMpY0KIkEeOQIJJp0Esjjw" image="_JMpY0aIkEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin_diagram
new file mode 100644
index 0000000..57a9f8d
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUBP.henshin_diagram
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_Fx_P0KIkEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_F1U3sKIkEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hj4ENKIkEeOQIJJp0Esjjw" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hj4ENaIkEeOQIJJp0Esjjw" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_F1VewKIkEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_F1VewaIkEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_F1XT8KIkEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_F1XT8qIkEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_F1XT86IkEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_F1XT9KIkEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_F1XT9aIkEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_F1XT9qIkEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUBP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F1XT8aIkEeOQIJJp0Esjjw" x="25" y="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Hj7HgKIkEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Hj7HgqIkEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Hj7Hg6IkEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Hj7HhKIkEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Hj7HhaIkEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Hj7HhqIkEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUBP.henshin#_Hj2PAKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hj7HgaIkEeOQIJJp0Esjjw" x="451" y="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IQvxQKIkEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQvxQqIkEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQwYUKIkEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQwYUaIkEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IQwYUqIkEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IQwYU6IkEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUBP.henshin#_IQt8EKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IQvxQaIkEeOQIJJp0Esjjw" x="43" y="164"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IxWj8KIkEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IxWj8qIkEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IxWj86IkEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IxWj9KIkEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_IxWj9aIkEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_IxWj9qIkEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUBP.henshin#_IxUuwKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IxWj8aIkEeOQIJJp0Esjjw" x="451" y="164"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JMrOAKIkEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JMrOAqIkEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JMrOA6IkEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JMrOBKIkEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JMrOBaIkEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JMrOBqIkEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUBP.henshin#_JMpY0KIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JMrOAaIkEeOQIJJp0Esjjw" x="224" y="164"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NESUBP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F1U3saIkEeOQIJJp0Esjjw" x="56" y="30" width="583" height="272"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Fx_P0aIkEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NESUBP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_IQ0CsKIkEeOQIJJp0Esjjw" type="4001" source="_F1XT8KIkEeOQIJJp0Esjjw" target="_IQvxQKIkEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQ0Cs6IkEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IQ0CtKIkEeOQIJJp0Esjjw" x="15" y="-82"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IQ0CtaIkEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IQ0CtqIkEeOQIJJp0Esjjw" x="-13" y="-54"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_IQ0CsaIkEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUBP.henshin#_IQujIKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IQ0CsqIkEeOQIJJp0Esjjw" points="[-53, -26, 87, 43]$[-140, -69, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Lz8LMKIkEeOQIJJp0Esjjw" type="4001" source="_Hj7HgKIkEeOQIJJp0Esjjw" target="_IxWj8KIkEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Lz8LM6IkEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Lz8LNKIkEeOQIJJp0Esjjw" x="-25" y="89"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Lz8LNaIkEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Lz8LNqIkEeOQIJJp0Esjjw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Lz8LMaIkEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUBP.henshin#_Lz69EKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lz8LMqIkEeOQIJJp0Esjjw" points="[2, 26, -19, -145]$[16, 145, -5, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Mbf6cKIkEeOQIJJp0Esjjw" type="4001" source="_IxWj8KIkEeOQIJJp0Esjjw" target="_JMrOAKIkEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MbghgKIkEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MbghgaIkEeOQIJJp0Esjjw" x="-4" y="21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MbghgqIkEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Mbghg6IkEeOQIJJp0Esjjw" x="1" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Mbf6caIkEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUBP.henshin#_MbesUKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Mbf6cqIkEeOQIJJp0Esjjw" points="[-23, 18, 175, -136]$[-155, 128, 43, -26]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Mbi9wKIkEeOQIJJp0Esjjw" id="(0.10526315789473684,0.4230769230769231)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NAOYIKIkEeOQIJJp0Esjjw" type="4001" source="_JMrOAKIkEeOQIJJp0Esjjw" target="_IQvxQKIkEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NAO_MKIkEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NAO_MaIkEeOQIJJp0Esjjw" x="1" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NAO_MqIkEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NAO_M6IkEeOQIJJp0Esjjw" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NAOYIaIkEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUBP.henshin#_NANKAKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NAOYIqIkEeOQIJJp0Esjjw" points="[-20, -11, 216, 109]$[-230, -146, 6, -26]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NASCgKIkEeOQIJJp0Esjjw" id="(0.19230769230769232,0.5)"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin
new file mode 100644
index 0000000..0980571
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" outgoing="_IQujIKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_Hj2PAKIkEeOQIJJp0Esjjw" name="context" outgoing="_Lz69EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_IQt8EKIkEeOQIJJp0Esjjw" incoming="_IQujIKIkEeOQIJJp0Esjjw _NANKAKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_IxUuwKIkEeOQIJJp0Esjjw" incoming="_Lz69EKIkEeOQIJJp0Esjjw" outgoing="_MbesUKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_JMpY0KIkEeOQIJJp0Esjjw" incoming="_MbesUKIkEeOQIJJp0Esjjw" outgoing="_NANKAKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_IQujIKIkEeOQIJJp0Esjjw" source="_DkM-4KH-EeObOe_NVdEHRg" target="_IQt8EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_Lz69EKIkEeOQIJJp0Esjjw" source="_Hj2PAKIkEeOQIJJp0Esjjw" target="_IxUuwKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_MbesUKIkEeOQIJJp0Esjjw" source="_IxUuwKIkEeOQIJJp0Esjjw" target="_JMpY0KIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_NANKAKIkEeOQIJJp0Esjjw" source="_JMpY0KIkEeOQIJJp0Esjjw" target="_IQt8EKIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" outgoing="_IQujIaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_Hj4EMKIkEeOQIJJp0Esjjw" name="context" outgoing="_Lz69EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_IQt8EaIkEeOQIJJp0Esjjw" incoming="_IQujIaIkEeOQIJJp0Esjjw _NANKAaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_IxUuwaIkEeOQIJJp0Esjjw" incoming="_Lz69EaIkEeOQIJJp0Esjjw" outgoing="_MbesUaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_JMpY0aIkEeOQIJJp0Esjjw" incoming="_MbesUaIkEeOQIJJp0Esjjw" outgoing="_NANKAaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_IQujIaIkEeOQIJJp0Esjjw" source="_DkPbJKH-EeObOe_NVdEHRg" target="_IQt8EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_Lz69EaIkEeOQIJJp0Esjjw" source="_Hj4EMKIkEeOQIJJp0Esjjw" target="_IxUuwaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_MbesUaIkEeOQIJJp0Esjjw" source="_IxUuwaIkEeOQIJJp0Esjjw" target="_JMpY0aIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_NANKAaIkEeOQIJJp0Esjjw" source="_JMpY0aIkEeOQIJJp0Esjjw" target="_IQt8EaIkEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_Hj4EMaIkEeOQIJJp0Esjjw" origin="_Hj2PAKIkEeOQIJJp0Esjjw" image="_Hj4EMKIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_IQt8EqIkEeOQIJJp0Esjjw" origin="_IQt8EKIkEeOQIJJp0Esjjw" image="_IQt8EaIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_IxUuwqIkEeOQIJJp0Esjjw" origin="_IxUuwKIkEeOQIJJp0Esjjw" image="_IxUuwaIkEeOQIJJp0Esjjw"/>
+ <mappings xmi:id="_JMpY0qIkEeOQIJJp0Esjjw" origin="_JMpY0KIkEeOQIJJp0Esjjw" image="_JMpY0aIkEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin_diagram
new file mode 100644
index 0000000..ace680a
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NESUPP.henshin_diagram
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_kMKcMKKFEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_kQj0AKKFEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQj0AqKFEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQj0A6KFEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_kQlpMKKFEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQlpMqKFEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQlpM6KFEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQlpNKKFEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kQlpNaKFEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kQlpNqKFEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUPP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQlpMaKFEeOQIJJp0Esjjw" x="32" y="25"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kQmQQKKFEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQmQQqKFEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQmQQ6KFEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQmQRKKFEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kQmQRaKFEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kQmQRqKFEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUPP.henshin#_Hj2PAKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQmQQaKFEeOQIJJp0Esjjw" x="432" y="25"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kQmQR6KFEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQmQSaKFEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQm3UKKFEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQm3UaKFEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kQm3UqKFEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kQm3U6KFEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUPP.henshin#_IQt8EKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQmQSKKFEeOQIJJp0Esjjw" x="32" y="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kQm3VKKFEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQm3VqKFEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQm3V6KFEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQm3WKKFEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kQm3WaKFEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kQm3WqKFEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUPP.henshin#_IxUuwKIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQm3VaKFEeOQIJJp0Esjjw" x="450" y="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kQneYKKFEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQneYqKFEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQneY6KFEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQneZKKFEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kQneZaKFEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kQneZqKFEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NESUPP.henshin#_JMpY0KIkEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQneYaKFEeOQIJJp0Esjjw" x="219" y="160"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NESUPP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kQj0AaKFEeOQIJJp0Esjjw" x="40" y="34" width="571" height="293"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_kMKcMaKFEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NESUPP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_kQ2H4KKFEeOQIJJp0Esjjw" type="4001" source="_kQlpMKKFEeOQIJJp0Esjjw" target="_kQmQR6KFEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ2H46KFEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ2H5KKFEeOQIJJp0Esjjw" x="17" y="-72"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ2H5aKFEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ2H5qKFEeOQIJJp0Esjjw" x="-5" y="-51"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kQ2H4aKFEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUPP.henshin#_IQujIKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kQ2H4qKFEeOQIJJp0Esjjw" points="[3, 26, 0, 6]$[0, -6, -3, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kQ2u8KKFEeOQIJJp0Esjjw" type="4001" source="_kQmQQKKFEeOQIJJp0Esjjw" target="_kQm3VKKFEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ2u86KFEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ2u9KKFEeOQIJJp0Esjjw" x="9" y="71"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ2u9aKFEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ2u9qKFEeOQIJJp0Esjjw" x="-10" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kQ2u8aKFEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUPP.henshin#_Lz69EKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kQ2u8qKFEeOQIJJp0Esjjw" points="[26, 26, 6, 6]$[-6, -6, -26, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kQ3WAKKFEeOQIJJp0Esjjw" type="4001" source="_kQm3VKKFEeOQIJJp0Esjjw" target="_kQneYKKFEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ3WA6KFEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ39EKKFEeOQIJJp0Esjjw" x="-2" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ39EaKFEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ39EqKFEeOQIJJp0Esjjw" x="-2" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kQ3WAaKFEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUPP.henshin#_MbesUKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kQ3WAqKFEeOQIJJp0Esjjw" points="[38, 15, 14, 5]$[-28, -12, -52, -22]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kQ39E6KFEeOQIJJp0Esjjw" type="4001" source="_kQneYKKFEeOQIJJp0Esjjw" target="_kQmQR6KFEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ4kIKKFEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ4kIaKFEeOQIJJp0Esjjw" x="-1" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kQ4kIqKFEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kQ4kI6KFEeOQIJJp0Esjjw" x="-5" y="-16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kQ39FKKFEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NESUPP.henshin#_NANKAKIkEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kQ39FaKFEeOQIJJp0Esjjw" points="[-45, -26, -11, -6]$[4, 2, 38, 22]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin
new file mode 100644
index 0000000..4e17abe
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_zfQfI6H-EeObOe_NVdEHRg _5uPu8KIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQKH-EeObOe_NVdEHRg" incoming="_7Ti40KIUEeOQIJJp0Esjjw" outgoing="_22-o4KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIKH-EeObOe_NVdEHRg" incoming="_zfQfI6H-EeObOe_NVdEHRg _22-o4KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_5uPH4KIUEeOQIJJp0Esjjw" incoming="_5uPu8KIUEeOQIJJp0Esjjw" outgoing="_7Ti40KIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <edges xmi:id="_zfQfI6H-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_22-o4KH-EeObOe_NVdEHRg" source="_yxWQQKH-EeObOe_NVdEHRg" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_5uPu8KIUEeOQIJJp0Esjjw" source="_DkM-4KH-EeObOe_NVdEHRg" target="_5uPH4KIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_7Ti40KIUEeOQIJJp0Esjjw" source="_5uPH4KIUEeOQIJJp0Esjjw" target="_yxWQQKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_zfRGMKH-EeObOe_NVdEHRg _5uPu8aIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQaH-EeObOe_NVdEHRg" incoming="_7Ti40aIUEeOQIJJp0Esjjw" outgoing="_22_P8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIaH-EeObOe_NVdEHRg" incoming="_zfRGMKH-EeObOe_NVdEHRg _22_P8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_5uPH4aIUEeOQIJJp0Esjjw" incoming="_5uPu8aIUEeOQIJJp0Esjjw" outgoing="_7Ti40aIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <edges xmi:id="_zfRGMKH-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_22_P8KH-EeObOe_NVdEHRg" source="_yxWQQaH-EeObOe_NVdEHRg" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ <edges xmi:id="_5uPu8aIUEeOQIJJp0Esjjw" source="_DkPbJKH-EeObOe_NVdEHRg" target="_5uPH4aIUEeOQIJJp0Esjjw">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_7Ti40aIUEeOQIJJp0Esjjw" source="_5uPH4aIUEeOQIJJp0Esjjw" target="_yxWQQaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//StructuredClassifier/ownedAttribute"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_yxW3UKH-EeObOe_NVdEHRg" origin="_yxWQQKH-EeObOe_NVdEHRg" image="_yxWQQaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_zfQfIqH-EeObOe_NVdEHRg" origin="_zfQfIKH-EeObOe_NVdEHRg" image="_zfQfIaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_5uPH4qIUEeOQIJJp0Esjjw" origin="_5uPH4KIUEeOQIJJp0Esjjw" image="_5uPH4aIUEeOQIJJp0Esjjw"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin_diagram
new file mode 100644
index 0000000..dcbf956
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NETAP.henshin_diagram
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_lrl48KIUEeOQIJJp0Esjjw" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ltG74KIUEeOQIJJp0Esjjw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5uPu8qIUEeOQIJJp0Esjjw" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5uPu86IUEeOQIJJp0Esjjw" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltG74qIUEeOQIJJp0Esjjw" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltG746IUEeOQIJJp0Esjjw" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_ltIxEKIUEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJYIKIUEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJYIaIUEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJYIqIUEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ltJYI6IUEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ltJYJKIUEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NETAP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltIxEaIUEeOQIJJp0Esjjw" x="29" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ltJ_MKIUEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJ_MqIUEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJ_M6IUEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltJ_NKIUEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ltJ_NaIUEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ltJ_NqIUEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NETAP.henshin#_yxWQQKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltJ_MaIUEeOQIJJp0Esjjw" x="324" y="183"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ltJ_N6IUEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltL0YKIUEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltL0YaIUEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltL0YqIUEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ltL0Y6IUEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ltL0ZKIUEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NETAP.henshin#_zfQfIKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltJ_OKIUEeOQIJJp0Esjjw" x="324" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5uRkIKIUEeOQIJJp0Esjjw" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uRkIqIUEeOQIJJp0Esjjw" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uRkI6IUEeOQIJJp0Esjjw" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uRkJKIUEeOQIJJp0Esjjw" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5uRkJaIUEeOQIJJp0Esjjw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5uRkJqIUEeOQIJJp0Esjjw"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NETAP.henshin#_5uPH4KIUEeOQIJJp0Esjjw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uRkIaIUEeOQIJJp0Esjjw" x="47" y="183"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NETAP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ltG74aIUEeOQIJJp0Esjjw" x="61" y="39" width="469" height="317"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_lrl48aIUEeOQIJJp0Esjjw"/>
+ <element xmi:type="henshin:Module" href="NETAP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ltbE8KIUEeOQIJJp0Esjjw" type="4001" source="_ltIxEKIUEeOQIJJp0Esjjw" target="_ltJ_N6IUEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltbE86IUEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ltbE9KIUEeOQIJJp0Esjjw" x="6" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltbE9aIUEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ltbsAKIUEeOQIJJp0Esjjw" x="2" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ltbE8aIUEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NETAP.henshin#_zfQfI6H-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ltbE8qIUEeOQIJJp0Esjjw" points="[11, 26, -2, -4]$[2, 4, -11, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ltc6IKIUEeOQIJJp0Esjjw" type="4001" source="_ltJ_MKIUEeOQIJJp0Esjjw" target="_ltJ_N6IUEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltc6I6IUEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ltc6JKIUEeOQIJJp0Esjjw" x="-7" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ltc6JaIUEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ltc6JqIUEeOQIJJp0Esjjw" x="5" y="-48"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ltc6IaIUEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NETAP.henshin#_22-o4KH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ltc6IqIUEeOQIJJp0Esjjw" points="[26, 26, 16, 16]$[-16, -16, -26, -26]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5uVOgKIUEeOQIJJp0Esjjw" type="4001" source="_ltIxEKIUEeOQIJJp0Esjjw" target="_5uRkIKIUEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uVOg6IUEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5uV1kKIUEeOQIJJp0Esjjw" x="11" y="-76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uV1kaIUEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5uV1kqIUEeOQIJJp0Esjjw" x="-15" y="-47"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5uVOgaIUEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NETAP.henshin#_5uPu8KIUEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5uVOgqIUEeOQIJJp0Esjjw" points="[-45, -26, 71, 42]$[-116, -68, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7TkG8KIUEeOQIJJp0Esjjw" type="4001" source="_5uRkIKIUEeOQIJJp0Esjjw" target="_ltJ_MKIUEeOQIJJp0Esjjw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7TkuAKIUEeOQIJJp0Esjjw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7TkuAaIUEeOQIJJp0Esjjw" x="9" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7TkuAqIUEeOQIJJp0Esjjw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7TkuA6IUEeOQIJJp0Esjjw" x="4" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7TkG8aIUEeOQIJJp0Esjjw" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NETAP.henshin#_7Ti40KIUEeOQIJJp0Esjjw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TkG8qIUEeOQIJJp0Esjjw" points="[38, -4, -192, 9]$[234, 13, 4, 26]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin
new file mode 100644
index 0000000..bcd90a7
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_yU5k0qH-EeObOe_NVdEHRg _zfQfI6H-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yU3voKH-EeObOe_NVdEHRg" incoming="_yU5k0qH-EeObOe_NVdEHRg" outgoing="_1r7yEKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQKH-EeObOe_NVdEHRg" incoming="_1r7yEKH-EeObOe_NVdEHRg" outgoing="_22-o4KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIKH-EeObOe_NVdEHRg" incoming="_zfQfI6H-EeObOe_NVdEHRg _22-o4KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <edges xmi:id="_yU5k0qH-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_yU3voKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_zfQfI6H-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1r7yEKH-EeObOe_NVdEHRg" source="_yU3voKH-EeObOe_NVdEHRg" target="_yxWQQKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ <edges xmi:id="_22-o4KH-EeObOe_NVdEHRg" source="_yxWQQKH-EeObOe_NVdEHRg" target="_zfQfIKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_yU5k06H-EeObOe_NVdEHRg _zfRGMKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_yU5k0KH-EeObOe_NVdEHRg" incoming="_yU5k06H-EeObOe_NVdEHRg" outgoing="_1r7yEaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
+ </nodes>
+ <nodes xmi:id="_yxWQQaH-EeObOe_NVdEHRg" incoming="_1r7yEaH-EeObOe_NVdEHRg" outgoing="_22_P8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </nodes>
+ <nodes xmi:id="_zfQfIaH-EeObOe_NVdEHRg" incoming="_zfRGMKH-EeObOe_NVdEHRg _22_P8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <edges xmi:id="_yU5k06H-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_yU5k0KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_zfRGMKH-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_1r7yEaH-EeObOe_NVdEHRg" source="_yU5k0KH-EeObOe_NVdEHRg" target="_yxWQQaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/navigableOwnedEnd"/>
+ </edges>
+ <edges xmi:id="_22_P8KH-EeObOe_NVdEHRg" source="_yxWQQaH-EeObOe_NVdEHRg" target="_zfQfIaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_yU5k0aH-EeObOe_NVdEHRg" origin="_yU3voKH-EeObOe_NVdEHRg" image="_yU5k0KH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_yxW3UKH-EeObOe_NVdEHRg" origin="_yxWQQKH-EeObOe_NVdEHRg" image="_yxWQQaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_zfQfIqH-EeObOe_NVdEHRg" origin="_zfQfIKH-EeObOe_NVdEHRg" image="_zfQfIaH-EeObOe_NVdEHRg"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin_diagram
new file mode 100644
index 0000000..20373cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIAEP.henshin_diagram
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_wH8lEKH-EeObOe_NVdEHRg" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_wJzmQKH-EeObOe_NVdEHRg" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yU5k1KH-EeObOe_NVdEHRg" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yU6L4KH-EeObOe_NVdEHRg" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJzmQqH-EeObOe_NVdEHRg" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJzmQ6H-EeObOe_NVdEHRg" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_wJ2CgKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJ2CgqH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJ2Cg6H-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJ2ChKH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wJ2ChaH-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wJ2ChqH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIAEP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wJ2CgaH-EeObOe_NVdEHRg" x="24" y="19"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yU8oIKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yU8oIqH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yU8oI6H-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yU8oJKH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yU8oJaH-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yU8oJqH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIAEP.henshin#_yU3voKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yU8oIaH-EeObOe_NVdEHRg" x="31" y="186"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yxYsgKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yxYsgqH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yxYsg6H-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yxYshKH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yxYshaH-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yxYshqH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIAEP.henshin#_yxWQQKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yxYsgaH-EeObOe_NVdEHRg" x="298" y="186"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zfSUUKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zfS7YKH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zfS7YaH-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zfS7YqH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zfS7Y6H-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zfS7ZKH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIAEP.henshin#_zfQfIKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zfSUUaH-EeObOe_NVdEHRg" x="298" y="19"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NIAEP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wJzmQaH-EeObOe_NVdEHRg" x="32" y="33" width="418" height="320"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_wH8lEaH-EeObOe_NVdEHRg"/>
+ <element xmi:type="henshin:Module" href="NIAEP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_yVBgoKH-EeObOe_NVdEHRg" type="4001" source="_wJ2CgKH-EeObOe_NVdEHRg" target="_yU8oIKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yVCHsKH-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yVCHsaH-EeObOe_NVdEHRg" x="-7" y="-73"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yVCHsqH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yVCHs6H-EeObOe_NVdEHRg" x="18" y="-53"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yVBgoaH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIAEP.henshin#_yU5k0qH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yVBgoqH-EeObOe_NVdEHRg" points="[-38, -26, 66, 46]$[-104, -72, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zfXz4KH-EeObOe_NVdEHRg" type="4001" source="_wJ2CgKH-EeObOe_NVdEHRg" target="_zfSUUKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zfXz46H-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zfXz5KH-EeObOe_NVdEHRg" x="3" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zfXz5aH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zfXz5qH-EeObOe_NVdEHRg" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zfXz4aH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIAEP.henshin#_zfQfI6H-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zfXz4qH-EeObOe_NVdEHRg" points="[-38, -26, 66, 46]$[-104, -72, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1r9AMKH-EeObOe_NVdEHRg" type="4001" source="_yU8oIKH-EeObOe_NVdEHRg" target="_yxYsgKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1r9nQKH-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1r9nQaH-EeObOe_NVdEHRg" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1r9nQqH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1r9nQ6H-EeObOe_NVdEHRg" x="-1" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1r9AMaH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIAEP.henshin#_1r7yEKH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1r9AMqH-EeObOe_NVdEHRg" points="[14, 0, -164, -9]$[180, -17, 2, -26]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1sAqkKH-EeObOe_NVdEHRg" id="(0.8333333333333334,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_23AeEKH-EeObOe_NVdEHRg" type="4001" source="_yxYsgKH-EeObOe_NVdEHRg" target="_zfSUUKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_23AeE6H-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_23BFIKH-EeObOe_NVdEHRg" x="-5" y="23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_23BFIaH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_23BFIqH-EeObOe_NVdEHRg" x="17" y="-51"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_23AeEaH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIAEP.henshin#_22-o4KH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_23AeEqH-EeObOe_NVdEHRg" points="[7, -26, -51, 164]$[56, -216, -2, -26]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin
new file mode 100644
index 0000000..4e52ab4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context" outgoing="_NArgYqH-EeObOe_NVdEHRg _NjTsU6H-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_NAprMKH-EeObOe_NVdEHRg" incoming="_NArgYqH-EeObOe_NVdEHRg" outgoing="_OT74AKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_NjTsUKH-EeObOe_NVdEHRg" incoming="_NjTsU6H-EeObOe_NVdEHRg _QDZDcKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_OT7Q8KH-EeObOe_NVdEHRg" incoming="_OT74AKH-EeObOe_NVdEHRg" outgoing="_QDZDcKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_NArgYqH-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_NAprMKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_NjTsU6H-EeObOe_NVdEHRg" source="_DkM-4KH-EeObOe_NVdEHRg" target="_NjTsUKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_OT74AKH-EeObOe_NVdEHRg" source="_NAprMKH-EeObOe_NVdEHRg" target="_OT7Q8KH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_QDZDcKH-EeObOe_NVdEHRg" source="_OT7Q8KH-EeObOe_NVdEHRg" target="_NjTsUKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context" outgoing="_NAsHcKH-EeObOe_NVdEHRg _NjUTYKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ <nodes xmi:id="_NArgYKH-EeObOe_NVdEHRg" incoming="_NAsHcKH-EeObOe_NVdEHRg" outgoing="_OT74AaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_NjTsUaH-EeObOe_NVdEHRg" incoming="_NjUTYKH-EeObOe_NVdEHRg _QDZqgKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
+ </nodes>
+ <nodes xmi:id="_OT7Q8aH-EeObOe_NVdEHRg" incoming="_OT74AaH-EeObOe_NVdEHRg" outgoing="_QDZqgKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization"/>
+ </nodes>
+ <edges xmi:id="_NAsHcKH-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_NArgYKH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_NjUTYKH-EeObOe_NVdEHRg" source="_DkPbJKH-EeObOe_NVdEHRg" target="_NjTsUaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package/packagedElement"/>
+ </edges>
+ <edges xmi:id="_OT74AaH-EeObOe_NVdEHRg" source="_NArgYKH-EeObOe_NVdEHRg" target="_OT7Q8aH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Classifier/generalization"/>
+ </edges>
+ <edges xmi:id="_QDZqgKH-EeObOe_NVdEHRg" source="_OT7Q8aH-EeObOe_NVdEHRg" target="_NjTsUaH-EeObOe_NVdEHRg">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Generalization/general"/>
+ </edges>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_NArgYaH-EeObOe_NVdEHRg" origin="_NAprMKH-EeObOe_NVdEHRg" image="_NArgYKH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_NjTsUqH-EeObOe_NVdEHRg" origin="_NjTsUKH-EeObOe_NVdEHRg" image="_NjTsUaH-EeObOe_NVdEHRg"/>
+ <mappings xmi:id="_OT7Q8qH-EeObOe_NVdEHRg" origin="_OT7Q8KH-EeObOe_NVdEHRg" image="_OT7Q8aH-EeObOe_NVdEHRg"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin_diagram
new file mode 100644
index 0000000..0a430ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NIGP.henshin_diagram
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_JUil0KH-EeObOe_NVdEHRg" type="Henshin" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_JkwMEKH-EeObOe_NVdEHRg" type="2001" fontName="Segoe UI" italic="true" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NAsHcaH-EeObOe_NVdEHRg" source="defaultAction">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NAsHcqH-EeObOe_NVdEHRg" key="value" value="preserve"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JkyoUKH-EeObOe_NVdEHRg" type="5001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JkyoUaH-EeObOe_NVdEHRg" type="7001">
+ <children xmi:type="notation:Shape" xmi:id="_Jn600KH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jn600qH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jn6006H-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jn8qAKH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Jn8qAaH-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Jn8qAqH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIGP.henshin#_DkM-4KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jn600aH-EeObOe_NVdEHRg" x="24" y="26"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NAy1IKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NAzcMKH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NAzcMaH-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NAzcMqH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NAzcM6H-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NAzcNKH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIGP.henshin#_NAprMKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NAy1IaH-EeObOe_NVdEHRg" x="42" y="174"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NjWIkKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NjWvoKH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NjWvoaH-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NjWvoqH-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NjWvo6H-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NjWvpKH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIGP.henshin#_NjTsUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NjWIkaH-EeObOe_NVdEHRg" x="288" y="26"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OT9tMKH-EeObOe_NVdEHRg" type="3001" fontName="Segoe UI">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OT-UQaH-EeObOe_NVdEHRg" type="5002"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OT-UQqH-EeObOe_NVdEHRg" type="5003"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OT-UQ6H-EeObOe_NVdEHRg" type="7002">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OT-URKH-EeObOe_NVdEHRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OT-URaH-EeObOe_NVdEHRg"/>
+ </children>
+ <element xmi:type="henshin:Node" href="NIGP.henshin#_OT7Q8KH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OT-UQKH-EeObOe_NVdEHRg" x="274" y="174"/>
+ </children>
+ </children>
+ <element xmi:type="henshin:Rule" href="NIGP.henshin#_DkHfUKH-EeObOe_NVdEHRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JkwMEaH-EeObOe_NVdEHRg" x="53" y="33" width="434" height="293"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_JUil0aH-EeObOe_NVdEHRg"/>
+ <element xmi:type="henshin:Module" href="NIGP.henshin#_DkD08KH-EeObOe_NVdEHRg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NBpwwKH-EeObOe_NVdEHRg" type="4001" source="_Jn600KH-EeObOe_NVdEHRg" target="_NAy1IKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NBqX0KH-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NBqX0aH-EeObOe_NVdEHRg" x="13" y="-76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NBqX0qH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NBqX06H-EeObOe_NVdEHRg" x="-15" y="-46"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NBpwwaH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIGP.henshin#_NArgYqH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NBpwwqH-EeObOe_NVdEHRg" points="[-43, -26, 105, 63]$[-148, -89, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NjiV0KH-EeObOe_NVdEHRg" type="4001" source="_Jn600KH-EeObOe_NVdEHRg" target="_NjWIkKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Nji84KH-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Nji84aH-EeObOe_NVdEHRg" x="3" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Nji84qH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Nji846H-EeObOe_NVdEHRg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NjiV0aH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIGP.henshin#_NjTsU6H-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NjiV0qH-EeObOe_NVdEHRg" points="[-43, -26, 105, 63]$[-148, -89, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OUEa4KH-EeObOe_NVdEHRg" type="4001" source="_NAy1IKH-EeObOe_NVdEHRg" target="_OT9tMKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OUEa46H-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OUEa5KH-EeObOe_NVdEHRg" x="2" y="-16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OUFB8KH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OUFB8aH-EeObOe_NVdEHRg" x="2" y="16"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OUEa4aH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIGP.henshin#_OT74AKH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OUEa4qH-EeObOe_NVdEHRg" points="[-15, -26, 128, 227]$[-143, -253, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QDa4oKH-EeObOe_NVdEHRg" type="4001" source="_OT9tMKH-EeObOe_NVdEHRg" target="_NjWIkKH-EeObOe_NVdEHRg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QDbfsKH-EeObOe_NVdEHRg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDbfsaH-EeObOe_NVdEHRg" x="-13" y="39"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QDbfsqH-EeObOe_NVdEHRg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QDbfs6H-EeObOe_NVdEHRg" x="9" y="46"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QDa4oaH-EeObOe_NVdEHRg" fontName="Segoe UI"/>
+ <element xmi:type="henshin:Edge" href="NIGP.henshin#_QDZDcKH-EeObOe_NVdEHRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QDa4oqH-EeObOe_NVdEHRg" points="[11, -26, -74, 171]$[95, -205, 10, -8]"/>
+ </edges>
+</notation:Diagram>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/P.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/P.henshin
new file mode 100644
index 0000000..c8a33e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/P.henshin
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_DkD08KH-EeObOe_NVdEHRg">
+ <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>
+ <units xsi:type="henshin:Rule" xmi:id="_DkHfUKH-EeObOe_NVdEHRg" name="mainRule">
+ <parameters xmi:id="_DkIGYKH-EeObOe_NVdEHRg" name="context"/>
+ <lhs xmi:id="_DkItcKH-EeObOe_NVdEHRg" name="Lhs">
+ <nodes xmi:id="_DkM-4KH-EeObOe_NVdEHRg" name="context">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ </lhs>
+ <rhs xmi:id="_DkPbIaH-EeObOe_NVdEHRg" name="Rhs">
+ <nodes xmi:id="_DkPbJKH-EeObOe_NVdEHRg" name="context">
+ <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
+ </nodes>
+ </rhs>
+ <mappings xmi:id="_DkQCMaH-EeObOe_NVdEHRg" origin="_DkM-4KH-EeObOe_NVdEHRg" image="_DkPbJKH-EeObOe_NVdEHRg"/>
+ </units>
+</henshin:Module>
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.class b/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.class
index 102c84a..8518888 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.class
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.class b/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.class
index ecdfeb2..2112134 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.class
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/bin/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
index cc11cee..5ee45f4 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
@@ -98,11 +98,103 @@
<metric id="org.eclipse.emf.refactor.metrics.uml24.nopp"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NOPP"
metric_context="Package"
- metric_description="Number of operations in classes and Interfaces within the package"
+ metric_description="Number of owned operations in classes within the package"
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="NOPP">
</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.tnopp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.TNOPP"
+ metric_context="Package"
+ metric_description="Total number of owned and inherited operations in classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="TNOPP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.tnatp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.TNATP"
+ metric_context="Package"
+ metric_description="Total number of owned and inherited attributes in classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="TNATP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nopmp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NOPMP"
+ metric_context="Package"
+ metric_description="Number of other packages in the model"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NOPMP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.npp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NPP"
+ metric_context="Package"
+ metric_description="Number of directly nested packages inside the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NPP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nasp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NASP"
+ metric_context="Package"
+ metric_description="Number of associations within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NASP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.naggr"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NAGGR"
+ metric_context="Package"
+ metric_description="Number of aggregation relationships within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NAGGR">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nirp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NIRP"
+ metric_context="Package"
+ metric_description="Number of interface realizations within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIRP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.niup"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NIUP"
+ metric_context="Package"
+ metric_description="Number of interface usages within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIUP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nnpatp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NNPATP"
+ metric_context="Package"
+ metric_description="Number of non-public owned attributes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NNPATP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nnpopp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NNPOPP"
+ metric_context="Package"
+ metric_description="Number of non-public owned operations within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NNPOPP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.niatp"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NIATP"
+ metric_context="Package"
+ metric_description="Number of owned attributes in classes which have a class within the package as type"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NIATP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.natip"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NATIP"
+ metric_context="Package"
+ metric_description="Number of inherited attributes in classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NATIP">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.nopip"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.NOPIP"
+ metric_context="Package"
+ metric_description="Number of inherited operations in classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="NOPIP">
+</metric>
</extension>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric id="org.eclipse.emf.refactor.metrics.uml24.natc"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NATC"
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAGGR.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAGGR.java
new file mode 100644
index 0000000..a5e5095
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NAGGR.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NAGGR implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedAttribute) "
+ + "-> select(aggregation=AggregationKind::shared) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NASP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NASP.java
new file mode 100644
index 0000000..e2e9a2c
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NASP.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NASP implements IMetricCalculator {
+
+ private final String expression = "self.packagedElement -> select(oclIsTypeOf(Association)) -> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATIP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATIP.java
new file mode 100644
index 0000000..234c74b
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATIP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NATIP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).inheritedMember) "
+ + "-> select(oclIsTypeOf(Property)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.java
index fa834e6..4ab7128 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.java
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NATP.java
@@ -1,6 +1,7 @@
package org.eclipse.emf.refactor.metrics.uml24.umlpack;
import java.util.List;
+
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
@@ -9,7 +10,10 @@
public final class NATP implements IMetricCalculator {
private final String expression =
- "self.packagedElement -> select(oclIsTypeOf(Class)) -> collect(oclAsType(Class).ownedAttribute) -> size()";
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedAttribute) "
+ + "-> size()";
private List<EObject> context;
@Override
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIATP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIATP.java
new file mode 100644
index 0000000..0681023
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIATP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NIATP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedAttribute) "
+ + "-> select(self.packagedElement -> includes(type)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIRP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIRP.java
new file mode 100644
index 0000000..5526ea4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIRP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NIRP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedElement) "
+ + "-> select(oclIsTypeOf(InterfaceRealization)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIUP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIUP.java
new file mode 100644
index 0000000..dbab7cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NIUP.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NIUP implements IMetricCalculator {
+
+ private final String expression = "self.packagedElement -> select(oclIsTypeOf(Usage)) -> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPATP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPATP.java
new file mode 100644
index 0000000..468ff79
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPATP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NNPATP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedAttribute) "
+ + "-> select(visibility<>VisibilityKind::public)"
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPOPP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPOPP.java
new file mode 100644
index 0000000..14579de
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NNPOPP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NNPOPP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedOperation) "
+ + "-> select(visibility<>VisibilityKind::public)"
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPIP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPIP.java
new file mode 100644
index 0000000..7cb7423
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPIP.java
@@ -0,0 +1,30 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NOPIP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).inheritedMember) "
+ + "-> select(oclIsTypeOf(Operation)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPMP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPMP.java
new file mode 100644
index 0000000..c6c4077
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPMP.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NOPMP implements IMetricCalculator {
+
+ private final String expression = "Package.allInstances() -> reject(p|p.oclIsTypeOf(Model) or p=self) -> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.java
index fc6c076..dc93956 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.java
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NOPP.java
@@ -9,8 +9,8 @@
public final class NOPP implements IMetricCalculator {
private final String expression =
- "self.packagedElement -> select(oclIsTypeOf(Class)) -> collect(oclAsType(Class).ownedOperation) -> size() + " +
- "self.packagedElement -> select(oclIsTypeOf(Interface)) -> collect(oclAsType(Interface).ownedOperation) -> size()";
+ "self.packagedElement -> select(oclIsTypeOf(Class)) -> collect(oclAsType(Class).ownedOperation) -> size()";// + " +
+ //"self.packagedElement -> select(oclIsTypeOf(Interface)) -> collect(oclAsType(Interface).ownedOperation) -> size()";
private List<EObject> context;
@Override
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NPP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NPP.java
new file mode 100644
index 0000000..6b7b647
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/NPP.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class NPP implements IMetricCalculator {
+
+ private final String expression = "self.packagedElement -> select(oclIsTypeOf(Package)) -> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNATP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNATP.java
new file mode 100644
index 0000000..ae54ba4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNATP.java
@@ -0,0 +1,35 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class TNATP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedAttribute) "
+ + "-> size() + "
+
+ + "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).inheritedMember) "
+ + "-> select(oclIsTypeOf(Property)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNOPP.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNOPP.java
new file mode 100644
index 0000000..9850187
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/TNOPP.java
@@ -0,0 +1,34 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.emf.refactor.metrics.ocl.managers.OCLManager;
+
+public class TNOPP implements IMetricCalculator {
+
+ private final String expression =
+ "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).ownedOperation) "
+ + "-> size() + "
+
+ + "self.packagedElement "
+ + "-> select(oclIsTypeOf(Class)) "
+ + "-> collect(oclAsType(Class).inheritedMember) "
+ + "-> select(oclIsTypeOf(Operation)) "
+ + "-> size()";
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context = context;
+ }
+
+ @Override
+ public double calculate() {
+ EObject contextObject = context.get(0);
+ return OCLManager.evaluateOCLOnContextObject(contextObject, expression);
+ }
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24/plugin.xml
index ef2a3c8..50e9c5b 100644
--- a/org.eclipse.emf.refactor.metrics.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24/plugin.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugin>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric
id="org.eclipse.emf.refactor.metrics.uml24.nacp"
@@ -16,7 +17,29 @@
metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
metric_name="TNCP">
</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.ca"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.Ca"
+ metric_context="Package"
+ metric_description="Afferent coupling: Number of classes in other packages which depend on classes within the package"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="Ca">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.ce"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.Ce"
+ metric_context="Package"
+ metric_description="Efferent coupling: Number of classes within the package which depend on classes in other packages"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="Ce">
+</metric>
+<metric id="org.eclipse.emf.refactor.metrics.uml24.dnh"
+ metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlpack.DNH"
+ metric_context="Package"
+ metric_description="Depth in the nesting hierarchy"
+ metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML"
+ metric_name="DNH">
+</metric>
</extension>
+
<extension point="org.eclipse.emf.refactor.metrics">
<metric id="org.eclipse.emf.refactor.metrics.uml24.neatc"
metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NEATC"
diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ca.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ca.java
new file mode 100644
index 0000000..e7f99af
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ca.java
@@ -0,0 +1,91 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.TypedElement;
+
+public class Ca implements IMetricCalculator {
+
+private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context=context;
+ }
+
+ @Override
+ public double calculate() {
+ double ret = 0.0;
+ // custom code - begin
+ for (Class otherclass : getOtherClasses()) {
+ if (dependsOn(otherclass, getOwnedClasses())) {
+ ret++;
+ }
+ }
+ // custom code - end
+ return ret;
+ }
+
+ private boolean dependsOn(Class otherClass, EList<Class> ownedClasses) {
+ boolean depends = false;
+ for (Property attribute : otherClass.getOwnedAttributes()) {
+ depends |= hasType(attribute, ownedClasses);
+ }
+ for (Operation operation : otherClass.getOwnedOperations()) {
+ for (Parameter parameter : operation.getOwnedParameters()) {
+ depends |= hasType(parameter, ownedClasses);
+ }
+ }
+ for (Class superclass : otherClass.getSuperClasses()) {
+ depends |= ownedClasses.contains(superclass);
+ }
+ return depends;
+ }
+
+ private boolean hasType(TypedElement te, EList<Class> classes) {
+ if (te.getType() != null && te.getType() instanceof Class) {
+ return (classes.contains(te.getType()));
+ }
+ return false;
+ }
+
+ private EList<Class> getAllClasses() {
+ EList<Class> classes = new BasicEList<Class>();
+ TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Class) {
+ classes.add((Class) eObject);
+ }
+ }
+ return classes;
+ }
+
+ private EList<Class> getOwnedClasses() {
+ EList<Class> classes = new BasicEList<Class>();
+ for (PackageableElement pe : ((Package) context.get(0)).getPackagedElements()) {
+ if (pe instanceof Class) {
+ classes.add((Class) pe);
+ }
+ }
+ return classes;
+ }
+
+ private EList<Class> getOtherClasses() {
+ EList<Class> classes = getAllClasses();
+ classes.removeAll(getOwnedClasses());
+ return classes;
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ce.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ce.java
new file mode 100644
index 0000000..76ccfc4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/Ce.java
@@ -0,0 +1,91 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.TypedElement;
+
+public class Ce implements IMetricCalculator {
+
+private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context=context;
+ }
+
+ @Override
+ public double calculate() {
+ double ret = 0.0;
+ // custom code - begin
+ for (Class ownedclass : getOwnedClasses()) {
+ if (dependsOn(ownedclass, getOtherClasses())) {
+ ret++;
+ }
+ }
+ // custom code - end
+ return ret;
+ }
+
+ private boolean dependsOn(Class ownedclass, EList<Class> otherClasses) {
+ boolean depends = false;
+ for (Property attribute : ownedclass.getOwnedAttributes()) {
+ depends |= hasType(attribute, otherClasses);
+ }
+ for (Operation operation : ownedclass.getOwnedOperations()) {
+ for (Parameter parameter : operation.getOwnedParameters()) {
+ depends |= hasType(parameter, otherClasses);
+ }
+ }
+ for (Class superclass : ownedclass.getSuperClasses()) {
+ depends |= otherClasses.contains(superclass);
+ }
+ return depends;
+ }
+
+ private boolean hasType(TypedElement te, EList<Class> otherClasses) {
+ if (te.getType() != null && te.getType() instanceof Class) {
+ return (otherClasses.contains(te.getType()));
+ }
+ return false;
+ }
+
+ private EList<Class> getAllClasses() {
+ EList<Class> classes = new BasicEList<Class>();
+ TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();
+ while (iter.hasNext()) {
+ EObject eObject = iter.next();
+ if (eObject instanceof Class) {
+ classes.add((Class) eObject);
+ }
+ }
+ return classes;
+ }
+
+ private EList<Class> getOwnedClasses() {
+ EList<Class> classes = new BasicEList<Class>();
+ for (PackageableElement pe : ((Package) context.get(0)).getPackagedElements()) {
+ if (pe instanceof Class) {
+ classes.add((Class) pe);
+ }
+ }
+ return classes;
+ }
+
+ private EList<Class> getOtherClasses() {
+ EList<Class> classes = getAllClasses();
+ classes.removeAll(getOwnedClasses());
+ return classes;
+ }
+
+}
diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/DNH.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/DNH.java
new file mode 100644
index 0000000..6a582b4
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlpack/DNH.java
@@ -0,0 +1,31 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlpack;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;
+import org.eclipse.uml2.uml.Package;
+
+public class DNH implements IMetricCalculator {
+
+ private List<EObject> context;
+
+ @Override
+ public void setContext(List<EObject> context) {
+ this.context=context;
+ }
+
+ @Override
+ public double calculate() {
+ Package p = (Package) context.get(0);
+ return getNestingDepth(p);
+ }
+
+ private int getNestingDepth(Package p) {
+ if (p.getNestingPackage() == null) {
+ return 0;
+ }
+ return 1 + getNestingDepth(p.getNestingPackage());
+ }
+
+}