new UML metrics context Class added
diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
index 0e0f371..2bc5166 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/plugin.xml
@@ -12,6 +12,7 @@
             metric_name="A">

       </metric>

    </extension>

+   

    <extension

          point="org.eclipse.emf.refactor.metrics">

       <metric

@@ -90,6 +91,54 @@
 			metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" 

 			metric_name="NFEAC">

       </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.nasc" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NASC" 

+			metric_context="Class" 

+			metric_description="Number of association with other classes or itself" 

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

+			metric_name="NASC">

+      </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.nppac" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPPAC" 

+			metric_context="Class" 

+			metric_description="Number of private and protected owned attributes" 

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

+			metric_name="NPPAC">

+      </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.nai" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NAI" 

+			metric_context="Class" 

+			metric_description="Number of owned attributes visible to subclasses (public and protected)" 

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

+			metric_name="NAI">

+      </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.dam" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.DAM" 

+			metric_context="Class" 

+			metric_description="Ratio between number of private and protected owned attributes and number of owned attributes" 

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

+			metric_name="DAM">

+      </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.icpar" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.ICPar" 

+			metric_context="Class" 

+			metric_description="Number of parameters within the class having another class or interface as type" 

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

+			metric_name="ICPar">

+      </metric>

+      <metric

+            id="org.eclipse.emf.refactor.metrics.uml24.apoc" 

+			metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.APOC" 

+			metric_context="Class" 

+			metric_description="Average number of parameters in all owned operations within the class" 

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

+			metric_name="APOC">

+      </metric>

    </extension>

 

 </plugin>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/APOC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/APOC.java
new file mode 100644
index 0000000..6a16d96
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/APOC.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 APOC implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nparc";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nopc";

+	

+	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/umlcl/DAM.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAM.java
new file mode 100644
index 0000000..c0f2213
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAM.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 DAM implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nppac";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.natc";

+	

+	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/umlcl/ICPar.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ICPar.java
new file mode 100644
index 0000000..ba38402
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ICPar.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 ICPar implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.icparc";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.icpari";

+	

+	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/umlcl/NAI.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NAI.java
new file mode 100644
index 0000000..4d40a10
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NAI.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NAI implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.npubac";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nproac";

+	

+	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/umlcl/NASC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NASC.java
new file mode 100644
index 0000000..a811624
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NASC.java
@@ -0,0 +1,36 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NASC implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.nassc";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nasoc";

+	

+	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/umlcl/NPPAC.java b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPPAC.java
new file mode 100644
index 0000000..619cfd6
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.compositional/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPPAC.java
@@ -0,0 +1,37 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPPAC implements IMetricCalculator {

+

+	private List<EObject> context;

+	private String metricID1 = "org.eclipse.emf.refactor.metrics.uml24.npriac";

+	private String metricID2 = "org.eclipse.emf.refactor.metrics.uml24.nproac";

+	

+	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 a52f4a1..a4ca92b 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,3 +1,6 @@
 eclipse.preferences.version=1

+encoding//transformations/ICParC.henshin_diagram=UTF-8

+encoding//transformations/ICParI.henshin_diagram=UTF-8

+encoding//transformations/NASOC.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/bin/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.class b/org.eclipse.emf.refactor.metrics.uml24.henshin/bin/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.class
index 5377293..c99d842 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.henshin/bin/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.class
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/bin/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
index e59075c..8c6bfe1 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/plugin.xml
@@ -10,4 +10,30 @@
 		metric_name="NNIACP">

 	</metric>

 </extension>

+<extension point="org.eclipse.emf.refactor.metrics">

+	<metric 

+		id="org.eclipse.emf.refactor.metrics.uml24.nasoc" 

+		metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.NASOC" 

+		metric_context="Class" 

+		metric_description="Number of associations with other classes" 

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

+		metric_name="NASOC">

+	</metric>

+	<metric 

+		id="org.eclipse.emf.refactor.metrics.uml24.icparc" 

+		metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.ICParC" 

+		metric_context="Class" 

+		metric_description="Number of parameters within the class having another class as type" 

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

+		metric_name="ICParC">

+	</metric>

+	<metric 

+		id="org.eclipse.emf.refactor.metrics.uml24.icpari" 

+		metric_calculate_class="org.eclipse.emf.refactor.metrics.umlpack.ICParI" 

+		metric_context="Class" 

+		metric_description="Number of parameters within the class having an interface as type" 

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

+		metric_name="ICParI">

+	</metric>

+</extension>

 </plugin>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/ICParC.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/ICParC.java
new file mode 100644
index 0000000..174ffdc
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/ICParC.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 ICParC implements IMetricCalculator {

+

+	private String transformationPath = getFullPath("transformations/ICParC.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/ICParI.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/ICParI.java
new file mode 100644
index 0000000..9386e73
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/ICParI.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 ICParI implements IMetricCalculator {

+

+private String transformationPath = getFullPath("transformations/ICParI.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/NASOC.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NASOC.java
new file mode 100644
index 0000000..8b793ce
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NASOC.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 NASOC implements IMetricCalculator {

+

+	private String transformationPath = getFullPath("transformations/NASOC.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/NNIACP.java b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.java
index 0b2386e..918900c 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.java
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/src/org/eclipse/emf/refactor/metrics/umlpack/NNIACP.java
@@ -10,12 +10,11 @@
 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 final class NNIACP implements IMetricCalculator {

 

-	private String transformationPath = 

-		getFullPath("transformations/NNIACP.henshin"); 

+	private String transformationPath = getFullPath("transformations/NNIACP.henshin"); 

 		

 	private EObject context; 

 		

@@ -30,7 +29,7 @@
 	}

 	

 	private String getFullPath(String transformationPath){

-		URL url = FileLocator.find(org.eclipse.emf.refactor.metrics.uml24.henshin.Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);

+		URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(transformationPath), Collections.EMPTY_MAP);

 		URL fileUrl = null;

 		try {

 			fileUrl = FileLocator.toFileURL(url);

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin
new file mode 100644
index 0000000..ff5a03f
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin
@@ -0,0 +1,57 @@
+<?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="_owY5AKFLEeOs9qNIBJqQxw">

+  <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_owb8UKFLEeOs9qNIBJqQxw" name="mainRule">

+    <parameters xmi:id="_owdKcKFLEeOs9qNIBJqQxw" name="context"/>

+    <lhs xmi:id="_oweYkKFLEeOs9qNIBJqQxw" name="Lhs">

+      <nodes xmi:id="_1kgEsKFLEeOs9qNIBJqQxw" name="context" outgoing="_Up6bsaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Up4mgKGHEeOive5EI1bBFw" incoming="_Up6bsaGHEeOive5EI1bBFw" outgoing="_VZSqMqGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Operation"/>

+      </nodes>

+      <nodes xmi:id="_VZSDIKGHEeOive5EI1bBFw" incoming="_VZSqMqGHEeOive5EI1bBFw" outgoing="_Y-z_YKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Parameter"/>

+      </nodes>

+      <nodes xmi:id="_WW6wEKGHEeOive5EI1bBFw" incoming="_Y-z_YKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <edges xmi:id="_Up6bsaGHEeOive5EI1bBFw" source="_1kgEsKFLEeOs9qNIBJqQxw" target="_Up4mgKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class/ownedOperation"/>

+      </edges>

+      <edges xmi:id="_VZSqMqGHEeOive5EI1bBFw" source="_Up4mgKGHEeOive5EI1bBFw" target="_VZSDIKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature/ownedParameter"/>

+      </edges>

+      <edges xmi:id="_Y-z_YKGHEeOive5EI1bBFw" source="_VZSDIKGHEeOive5EI1bBFw" target="_WW6wEKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_o76MgaFLEeOs9qNIBJqQxw" name="Rhs">

+      <nodes xmi:id="_1kgEsaFLEeOs9qNIBJqQxw" name="context" outgoing="_Up7CwKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Up50oKGHEeOive5EI1bBFw" incoming="_Up7CwKGHEeOive5EI1bBFw" outgoing="_VZSqM6GHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Operation"/>

+      </nodes>

+      <nodes xmi:id="_VZSqMKGHEeOive5EI1bBFw" incoming="_VZSqM6GHEeOive5EI1bBFw" outgoing="_Y-z_YaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Parameter"/>

+      </nodes>

+      <nodes xmi:id="_WW6wEaGHEeOive5EI1bBFw" incoming="_Y-z_YaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <edges xmi:id="_Up7CwKGHEeOive5EI1bBFw" source="_1kgEsaFLEeOs9qNIBJqQxw" target="_Up50oKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class/ownedOperation"/>

+      </edges>

+      <edges xmi:id="_VZSqM6GHEeOive5EI1bBFw" source="_Up50oKGHEeOive5EI1bBFw" target="_VZSqMKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature/ownedParameter"/>

+      </edges>

+      <edges xmi:id="_Y-z_YaGHEeOive5EI1bBFw" source="_VZSqMKGHEeOive5EI1bBFw" target="_WW6wEaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_1kgEsqFLEeOs9qNIBJqQxw" origin="_1kgEsKFLEeOs9qNIBJqQxw" image="_1kgEsaFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_Up6bsKGHEeOive5EI1bBFw" origin="_Up4mgKGHEeOive5EI1bBFw" image="_Up50oKGHEeOive5EI1bBFw"/>

+    <mappings xmi:id="_VZSqMaGHEeOive5EI1bBFw" origin="_VZSDIKGHEeOive5EI1bBFw" image="_VZSqMKGHEeOive5EI1bBFw"/>

+    <mappings xmi:id="_WW6wEqGHEeOive5EI1bBFw" origin="_WW6wEKGHEeOive5EI1bBFw" image="_WW6wEaGHEeOive5EI1bBFw"/>

+  </units>

+</henshin:Module>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin_diagram
new file mode 100644
index 0000000..1be30c6
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParC.henshin_diagram
@@ -0,0 +1,88 @@
+<?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="_LpKM4KGHEeOive5EI1bBFw" type="Henshin" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_L4fpYKGHEeOive5EI1bBFw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Up7CwaGHEeOive5EI1bBFw" source="defaultAction">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Up7CwqGHEeOive5EI1bBFw" key="value" value="preserve"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_L4issKGHEeOive5EI1bBFw" type="5001"/>

+    <children xmi:type="notation:DecorationNode" xmi:id="_L4issaGHEeOive5EI1bBFw" type="7001">

+      <children xmi:type="notation:Shape" xmi:id="_L7RQkKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_L7R3oKGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_L7R3oaGHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_L7TFwKGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_L7TFwaGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_L7TFwqGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParC.henshin#_1kgEsKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L7RQkaGHEeOive5EI1bBFw" x="23" y="20"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_UqEMsKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_UqEzwKGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_UqEzwaGHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_UqEzwqGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_UqEzw6GHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_UqEzxKGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParC.henshin#_Up4mgKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UqEMsaGHEeOive5EI1bBFw" x="30" y="165"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_VZVGcKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_VZVGcqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_VZVGc6GHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_VZVGdKGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_VZVGdaGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_VZVGdqGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParC.henshin#_VZSDIKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VZVGcaGHEeOive5EI1bBFw" x="253" y="165"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_WW9MUKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_WW9MUqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_WW9zYKGHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_WW9zYaGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_WW9zYqGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_WW9zY6GHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParC.henshin#_WW6wEKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WW9MUaGHEeOive5EI1bBFw" x="253" y="20"/>

+      </children>

+    </children>

+    <element xmi:type="henshin:Rule" href="ICParC.henshin#_owb8UKFLEeOs9qNIBJqQxw"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L4gQcKGHEeOive5EI1bBFw" x="28" y="20" width="366" height="287"/>

+  </children>

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

+  <element xmi:type="henshin:Module" href="ICParC.henshin#_owY5AKFLEeOs9qNIBJqQxw"/>

+  <edges xmi:type="notation:Connector" xmi:id="_UqfqgKGHEeOive5EI1bBFw" type="4001" source="_L7RQkKGHEeOive5EI1bBFw" target="_UqEMsKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_UqgRkKGHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_UqgRkaGHEeOive5EI1bBFw" x="18" y="-72"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_UqgRkqGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_UqgRk6GHEeOive5EI1bBFw" x="-7" y="-47"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="ICParC.henshin#_Up6bsaGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UqfqgqGHEeOive5EI1bBFw" points="[-18, -26, 51, 75]$[-69, -101, 0, 0]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_VZb0IKGHEeOive5EI1bBFw" type="4001" source="_UqEMsKGHEeOive5EI1bBFw" target="_VZVGcKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_VZcbMKGHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VZcbMaGHEeOive5EI1bBFw" x="4" y="-16"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_VZcbMqGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VZcbM6GHEeOive5EI1bBFw" x="1" y="16"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="ICParC.henshin#_VZSqMqGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VZb0IqGHEeOive5EI1bBFw" points="[-14, -26, 117, 219]$[-131, -245, 0, 0]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Y-1NgKGHEeOive5EI1bBFw" type="4001" source="_VZVGcKGHEeOive5EI1bBFw" target="_WW9MUKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_Y-10kKGHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Y-10kaGHEeOive5EI1bBFw" y="30"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_Y-10kqGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Y-10k6GHEeOive5EI1bBFw" x="10" y="-47"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_Y-1NgaGHEeOive5EI1bBFw" fontName="Segoe UI"/>

+    <element xmi:type="henshin:Edge" href="ICParC.henshin#_Y-z_YKGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y-1NgqGHEeOive5EI1bBFw" points="[2, -26, -17, 111]$[14, -163, -5, -26]"/>

+  </edges>

+</notation:Diagram>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin
new file mode 100644
index 0000000..0e18c38
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin
@@ -0,0 +1,57 @@
+<?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="_owY5AKFLEeOs9qNIBJqQxw">

+  <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_owb8UKFLEeOs9qNIBJqQxw" name="mainRule">

+    <parameters xmi:id="_owdKcKFLEeOs9qNIBJqQxw" name="context"/>

+    <lhs xmi:id="_oweYkKFLEeOs9qNIBJqQxw" name="Lhs">

+      <nodes xmi:id="_1kgEsKFLEeOs9qNIBJqQxw" name="context" outgoing="_Up6bsaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Up4mgKGHEeOive5EI1bBFw" incoming="_Up6bsaGHEeOive5EI1bBFw" outgoing="_VZSqMqGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Operation"/>

+      </nodes>

+      <nodes xmi:id="_VZSDIKGHEeOive5EI1bBFw" incoming="_VZSqMqGHEeOive5EI1bBFw" outgoing="_qhi2UKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Parameter"/>

+      </nodes>

+      <nodes xmi:id="_oaEzgKGHEeOive5EI1bBFw" incoming="_qhi2UKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Interface"/>

+      </nodes>

+      <edges xmi:id="_Up6bsaGHEeOive5EI1bBFw" source="_1kgEsKFLEeOs9qNIBJqQxw" target="_Up4mgKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class/ownedOperation"/>

+      </edges>

+      <edges xmi:id="_VZSqMqGHEeOive5EI1bBFw" source="_Up4mgKGHEeOive5EI1bBFw" target="_VZSDIKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature/ownedParameter"/>

+      </edges>

+      <edges xmi:id="_qhi2UKGHEeOive5EI1bBFw" source="_VZSDIKGHEeOive5EI1bBFw" target="_oaEzgKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_o76MgaFLEeOs9qNIBJqQxw" name="Rhs">

+      <nodes xmi:id="_1kgEsaFLEeOs9qNIBJqQxw" name="context" outgoing="_Up7CwKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_Up50oKGHEeOive5EI1bBFw" incoming="_Up7CwKGHEeOive5EI1bBFw" outgoing="_VZSqM6GHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Operation"/>

+      </nodes>

+      <nodes xmi:id="_VZSqMKGHEeOive5EI1bBFw" incoming="_VZSqM6GHEeOive5EI1bBFw" outgoing="_qhi2UaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Parameter"/>

+      </nodes>

+      <nodes xmi:id="_oaEzgaGHEeOive5EI1bBFw" incoming="_qhi2UaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Interface"/>

+      </nodes>

+      <edges xmi:id="_Up7CwKGHEeOive5EI1bBFw" source="_1kgEsaFLEeOs9qNIBJqQxw" target="_Up50oKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class/ownedOperation"/>

+      </edges>

+      <edges xmi:id="_VZSqM6GHEeOive5EI1bBFw" source="_Up50oKGHEeOive5EI1bBFw" target="_VZSqMKGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature/ownedParameter"/>

+      </edges>

+      <edges xmi:id="_qhi2UaGHEeOive5EI1bBFw" source="_VZSqMKGHEeOive5EI1bBFw" target="_oaEzgaGHEeOive5EI1bBFw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_1kgEsqFLEeOs9qNIBJqQxw" origin="_1kgEsKFLEeOs9qNIBJqQxw" image="_1kgEsaFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_Up6bsKGHEeOive5EI1bBFw" origin="_Up4mgKGHEeOive5EI1bBFw" image="_Up50oKGHEeOive5EI1bBFw"/>

+    <mappings xmi:id="_VZSqMaGHEeOive5EI1bBFw" origin="_VZSDIKGHEeOive5EI1bBFw" image="_VZSqMKGHEeOive5EI1bBFw"/>

+    <mappings xmi:id="_oaEzgqGHEeOive5EI1bBFw" origin="_oaEzgKGHEeOive5EI1bBFw" image="_oaEzgaGHEeOive5EI1bBFw"/>

+  </units>

+</henshin:Module>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin_diagram
new file mode 100644
index 0000000..d816a25
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/ICParI.henshin_diagram
@@ -0,0 +1,88 @@
+<?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="_kWu54KGHEeOive5EI1bBFw" type="Henshin" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_kYvFAKGHEeOive5EI1bBFw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oaFakaGHEeOive5EI1bBFw" source="defaultAction">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oaFakqGHEeOive5EI1bBFw" key="value" value="preserve"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_kYvFAqGHEeOive5EI1bBFw" type="5001"/>

+    <children xmi:type="notation:DecorationNode" xmi:id="_kYvFA6GHEeOive5EI1bBFw" type="7001">

+      <children xmi:type="notation:Shape" xmi:id="_kYyIUKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyIUqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyIU6GHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyIVKGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_kYyIVaGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_kYyIVqGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParI.henshin#_1kgEsKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kYyIUaGHEeOive5EI1bBFw" x="23" y="11"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_kYyvYKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyvYqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyvY6GHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYyvZKGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_kYyvZaGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_kYyvZqGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParI.henshin#_Up4mgKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kYyvYaGHEeOive5EI1bBFw" x="30" y="150"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_kYzWcKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYzWcqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYzWc6GHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_kYzWdKGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_kYzWdaGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_kYzWdqGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParI.henshin#_VZSDIKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kYzWcaGHEeOive5EI1bBFw" x="258" y="150"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_oaHPwKGHEeOive5EI1bBFw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_oaHPwqGHEeOive5EI1bBFw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_oaHPw6GHEeOive5EI1bBFw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_oaH20KGHEeOive5EI1bBFw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_oaH20aGHEeOive5EI1bBFw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_oaH20qGHEeOive5EI1bBFw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="ICParI.henshin#_oaEzgKGHEeOive5EI1bBFw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oaHPwaGHEeOive5EI1bBFw" x="258" y="11"/>

+      </children>

+    </children>

+    <element xmi:type="henshin:Rule" href="ICParI.henshin#_owb8UKFLEeOs9qNIBJqQxw"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kYvFAaGHEeOive5EI1bBFw" width="371" height="270"/>

+  </children>

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

+  <element xmi:type="henshin:Module" href="ICParI.henshin#_owY5AKFLEeOs9qNIBJqQxw"/>

+  <edges xmi:type="notation:Connector" xmi:id="_kZWwEKGHEeOive5EI1bBFw" type="4001" source="_kYyIUKGHEeOive5EI1bBFw" target="_kYyvYKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_kZWwE6GHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kZWwFKGHEeOive5EI1bBFw" x="-8" y="-71"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_kZWwFaGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kZWwFqGHEeOive5EI1bBFw" x="19" y="-50"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="ICParI.henshin#_Up6bsaGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kZWwEqGHEeOive5EI1bBFw" points="[3, 26, 0, 16]$[0, -16, -3, -26]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_kZXXIKGHEeOive5EI1bBFw" type="4001" source="_kYyvYKGHEeOive5EI1bBFw" target="_kYzWcKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_kZX-MqGHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kZX-M6GHEeOive5EI1bBFw" x="2" y="-20"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_kZX-NKGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kZX-NaGHEeOive5EI1bBFw" y="16"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="ICParI.henshin#_VZSqMqGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kZX-MaGHEeOive5EI1bBFw" points="[26, 26, 16, 16]$[-16, -16, -26, -26]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_qhkrgKGHEeOive5EI1bBFw" type="4001" source="_kYzWcKGHEeOive5EI1bBFw" target="_oaHPwKGHEeOive5EI1bBFw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_qhkrg6GHEeOive5EI1bBFw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qhkrhKGHEeOive5EI1bBFw" x="2" y="23"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_qhkrhaGHEeOive5EI1bBFw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qhkrhqGHEeOive5EI1bBFw" x="-16" y="-51"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="ICParI.henshin#_qhi2UKGHEeOive5EI1bBFw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qhkrgqGHEeOive5EI1bBFw" points="[-7, -26, 22, 86]$[-28, -138, 1, -26]"/>

+  </edges>

+</notation:Diagram>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.henshin b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.henshin
new file mode 100644
index 0000000..43180b3
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.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="_owY5AKFLEeOs9qNIBJqQxw">

+  <imports href="http://www.eclipse.org/uml2/4.0.0/UML#/"/>

+  <units xsi:type="henshin:Rule" xmi:id="_owb8UKFLEeOs9qNIBJqQxw" name="mainRule">

+    <parameters xmi:id="_owdKcKFLEeOs9qNIBJqQxw" name="context"/>

+    <lhs xmi:id="_oweYkKFLEeOs9qNIBJqQxw" name="Lhs">

+      <nodes xmi:id="_ygzDIKFLEeOs9qNIBJqQxw" incoming="_KXOFsKFMEeOs9qNIBJqQxw" outgoing="_MN6hkKFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>

+      </nodes>

+      <nodes xmi:id="_0XSDoKFLEeOs9qNIBJqQxw" outgoing="_KXOFsKFMEeOs9qNIBJqQxw _K5SQ8KFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>

+      </nodes>

+      <nodes xmi:id="_1kgEsKFLEeOs9qNIBJqQxw" name="context" incoming="_MN6hkKFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_3SkwEKFLEeOs9qNIBJqQxw" incoming="_K5SQ8KFMEeOs9qNIBJqQxw" outgoing="_MyE-kKFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>

+      </nodes>

+      <nodes xmi:id="_4cEuwKFLEeOs9qNIBJqQxw" incoming="_MyE-kKFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <edges xmi:id="_KXOFsKFMEeOs9qNIBJqQxw" source="_0XSDoKFLEeOs9qNIBJqQxw" target="_ygzDIKFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/memberEnd"/>

+      </edges>

+      <edges xmi:id="_K5SQ8KFMEeOs9qNIBJqQxw" source="_0XSDoKFLEeOs9qNIBJqQxw" target="_3SkwEKFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/memberEnd"/>

+      </edges>

+      <edges xmi:id="_MN6hkKFMEeOs9qNIBJqQxw" source="_ygzDIKFLEeOs9qNIBJqQxw" target="_1kgEsKFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+      <edges xmi:id="_MyE-kKFMEeOs9qNIBJqQxw" source="_3SkwEKFLEeOs9qNIBJqQxw" target="_4cEuwKFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </lhs>

+    <rhs xmi:id="_o76MgaFLEeOs9qNIBJqQxw" name="Rhs">

+      <nodes xmi:id="_yg04UKFLEeOs9qNIBJqQxw" incoming="_KXOFsaFMEeOs9qNIBJqQxw" outgoing="_MN6hkaFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>

+      </nodes>

+      <nodes xmi:id="_0XSDoaFLEeOs9qNIBJqQxw" outgoing="_KXOFsaFMEeOs9qNIBJqQxw _K5SQ8aFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>

+      </nodes>

+      <nodes xmi:id="_1kgEsaFLEeOs9qNIBJqQxw" name="context" incoming="_MN6hkaFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <nodes xmi:id="_3SkwEaFLEeOs9qNIBJqQxw" incoming="_K5SQ8aFMEeOs9qNIBJqQxw" outgoing="_MyE-kaFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>

+      </nodes>

+      <nodes xmi:id="_4cFV0KFLEeOs9qNIBJqQxw" incoming="_MyE-kaFMEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>

+      </nodes>

+      <edges xmi:id="_KXOFsaFMEeOs9qNIBJqQxw" source="_0XSDoaFLEeOs9qNIBJqQxw" target="_yg04UKFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/memberEnd"/>

+      </edges>

+      <edges xmi:id="_K5SQ8aFMEeOs9qNIBJqQxw" source="_0XSDoaFLEeOs9qNIBJqQxw" target="_3SkwEaFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//Association/memberEnd"/>

+      </edges>

+      <edges xmi:id="_MN6hkaFMEeOs9qNIBJqQxw" source="_yg04UKFLEeOs9qNIBJqQxw" target="_1kgEsaFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+      <edges xmi:id="_MyE-kaFMEeOs9qNIBJqQxw" source="_3SkwEaFLEeOs9qNIBJqQxw" target="_4cFV0KFLEeOs9qNIBJqQxw">

+        <type href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement/type"/>

+      </edges>

+    </rhs>

+    <mappings xmi:id="_yg04UaFLEeOs9qNIBJqQxw" origin="_ygzDIKFLEeOs9qNIBJqQxw" image="_yg04UKFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_0XSDoqFLEeOs9qNIBJqQxw" origin="_0XSDoKFLEeOs9qNIBJqQxw" image="_0XSDoaFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_1kgEsqFLEeOs9qNIBJqQxw" origin="_1kgEsKFLEeOs9qNIBJqQxw" image="_1kgEsaFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_3SkwEqFLEeOs9qNIBJqQxw" origin="_3SkwEKFLEeOs9qNIBJqQxw" image="_3SkwEaFLEeOs9qNIBJqQxw"/>

+    <mappings xmi:id="_4cFV0aFLEeOs9qNIBJqQxw" origin="_4cEuwKFLEeOs9qNIBJqQxw" image="_4cFV0KFLEeOs9qNIBJqQxw"/>

+  </units>

+</henshin:Module>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.henshin_diagram b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.henshin_diagram
new file mode 100644
index 0000000..8d307b0
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.henshin/transformations/NASOC.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="_uTsJgKFLEeOs9qNIBJqQxw" type="Henshin" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_uw7fIKFLEeOs9qNIBJqQxw" type="2001" fontName="Segoe UI" italic="true" lineColor="0">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yg1fYKFLEeOs9qNIBJqQxw" source="defaultAction">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yg1fYaFLEeOs9qNIBJqQxw" key="value" value="preserve"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_uw-icKFLEeOs9qNIBJqQxw" type="5001"/>

+    <children xmi:type="notation:DecorationNode" xmi:id="_uw-icaFLEeOs9qNIBJqQxw" type="7001">

+      <children xmi:type="notation:Shape" xmi:id="_yg4isKFLEeOs9qNIBJqQxw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_yg4isqFLEeOs9qNIBJqQxw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_yg4is6FLEeOs9qNIBJqQxw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_yhCTsKFLEeOs9qNIBJqQxw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_yhCTsaFLEeOs9qNIBJqQxw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_yhCTsqFLEeOs9qNIBJqQxw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="NASOC.henshin#_ygzDIKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yg4isaFLEeOs9qNIBJqQxw" x="194" y="25"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_0XT40KFLEeOs9qNIBJqQxw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_0XT40qFLEeOs9qNIBJqQxw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_0XT406FLEeOs9qNIBJqQxw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_0XT41KFLEeOs9qNIBJqQxw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_0XT41aFLEeOs9qNIBJqQxw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_0XT41qFLEeOs9qNIBJqQxw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="NASOC.henshin#_0XSDoKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0XT40aFLEeOs9qNIBJqQxw" x="310" y="119"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_1khS0KFLEeOs9qNIBJqQxw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_1kh54KFLEeOs9qNIBJqQxw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_1kh54aFLEeOs9qNIBJqQxw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_1kh54qFLEeOs9qNIBJqQxw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_1kh546FLEeOs9qNIBJqQxw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_1kh55KFLEeOs9qNIBJqQxw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="NASOC.henshin#_1kgEsKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1khS0aFLEeOs9qNIBJqQxw" x="20" y="25"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_3SnMUKFLEeOs9qNIBJqQxw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_3SnMUqFLEeOs9qNIBJqQxw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_3SnMU6FLEeOs9qNIBJqQxw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_3SnMVKFLEeOs9qNIBJqQxw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_3SnMVaFLEeOs9qNIBJqQxw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_3SnMVqFLEeOs9qNIBJqQxw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="NASOC.henshin#_3SkwEKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3SnMUaFLEeOs9qNIBJqQxw" x="421" y="25"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_4cHLAKFLEeOs9qNIBJqQxw" type="3001" fontName="Segoe UI">

+        <children xmi:type="notation:DecorationNode" xmi:id="_4cHLAqFLEeOs9qNIBJqQxw" type="5002"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_4cHLA6FLEeOs9qNIBJqQxw" type="5003"/>

+        <children xmi:type="notation:DecorationNode" xmi:id="_4cHyEKFLEeOs9qNIBJqQxw" type="7002">

+          <styles xmi:type="notation:SortingStyle" xmi:id="_4cHyEaFLEeOs9qNIBJqQxw"/>

+          <styles xmi:type="notation:FilteringStyle" xmi:id="_4cHyEqFLEeOs9qNIBJqQxw"/>

+        </children>

+        <element xmi:type="henshin:Node" href="NASOC.henshin#_4cEuwKFLEeOs9qNIBJqQxw"/>

+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4cHLAaFLEeOs9qNIBJqQxw" x="598" y="25"/>

+      </children>

+    </children>

+    <element xmi:type="henshin:Rule" href="NASOC.henshin#_owb8UKFLEeOs9qNIBJqQxw"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uw7fIaFLEeOs9qNIBJqQxw" x="14" y="27" width="707" height="222"/>

+  </children>

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

+  <element xmi:type="henshin:Module" href="NASOC.henshin#_owY5AKFLEeOs9qNIBJqQxw"/>

+  <edges xmi:type="notation:Connector" xmi:id="_KXPT0KFMEeOs9qNIBJqQxw" type="4001" source="_0XT40KFLEeOs9qNIBJqQxw" target="_yg4isKFLEeOs9qNIBJqQxw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_KXP64KFMEeOs9qNIBJqQxw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_KXP64aFMEeOs9qNIBJqQxw" x="2" y="-16"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_KXP64qFMEeOs9qNIBJqQxw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_KXP646FMEeOs9qNIBJqQxw" x="-33" y="16"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="NASOC.henshin#_KXOFsKFMEeOs9qNIBJqQxw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KXPT0qFMEeOs9qNIBJqQxw" points="[-42, 0, 78, 94]$[-127, 0, -7, 94]$[-127, -68, -7, 26]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_K5TfEKFMEeOs9qNIBJqQxw" type="4001" source="_0XT40KFLEeOs9qNIBJqQxw" target="_3SnMUKFLEeOs9qNIBJqQxw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_K5UGIKFMEeOs9qNIBJqQxw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_K5UGIaFMEeOs9qNIBJqQxw" x="58" y="-7"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_K5UGIqFMEeOs9qNIBJqQxw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_K5UGI6FMEeOs9qNIBJqQxw" x="25" y="19"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="NASOC.henshin#_K5SQ8KFMEeOs9qNIBJqQxw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_K5TfEqFMEeOs9qNIBJqQxw" points="[42, -9, -65, 85]$[107, -9, 0, 85]$[107, -68, 0, 26]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_MN7vsKFMEeOs9qNIBJqQxw" type="4001" source="_yg4isKFLEeOs9qNIBJqQxw" target="_1khS0KFLEeOs9qNIBJqQxw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_MN7vs6FMEeOs9qNIBJqQxw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_MN7vtKFMEeOs9qNIBJqQxw" x="-3" y="16"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_MN8WwKFMEeOs9qNIBJqQxw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_MN8WwaFMEeOs9qNIBJqQxw" x="1" y="-16"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="NASOC.henshin#_MN6hkKFMEeOs9qNIBJqQxw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MN7vsqFMEeOs9qNIBJqQxw" points="[-9, -26, 35, 135]$[-53, -187, -9, -26]"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_MyGMsKFMEeOs9qNIBJqQxw" type="4001" source="_3SnMUKFLEeOs9qNIBJqQxw" target="_4cHLAKFLEeOs9qNIBJqQxw">

+    <children xmi:type="notation:DecorationNode" xmi:id="_MyGMs6FMEeOs9qNIBJqQxw" type="6001">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_MyGMtKFMEeOs9qNIBJqQxw" x="-3" y="-16"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_MyGMtaFMEeOs9qNIBJqQxw" type="6002">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_MyGMtqFMEeOs9qNIBJqQxw" x="-1" y="21"/>

+    </children>

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

+    <element xmi:type="henshin:Edge" href="NASOC.henshin#_MyE-kKFMEeOs9qNIBJqQxw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MyGMsqFMEeOs9qNIBJqQxw" points="[38, -24, -177, 110]$[215, -108, 0, 26]"/>

+  </edges>

+</notation:Diagram>

diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
index f0b7ed6..cc11cee 100644
--- a/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/plugin.xml
@@ -132,6 +132,97 @@
 	metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" 

 	metric_name="NAPTC">

 </metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.ecatt" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.ECAtt" 

+	metric_context="Class" 

+	metric_description="Number of times the class is externally used as attribute type" 

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

+	metric_name="ECAtt">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.ecpar" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.ECPar" 

+	metric_context="Class" 

+	metric_description="Number of times the class is externally used as parameter type" 

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

+	metric_name="ECPar">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nsupc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NSUPC" 

+	metric_context="Class" 

+	metric_description="Number of direct parent classes of the class" 

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

+	metric_name="NSUPC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nsubc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NSUBC" 

+	metric_context="Class" 

+	metric_description="Number of direct child classes of the class" 

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

+	metric_name="NSUBC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nsubc2" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NSUBC2" 

+	metric_context="Class" 

+	metric_description="Number of all children of the class" 

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

+	metric_name="NSUBC2">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.npubac" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPUBAC" 

+	metric_context="Class" 

+	metric_description="Number of public attributes within the class" 

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

+	metric_name="NPUBAC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.npriac" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPRIAC" 

+	metric_context="Class" 

+	metric_description="Number of private attributes within the class" 

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

+	metric_name="NPRIAC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nproac" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPROAC" 

+	metric_context="Class" 

+	metric_description="Number of protected attributes within the class" 

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

+	metric_name="NPROAC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.npacac" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPACAC" 

+	metric_context="Class" 

+	metric_description="Number of package attributes within the class" 

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

+	metric_name="NPACAC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nparc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NPARC" 

+	metric_context="Class" 

+	metric_description="Number of parameters in all owned operations within the class" 

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

+	metric_name="NPARC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.dac" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.DAC" 

+	metric_context="Class" 

+	metric_description="Number of owned attributes having another class as type" 

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

+	metric_name="DAC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.dac2" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.DAC2" 

+	metric_context="Class" 

+	metric_description="Number of different classes that are used as attribute type" 

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

+	metric_name="DAC2">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.ndpc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NDPC" 

+	metric_context="Class" 

+	metric_description="Number of direct part classes which compose a composite class" 

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

+	metric_name="NDPC">

+</metric>

 </extension>

 

 <extension point="org.eclipse.emf.refactor.metrics">

diff --git a/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAC.java
new file mode 100644
index 0000000..328acd7
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 DAC implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute -> reject(type.oclIsUndefined()) -> select(type.oclIsTypeOf(Class) and type<>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/umlcl/DAC2.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAC2.java
new file mode 100644
index 0000000..064b9b8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/DAC2.java
@@ -0,0 +1,28 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 DAC2 implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute "

+			+ "-> reject(type.oclIsUndefined()) "

+			+ "-> select(type.oclIsTypeOf(Class) and type<>self) "

+			+ "-> collect(type) -> asSet() -> 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/umlcl/ECAtt.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ECAtt.java
new file mode 100644
index 0000000..2ab3dc8
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ECAtt.java
@@ -0,0 +1,28 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 ECAtt implements IMetricCalculator {

+

+	private final String expression = 

+			"Class.allInstances() -> reject(c|c=self) "

+			+ "-> collect(ownedAttribute) -> select(type=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/umlcl/ECPar.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ECPar.java
new file mode 100644
index 0000000..acd42c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/ECPar.java
@@ -0,0 +1,28 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 ECPar implements IMetricCalculator {

+

+	private final String expression = 

+			"Class.allInstances() -> reject(c|c=self) "

+			+ "-> collect(ownedOperation) -> collect(ownedParameter) "

+			+ "-> select(type=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/umlcl/NDPC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NDPC.java
new file mode 100644
index 0000000..2f2f575
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NDPC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NDPC implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute -> select(aggregation=AggregationKind::composite) -> 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/umlcl/NPACAC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPACAC.java
new file mode 100644
index 0000000..ca96083
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPACAC.java
@@ -0,0 +1,24 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPACAC implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute -> select(visibility = VisibilityKind::_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/umlcl/NPARC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPARC.java
new file mode 100644
index 0000000..4285877
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPARC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPARC implements IMetricCalculator {

+

+	private final String expression = "self.ownedOperation -> collect(ownedParameter) -> 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/umlcl/NPRIAC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPRIAC.java
new file mode 100644
index 0000000..e97a65c
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPRIAC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPRIAC implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute -> select(visibility = VisibilityKind::private) -> 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/umlcl/NPROAC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPROAC.java
new file mode 100644
index 0000000..bc31fa7
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPROAC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPROAC implements IMetricCalculator {

+

+	private final String expression = "self.ownedAttribute -> select(visibility = VisibilityKind::protected) -> 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/umlcl/NPUBAC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPUBAC.java
new file mode 100644
index 0000000..8427e22
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NPUBAC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NPUBAC implements IMetricCalculator {

+

+	private final String expression = "self.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/umlcl/NSUBC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUBC.java
new file mode 100644
index 0000000..811024a
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUBC.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NSUBC implements IMetricCalculator {

+

+	private final String expression = "Class.allInstances() -> select(superClass -> includes(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/umlcl/NSUBC2.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUBC2.java
new file mode 100644
index 0000000..31e1cd2
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUBC2.java
@@ -0,0 +1,25 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NSUBC2 implements IMetricCalculator {

+

+	private final String expression = "Class.allInstances() -> select(allParents() -> includes(self)) -> asSet() -> 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/umlcl/NSUPC.java b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUPC.java
new file mode 100644
index 0000000..7e7e6cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24.ocl/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NSUPC.java
@@ -0,0 +1,24 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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 NSUPC implements IMetricCalculator {

+

+	private final String expression = "self.superClass -> 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 88d5405..ef2a3c8 100644
--- a/org.eclipse.emf.refactor.metrics.uml24/plugin.xml
+++ b/org.eclipse.emf.refactor.metrics.uml24/plugin.xml
@@ -39,7 +39,29 @@
 	metric_metamodel="http://www.eclipse.org/uml2/4.0.0/UML" 

 	metric_name="MaxDITC">

 </metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.nassc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.NASSC" 

+	metric_context="Class" 

+	metric_description="Number of associations with itself" 

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

+	metric_name="NASSC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.cbc" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.CBC" 

+	metric_context="Class" 

+	metric_description="Number of owned attributes and associations with class type (coupling between classes)" 

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

+	metric_name="CBC">

+</metric>

+<metric id="org.eclipse.emf.refactor.metrics.uml24.hagg" 

+	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlcl.HAgg" 

+	metric_context="Class" 

+	metric_description="Length of the longest path to the leaves in the aggregation hierarchy" 

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

+	metric_name="HAgg">

+</metric>

 </extension>

+

 <extension point="org.eclipse.emf.refactor.metrics">

 <metric id="org.eclipse.emf.refactor.metrics.uml24.neipo" 

 	metric_calculate_class="org.eclipse.emf.refactor.metrics.uml24.umlop.NEIPO" 

diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/CBC.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/CBC.java
new file mode 100644
index 0000000..2960af7
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/CBC.java
@@ -0,0 +1,85 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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.Association;

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

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

+

+public class CBC implements IMetricCalculator {

+

+	private List<EObject> context; 

+	

+	@Override

+	public void setContext(List<EObject> context) {

+		this.context = context;

+	}	

+			

+	@Override

+	public double calculate() {	

+		double ret = 0;

+		ret += getAttributeUses();

+		ret += getAssociationEndUses();

+		return ret;

+	}

+

+	private double getAttributeUses() {

+		double ret = 0;

+		Class cl = (Class) context.get(0);

+		for (Property p : cl.getOwnedAttributes()) {

+			if (p.getType() != null) {

+				if (p.getType() instanceof Class) {

+					if (((Class)p.getType()) != cl) {

+						ret++;

+					}

+				}

+			}

+		}

+		return ret;

+	}

+

+	private double getAssociationEndUses() {

+		double ret = 0;

+		Class cl = (Class) context.get(0);

+		for (Association a : getOutgoingAssociations()) {

+			for (Property p : a.getOwnedEnds()) {

+				if (p.getType() != cl) {

+					ret++;

+				}

+			}

+		}

+		return ret;

+	}

+	

+	private EList<Association> getOutgoingAssociations() {

+		EList<Association> outgoingAssociations = new BasicEList<Association>();

+		Class cl = (Class) context.get(0);

+		for (Association a : getAssociations()) {

+			for (Property p : a.getMemberEnds()) {

+				if (p.getType() == cl) {

+					outgoingAssociations.add(a);

+					break;

+				}

+			}

+		}

+		return outgoingAssociations;

+	}

+

+	private EList<Association> getAssociations() {

+		EList<Association> associations = new BasicEList<Association>();

+		TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();

+		while (iter.hasNext()) {

+			EObject eObject = iter.next();

+			if (eObject instanceof Association) {

+				associations.add((Association) eObject);

+			}

+		}

+		return associations;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/HAgg.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/HAgg.java
new file mode 100644
index 0000000..d3127c3
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/HAgg.java
@@ -0,0 +1,52 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+import java.util.List;

+

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

+import org.eclipse.emf.refactor.metrics.interfaces.IMetricCalculator;

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

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

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

+

+public class HAgg implements IMetricCalculator {

+

+	private List<EObject> context; 

+	

+	@Override

+	public void setContext(List<EObject> context) {

+		this.context=context;

+	}	

+		

+	@Override

+	public double calculate() {	

+		Class c = (Class) context.get(0);

+		return getHAgg(c);

+	}

+

+	private int getHAgg(Class c) {

+		if (c.getOwnedAttributes() == null || c.getOwnedAttributes().isEmpty()) {

+			return 0;

+		}

+		int[] haggs = new int[c.getOwnedAttributes().size()];

+		for (int i=0; i < haggs.length; i++) {

+			haggs[i] = 0;

+			Property att = c.getOwnedAttributes().get(i); 

+			if (! att.getAggregation().equals(AggregationKind.NONE_LITERAL)) {

+				System.out.println("Attribute: " + att.getQualifiedName());

+				haggs[i] = 1 + getHAgg((Class) att.getType());

+			}

+		}

+		return max(haggs);

+	}

+

+	private int max(int[] intArray) {

+		int result = 0;

+		for (int i=0; i < intArray.length; i++) {

+			if (intArray[i] > result) {

+				result = intArray[i];

+			}

+		}

+		return result;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NASSC.java b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NASSC.java
new file mode 100644
index 0000000..3137d7d
--- /dev/null
+++ b/org.eclipse.emf.refactor.metrics.uml24/src/org/eclipse/emf/refactor/metrics/uml24/umlcl/NASSC.java
@@ -0,0 +1,55 @@
+package org.eclipse.emf.refactor.metrics.uml24.umlcl;

+

+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.Association;

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

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

+

+public class NASSC implements IMetricCalculator {

+

+	private List<EObject> context; 

+	

+	@Override

+	public void setContext(List<EObject> context) {

+		this.context = context;

+	}	

+			

+	@Override

+	public double calculate() {	

+		

+		Class c = (Class) context.get(0);	

+		double ret = 0;

+		

+		for (Association as : getAssociations()) {

+			boolean isassocionwithitself = true;

+			for (Property pr : as.getMemberEnds()) {

+				if (pr.getType() != c) {

+					isassocionwithitself = false;

+					break;

+				}

+			}

+			if (isassocionwithitself) ret++;

+		}

+		

+		return ret;

+	}

+	

+	private EList<Association> getAssociations() {

+		EList<Association> associations = new BasicEList<Association>();

+		TreeIterator<EObject> iter = context.get(0).eResource().getAllContents();

+		while (iter.hasNext()) {

+			EObject eObject = iter.next();

+			if (eObject instanceof Association) {

+				associations.add((Association) eObject);

+			}

+		}

+		return associations;

+	}

+

+}