diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath
new file mode 100644
index 0000000000..f0d0c735ff
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project
new file mode 100644
index 0000000000..5cc3244b6e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project
@@ -0,0 +1,28 @@
+
+
+ cipm.consistency.fitests
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..cd8d089a19
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,15 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF b/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..2e60c40bf7
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: cipm.consistency.fitests
+Bundle-SymbolicName: cipm.consistency.fitests
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: cipm.consistency.fitests
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: junit-jupiter-api,
+ junit-jupiter-engine,
+ junit-jupiter-params,
+ org.eclipse.emf.common,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.compare,
+ org.eclipse.emf.ecore.xmi,
+ org.splevo.jamopp.diffing,
+ org.apache.log4j,
+ org.emftext.language.java,
+ jamopp.parser.jdt.singlefile,
+ jamopp.parser,
+ cipm.consistency.commitintegration.diff.util,
+ cipm.consistency.initialisers
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties b/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties
new file mode 100644
index 0000000000..34d2e4d2da
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java
new file mode 100644
index 0000000000..07c5cdd012
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java
@@ -0,0 +1,3 @@
+public class AddExtendsClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java
new file mode 100644
index 0000000000..76e978341f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java
@@ -0,0 +1,3 @@
+public class ChangedExtendsClass extends Integer {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java
new file mode 100644
index 0000000000..2613e4a68e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java
@@ -0,0 +1,3 @@
+public class DeleteExtendsClass extends Integer {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java
new file mode 100644
index 0000000000..1874bf8058
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java
@@ -0,0 +1,3 @@
+public class AddExtendsClass extends String {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java
new file mode 100644
index 0000000000..b98f57d98a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java
@@ -0,0 +1,3 @@
+public class ChangedExtendsClass extends String {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java
new file mode 100644
index 0000000000..c7be3efb37
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java
@@ -0,0 +1,3 @@
+public class DeleteExtendsClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java
new file mode 100644
index 0000000000..104ec5c69a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java
@@ -0,0 +1,3 @@
+public interface AddExtends {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java
new file mode 100644
index 0000000000..13d85ad96c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java
@@ -0,0 +1,3 @@
+public interface ChangedExtends extends Cloneable {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java
new file mode 100644
index 0000000000..17410f6353
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java
@@ -0,0 +1,3 @@
+public interface DeleteExtends extends Cloneable {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java
new file mode 100644
index 0000000000..38382913b4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java
@@ -0,0 +1,3 @@
+public interface AddExtends extends Runnable {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java
new file mode 100644
index 0000000000..5397108edb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java
@@ -0,0 +1,3 @@
+public interface ChangedExtends extends Runnable {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java
new file mode 100644
index 0000000000..60a4ed8fea
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java
@@ -0,0 +1,3 @@
+public interface DeleteExtends {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java
new file mode 100644
index 0000000000..07c5cdd012
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java
@@ -0,0 +1,3 @@
+public class AddExtendsClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java
new file mode 100644
index 0000000000..6a46d289da
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java
@@ -0,0 +1,3 @@
+public class ChangedExtendsClass implements InterfaceB {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java
new file mode 100644
index 0000000000..84bd2beda1
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java
@@ -0,0 +1,3 @@
+public class DeleteExtendsClass implements InterfaceB {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java
new file mode 100644
index 0000000000..1b719f4c24
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java
@@ -0,0 +1,3 @@
+public interface InterfaceA {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java
new file mode 100644
index 0000000000..aebd65024e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java
@@ -0,0 +1,3 @@
+public interface InterfaceB {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java
new file mode 100644
index 0000000000..c70764165b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java
@@ -0,0 +1,3 @@
+public class AddExtendsClass implements InterfaceA {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java
new file mode 100644
index 0000000000..9621ef269f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java
@@ -0,0 +1,3 @@
+public class ChangedExtendsClass implements InterfaceA {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java
new file mode 100644
index 0000000000..c7be3efb37
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java
@@ -0,0 +1,3 @@
+public class DeleteExtendsClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java
new file mode 100644
index 0000000000..1b719f4c24
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java
@@ -0,0 +1,3 @@
+public interface InterfaceA {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java
new file mode 100644
index 0000000000..aebd65024e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java
@@ -0,0 +1,3 @@
+public interface InterfaceB {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java
new file mode 100644
index 0000000000..718a36cf53
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java
@@ -0,0 +1,7 @@
+public class MyClass {
+
+ private void someMethod() {
+ System.out.println(1);
+ System.out.println(2);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java
new file mode 100644
index 0000000000..261cb7b633
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java
@@ -0,0 +1,7 @@
+public class MyClass {
+
+ private void someMethod() {
+ System.out.println(2);
+ System.out.println(1);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java
new file mode 100644
index 0000000000..927ee607f2
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java
@@ -0,0 +1,7 @@
+public class MyClass {
+
+ public void doSth() {
+ int a = 0;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java
new file mode 100644
index 0000000000..b84df8188f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java
@@ -0,0 +1,7 @@
+public class MyClass {
+
+ public void doSth() {
+ int a = 1;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java
new file mode 100644
index 0000000000..9d34a4f0a7
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java
@@ -0,0 +1,7 @@
+public class MyClass {
+
+ public void doSth() {
+ System.out.println(1);
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java
new file mode 100644
index 0000000000..21162812ef
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java
@@ -0,0 +1,9 @@
+public class MyClass {
+
+ public void doSth() {
+ if(true) {
+ System.out.println(1);
+ }
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java
new file mode 100644
index 0000000000..c6d0d8ed19
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java
@@ -0,0 +1,35 @@
+package org.splevo.jamopp.diffing.tests.access;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.xpath.XPath;
+
+public class ExternalTypeAccess {
+
+ @SuppressWarnings("unused")
+ private XPath path;
+
+ public void typeAsListType() {
+ List paths = new ArrayList();
+ System.out.println(paths);
+ }
+
+ public void typeAsArrayParameter(XPath[] extents){
+ System.out.println(extents);
+ }
+
+ /**
+ * An unresolveable reference in a java doc comment tag that is not changed.
+ *
+ * @see org.netbeans.lib.jmi.xmi.XmiContext#XmiContext(javax.xml.xpath.XPath[], org.netbeans.api.xmi.XMIInputConfig)
+ */
+ public void typeInJavaDocTag(){
+ }
+
+ @SuppressWarnings("unused")
+ public void typeInMethod(){
+ XPath path;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java
new file mode 100644
index 0000000000..d328f0dc8d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java
@@ -0,0 +1,35 @@
+package org.splevo.jamopp.diffing.tests.access;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.xpath.XPath;
+
+public class ExternalTypeAccess {
+
+ @SuppressWarnings("unused")
+ private XPath path;
+
+ public void typeAsListType() {
+ List paths = new ArrayList();
+ System.out.println(paths);
+ }
+
+ public void typeAsArrayParameter(XPath[] extents){
+ System.out.println(extents);
+ }
+
+ /**
+ * An unresolveable reference in a java doc comment tag that is not changed.
+ *
+ * @see org.netbeans.lib.jmi.xmi.XmiContext#XmiContext(javax.xml.xpath.XPath[], org.netbeans.api.xmi.XMIInputConfig)
+ */
+ public void typeInJavaDocTag(){
+ }
+
+ @SuppressWarnings("unused")
+ public void typeInMethod(){
+ XPath path;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar
new file mode 100644
index 0000000000..4712f3a9df
Binary files /dev/null and b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar differ
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java
new file mode 100644
index 0000000000..090a39047e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java
@@ -0,0 +1,26 @@
+package org.splevo.examples.calculator;
+
+import org.jscience.mathematics.number.LargeInteger;
+
+/**
+ * The calculator to perform numeric calculations.
+ * This makes use of the LargeInteger class of the
+ * JScience mathematics library (www.jscience.org)
+ */
+public class CalculatorGCD {
+
+ /**
+ * Calculate the greatest common denominator (divider) (GCD) of an integer
+ * @param value1 The first number to get the gcd.
+ * @param value2 The second number to get the gcd.
+ * @return
+ */
+ public String gcd(String value1, String value2){
+
+ LargeInteger integerValue1 = LargeInteger.valueOf(value1);
+ LargeInteger integerValue2 = LargeInteger.valueOf(value2);
+ LargeInteger gcd = integerValue1.gcd(integerValue2);
+
+ return gcd.toString();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java
new file mode 100644
index 0000000000..5263fbd725
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java
@@ -0,0 +1,26 @@
+package org.splevo.examples.calculator;
+
+import org.jscience.mathematics.number.FloatingPoint;
+
+/**
+ * Calculator to get the positive square root of
+ * a floating point number.
+ * This makes use of the FloatingPoint class of the
+ * JScience mathematics library (www.jscience.org)
+ */
+public class CalculatorSqrt {
+
+ /**
+ * Calculate the square root (sqrt) of a floating point number.
+ * @param value1 The number to get the square root for.
+ * @return The calculated square root.
+ */
+ public String sqrt(String value1){
+
+ FloatingPoint floatingPointValue = FloatingPoint.valueOf(value1);
+ FloatingPoint sqrt = floatingPointValue.sqrt();
+
+ return sqrt.toString();
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java
new file mode 100644
index 0000000000..1dd4590769
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java
@@ -0,0 +1,33 @@
+package org.splevo.examples.calculator;
+
+/**
+ * The command line tool to run the calculator.
+ */
+public class CalculatorTool {
+
+ /**
+ * Executing the calculator tool.
+ *
+ * @param args The command line args provided to the tooling.
+ */
+ public static void main(String[] args) {
+
+ if(args.length > 0 && args[0] == "sqrt"){
+ String value = "13.25";
+
+ CalculatorSqrt calculator = new CalculatorSqrt();
+ String sqrt = calculator.sqrt(value);
+
+ System.out.println(sqrt);
+
+ } else {
+ String value1 = "9876543210987654321098765432109876543210";
+ String value2 = "1234567891234567891234567891234567891234";
+
+ CalculatorGCD calculator = new CalculatorGCD();
+ String gcd = calculator.gcd(value1, value2);
+
+ System.out.println(gcd);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java
new file mode 100644
index 0000000000..89d26f042a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java
@@ -0,0 +1,24 @@
+package org.splevo.examples.calculator;
+
+import java.math.BigInteger;
+
+/**
+ * The calculator to perform numeric calculations.
+ */
+public class CalculatorGCD {
+
+ /**
+ * Calculate the greatest common denominator (divider) (GCD) of an integer
+ * @param value1 The first number to get the gcd.
+ * @param value2 The second number to get the gcd.
+ * @return
+ */
+ public String gcd(String value1, String value2){
+
+ BigInteger integerValue1 = new BigInteger(value1);
+ BigInteger integerValue2 = new BigInteger(value2);
+ BigInteger gcd = integerValue1.gcd(integerValue2);
+
+ return gcd.toString();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java
new file mode 100644
index 0000000000..d17351bb69
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java
@@ -0,0 +1,25 @@
+package org.splevo.examples.calculator;
+
+
+/**
+ * Calculator to get the positive square root of
+ * a floating point number.
+ * This makes use of the FloatingPoint class of the
+ * JScience mathematics library (www.jscience.org)
+ */
+public class CalculatorSqrt {
+
+ /**
+ * Calculate the square root (sqrt) of a floating point number.
+ * @param value1 The number to get the square root for.
+ * @return The calculated square root.
+ */
+ public String sqrt(String value1){
+
+ Double floatingPointValue = Double.valueOf(value1);
+ Double sqrt = Math.sqrt(floatingPointValue);
+
+ return sqrt.toString();
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java
new file mode 100644
index 0000000000..1dd4590769
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java
@@ -0,0 +1,33 @@
+package org.splevo.examples.calculator;
+
+/**
+ * The command line tool to run the calculator.
+ */
+public class CalculatorTool {
+
+ /**
+ * Executing the calculator tool.
+ *
+ * @param args The command line args provided to the tooling.
+ */
+ public static void main(String[] args) {
+
+ if(args.length > 0 && args[0] == "sqrt"){
+ String value = "13.25";
+
+ CalculatorSqrt calculator = new CalculatorSqrt();
+ String sqrt = calculator.sqrt(value);
+
+ System.out.println(sqrt);
+
+ } else {
+ String value1 = "9876543210987654321098765432109876543210";
+ String value2 = "1234567891234567891234567891234567891234";
+
+ CalculatorGCD calculator = new CalculatorGCD();
+ String gcd = calculator.gcd(value1, value2);
+
+ System.out.println(gcd);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java
new file mode 100644
index 0000000000..a86502c7b6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.fielddeclaration;
+
+public class EnumClass {
+
+ public enum EnumChange {
+ A,
+ B
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java
new file mode 100644
index 0000000000..8f2747cde6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Class declaration diffing test code.
+ */
+package org.splevo.tests.fielddeclaration;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java
new file mode 100644
index 0000000000..68056c9e40
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java
@@ -0,0 +1,8 @@
+package org.splevo.tests.fielddeclaration;
+
+public class AddedClassDeclaration {
+
+ public void doSth(){
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java
new file mode 100644
index 0000000000..823f32646a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java
@@ -0,0 +1,11 @@
+package org.splevo.tests.fielddeclaration;
+
+public class EnumClass {
+
+ public enum EnumChange {
+ A,
+ NEW,
+ B
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java
new file mode 100644
index 0000000000..a08c381306
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java
@@ -0,0 +1,5 @@
+package org.splevo.tests.fielddeclaration.newpackage;
+
+public class NewPackageClass {
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java
new file mode 100644
index 0000000000..d768683954
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * An added package.
+ */
+package org.splevo.tests.fielddeclaration.newpackage;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java
new file mode 100644
index 0000000000..fd38724614
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java
@@ -0,0 +1,5 @@
+package org.splevo.tests.fielddeclaration.newpackage.sub;
+
+public class NewSubPackageClass {
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java
new file mode 100644
index 0000000000..d47e026405
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * An added sub package.
+ */
+package org.splevo.tests.fielddeclaration.newpackage.sub;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java
new file mode 100644
index 0000000000..8f2747cde6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Class declaration diffing test code.
+ */
+package org.splevo.tests.fielddeclaration;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..f03e0fa57b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java
@@ -0,0 +1,5 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..f03e0fa57b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java
@@ -0,0 +1,5 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java
new file mode 100644
index 0000000000..68456e0445
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java
@@ -0,0 +1,4 @@
+package de.splevo.test;
+
+public class BaseClassCustom extends BaseClass {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..b69c4d358f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java
@@ -0,0 +1,8 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public BaseClass() {
+ return;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..b69c4d358f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java
@@ -0,0 +1,8 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public BaseClass() {
+ return;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java
new file mode 100644
index 0000000000..68456e0445
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java
@@ -0,0 +1,4 @@
+package de.splevo.test;
+
+public class BaseClassCustom extends BaseClass {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..054224d33b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java
@@ -0,0 +1,12 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public int field;
+
+ private int oldField;
+
+ public void doSth(){}
+
+ public void hookMethod(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..054224d33b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java
@@ -0,0 +1,12 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public int field;
+
+ private int oldField;
+
+ public void doSth(){}
+
+ public void hookMethod(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java
new file mode 100644
index 0000000000..1357771355
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java
@@ -0,0 +1,8 @@
+package de.splevo.test;
+
+public class BaseClassCustom extends BaseClass {
+
+ public int newField;
+
+ public void hookMethod(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..e7f5a2af71
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java
@@ -0,0 +1,7 @@
+package de.splevo.test;
+
+import java.lang.Math;
+import java.util.List;
+
+public class BaseClass {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..e7f5a2af71
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java
@@ -0,0 +1,7 @@
+package de.splevo.test;
+
+import java.lang.Math;
+import java.util.List;
+
+public class BaseClass {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java
new file mode 100644
index 0000000000..68456e0445
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java
@@ -0,0 +1,4 @@
+package de.splevo.test;
+
+public class BaseClassCustom extends BaseClass {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..cb05bfc24c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java
@@ -0,0 +1,10 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public void doPublic(){}
+
+ private void doPrivate(){}
+
+ public void hookMethod(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java
new file mode 100644
index 0000000000..cb05bfc24c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java
@@ -0,0 +1,10 @@
+package de.splevo.test;
+
+public class BaseClass {
+
+ public void doPublic(){}
+
+ private void doPrivate(){}
+
+ public void hookMethod(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java
new file mode 100644
index 0000000000..02fd69c4b3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java
@@ -0,0 +1,8 @@
+package de.splevo.test;
+
+public class BaseClassCustom extends BaseClass {
+
+ public void hookMethod(){
+ System.out.println("Hello World");
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java
new file mode 100644
index 0000000000..180121b1b5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.fielddeclaration;
+
+public class ArrayFieldDeclarationChange {
+
+ public Object[] newValueArray = new Object[]{
+ "value1",
+ "value2"
+ };
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java
new file mode 100644
index 0000000000..4ac5adbffd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java
@@ -0,0 +1,13 @@
+package org.splevo.tests.fielddeclaration;
+
+/**
+ * Class with new field declaration surrounded by two unchanged ones.
+ */
+public class NewInTheMiddle {
+
+ /** Field not to change. */
+ private String similar1 = "similar1";
+
+ /** Field not to change. */
+ private String similar2 = "similar2";
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java
new file mode 100644
index 0000000000..13fe986bc5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.fielddeclaration;
+
+/**
+ * Class with new field declaration surrounded by two unchanged ones.
+ */
+public class RemovedFromTheMiddle {
+
+ /** Field not to change. */
+ private String similar1 = "similar1";
+
+ /** Remove Field. */
+ private String removeField = "removeField";
+
+ /** Field not to change. */
+ private String similar2 = "similar2";
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java
new file mode 100644
index 0000000000..260453996a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java
@@ -0,0 +1,11 @@
+package org.splevo.tests.fielddeclaration;
+
+public class ArrayFieldDeclarationChange {
+
+ public Object[] newValueArray = new Object[]{
+ "value1",
+ "valueInTheMiddle",
+ "value2"
+ };
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java
new file mode 100644
index 0000000000..87fa764f56
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.fielddeclaration;
+
+/**
+ * Class with new field declaration surrounded by two unchanged ones.
+ */
+public class NewInTheMiddle {
+
+ /** Field not to change. */
+ private String similar1 = "similar1";
+
+ /** New Field. */
+ private String newField = "newField";
+
+ /** Field not to change. */
+ private String similar2 = "similar2";
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java
new file mode 100644
index 0000000000..72e437a2c5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java
@@ -0,0 +1,13 @@
+package org.splevo.tests.fielddeclaration;
+
+/**
+ * Class with new field declaration surrounded by two unchanged ones.
+ */
+public class RemovedFromTheMiddle {
+
+ /** Field not to change. */
+ private String similar1 = "similar1";
+
+ /** Field not to change. */
+ private String similar2 = "similar2";
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java
new file mode 100644
index 0000000000..38cb4bfd2e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.importdeclaration;
+
+import java.math.BigInteger;
+
+public class ImportDiffing {
+
+ public void helloWorld(){
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java
new file mode 100644
index 0000000000..677c700523
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.importdeclaration;
+
+import java.math.BigDecimal;
+
+public class ImportDiffing {
+
+ public void helloWorld(){
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java
new file mode 100644
index 0000000000..0d41902a1b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitClassDiagram {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java
new file mode 100644
index 0000000000..dda43b6e56
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitUmlUI {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java
new file mode 100644
index 0000000000..52b488c543
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitUseCaseDiagram {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java
new file mode 100644
index 0000000000..acf804dd74
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java
@@ -0,0 +1,5 @@
+package org.splevo.test;
+
+public class SubsystemUtility {
+ public static void initSubsystem(Object targetObject){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java
new file mode 100644
index 0000000000..b7f0f8271f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java
@@ -0,0 +1,11 @@
+package org.splevo.test;
+
+public class TestClass {
+ private static void initializeSubsystems() {
+
+ SubsystemUtility.initSubsystem(new InitClassDiagram());
+
+ SubsystemUtility.initSubsystem(new InitUmlUI());
+
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java
new file mode 100644
index 0000000000..0d41902a1b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitClassDiagram {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java
new file mode 100644
index 0000000000..dda43b6e56
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitUmlUI {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java
new file mode 100644
index 0000000000..52b488c543
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java
@@ -0,0 +1,4 @@
+package org.splevo.test;
+
+public class InitUseCaseDiagram {
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java
new file mode 100644
index 0000000000..acf804dd74
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java
@@ -0,0 +1,5 @@
+package org.splevo.test;
+
+public class SubsystemUtility {
+ public static void initSubsystem(Object targetObject){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java
new file mode 100644
index 0000000000..7900416ca6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java
@@ -0,0 +1,14 @@
+package org.splevo.test;
+
+public class TestClass {
+ private static void initializeSubsystems() {
+
+ SubsystemUtility.initSubsystem(new InitClassDiagram());
+
+ //@#$LPS-USECASEDIAGRAM:GranularityType:Statement
+ SubsystemUtility.initSubsystem(new InitUseCaseDiagram());
+
+ SubsystemUtility.initSubsystem(new InitUmlUI());
+
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java
new file mode 100644
index 0000000000..12ed02ab53
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java
@@ -0,0 +1,24 @@
+package org.splevo.tests.methoddeclaration;
+
+
+public class ClassA {
+
+
+ /**
+ * Method to check the matching of an invocation of
+ * an anonymous' class method.
+ */
+ public void anonymousClassMethodInvocation(){
+
+ Comparable comp = new Comparable() {
+ @Override
+ public int compareTo(String arg0) {
+ return 0;
+ }
+ };
+
+ comp.compareTo("Hello");
+
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java
new file mode 100644
index 0000000000..3f88e2622a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.methoddeclaration;
+
+
+public class Constructor {
+
+ public Constructor(){
+
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java
new file mode 100644
index 0000000000..f704ea3de6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java
@@ -0,0 +1,26 @@
+package org.splevo.tests.methoddeclaration;
+
+public class ClassA {
+
+ public void newMethod(){
+ System.out.println("a");
+ }
+
+ /**
+ * Method to check the matching of an invocation of
+ * an anonymous' class method.
+ */
+ public void anonymousClassMethodInvocation(){
+
+ Comparable comp = new Comparable() {
+ @Override
+ public int compareTo(String arg0) {
+ return 0;
+ }
+ };
+
+ comp.compareTo("Hello");
+
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java
new file mode 100644
index 0000000000..0a5b27e597
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.methoddeclaration;
+
+
+public class Constructor {
+
+ public Constructor(String newParam){
+
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java
new file mode 100644
index 0000000000..edfd5fcd8c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java
@@ -0,0 +1,12 @@
+package org.splevo.tests.importdeclaration;
+
+public class Primitives {
+
+ public void doVoid() {
+ int a = 1;
+ }
+
+ public int doNumeric() {
+ return 1;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java
new file mode 100644
index 0000000000..02c8e01e96
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java
@@ -0,0 +1,12 @@
+package org.splevo.tests.importdeclaration;
+
+public class Primitives {
+
+ public void doVoid() {
+ double a = 1;
+ }
+
+ public double doNumeric() {
+ return 1;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java
new file mode 100644
index 0000000000..42502b938b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java
@@ -0,0 +1,3 @@
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java
new file mode 100644
index 0000000000..8a1d741683
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java
@@ -0,0 +1,11 @@
+package de.splevo.test;
+
+/**
+ * Testcode to test mapping configurations.
+ */
+public class Test {
+
+ public void doSth(){
+
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java
new file mode 100644
index 0000000000..42502b938b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java
@@ -0,0 +1,3 @@
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java
new file mode 100644
index 0000000000..11c7e8359c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java
@@ -0,0 +1,11 @@
+package de.splevo.cust.test;
+
+/**
+ * Testcode to test mapping configurations.
+ */
+public class Test {
+
+ public void doSth(){
+
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java
new file mode 100644
index 0000000000..d45c39ba5f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java
@@ -0,0 +1,5 @@
+package org.splevo.test;
+
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java
new file mode 100644
index 0000000000..3c003474b4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java
@@ -0,0 +1,5 @@
+package org.splevo.test.sub;
+
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java
new file mode 100644
index 0000000000..d45c39ba5f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java
@@ -0,0 +1,5 @@
+package org.splevo.test;
+
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java
new file mode 100644
index 0000000000..3c003474b4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java
@@ -0,0 +1,5 @@
+package org.splevo.test.sub;
+
+public DummyClass {
+ public void doSth(){}
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java
new file mode 100644
index 0000000000..ae0c1ae46b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java
@@ -0,0 +1,19 @@
+package org.splevo.tests.statements;
+
+public class ArrayAccesses {
+
+ public static void main(String[] args) {
+
+ @SuppressWarnings("unused")
+ String projectName;
+ for(int i = 0; i < args.length; i++){
+ if (args[i].equalsIgnoreCase("-print")
+ && i + 1 < args.length) {
+ projectName = args[++i];
+ }
+ }
+
+ Object[] elements = new Object[args.length][2];
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java
new file mode 100644
index 0000000000..78ceb822e6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java
@@ -0,0 +1,13 @@
+package org.splevo.tests.statements;
+
+public class ClassArrayItemAccess {
+
+ public void newStatement(){
+
+ String[] = new String[4];
+
+ String[0] = new String("0");
+ String[1] = new String("1");
+ String[2] = new String("2");
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java
new file mode 100644
index 0000000000..74170de443
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java
@@ -0,0 +1,11 @@
+package a;
+
+public class Loop {
+
+ public void print() {
+ Object[] cache;
+ for (int i = 0; cache[i] != null; i++) {
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java
new file mode 100644
index 0000000000..fcd23e703e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java
@@ -0,0 +1,20 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ChangeInsideSiblingBlock {
+
+ protected void doSth() {
+
+ if(true) {
+ 1 + 1;
+
+ if(true) {
+ 3 + 3;
+ }
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java
new file mode 100644
index 0000000000..0979786e4a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java
@@ -0,0 +1,29 @@
+package org.splevo.tests.statements;
+
+public class ClassStatementInsert {
+
+ public void newStatement(){
+
+ System.out.println(new Integer(0));
+
+
+
+ System.out.println(new Double(0));
+
+ Boolean f = null;
+ f = super.equals(new Object());
+
+ int i = 0;
+ int j = Integer.valueOf("0") + (i++);
+ }
+
+ public void statementOrder(){
+
+ int x, y;
+
+ x = 3;
+ x = 5;
+ y = 10;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java
new file mode 100644
index 0000000000..ad3e7ccf84
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java
@@ -0,0 +1,18 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchAndExpression {
+
+ public String doSth(String[] a) {
+
+ if (a.length() > 0 && true) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java
new file mode 100644
index 0000000000..31eba93ed2
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java
@@ -0,0 +1,15 @@
+package org.splevo.tests.statements;
+
+public class ConditionMatchInstanceOfExpression {
+
+ public String doSth(Object a) {
+
+ if(a instanceof Integer) {
+ return "existing instanceof";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java
new file mode 100644
index 0000000000..d95c52bb4a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java
@@ -0,0 +1,18 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchOrExpression {
+
+ public String doSth(String[] a) {
+
+ if (a.length() > 0 || true) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java
new file mode 100644
index 0000000000..e4a95861f9
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java
@@ -0,0 +1,18 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchRelationExpression {
+
+ public String doSth(String[] a) {
+
+ if (a.length() > 0) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java
new file mode 100644
index 0000000000..6b8271a9d0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java
@@ -0,0 +1,18 @@
+package org.splevo.tests.statements;
+
+import java.util.List;
+
+public class ConditionMatchUnaryExpression {
+
+ public String doSth(List a) {
+
+ if(!(String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next())
+ && a.size() == ("test".length() + 1))) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java
new file mode 100644
index 0000000000..ab3b92c2dc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.statements;
+
+public class EnumAccesses {
+
+ public void doSth() {
+ Container.TestEnum var = Container.TestEnum.EnumItem1;
+ }
+}
+
+class Container {
+
+ public enum TestEnum {
+ EnumItem1,
+ EnumItem2
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java
new file mode 100644
index 0000000000..afee1595fc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java
@@ -0,0 +1,12 @@
+package org.splevo.tests.statements;
+
+public class ConditionalVariable {
+
+ protected void doSth(Collection c) {
+ for (Iterator i = c.iterator(); i.hasNext(); ) {
+ Object o = i.next();
+ System.out.println(o);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java
new file mode 100644
index 0000000000..507fda681e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java
@@ -0,0 +1,19 @@
+package org.splevo.tests.statements;
+
+public class IfElseMultipleStatements {
+
+ public int elseIf(int a) {
+ if (a == 0) {
+ return 0 + 0;
+
+ } else if (a == 1) {
+ return 1 + 1;
+
+ } else if (a == 2) {
+ return 2 + 2;
+
+ } else if (a == 3) {
+ return 3 + 3;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java
new file mode 100644
index 0000000000..c443851838
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java
@@ -0,0 +1,13 @@
+package org.splevo.tests.statements;
+
+public class IfElseStatements {
+
+ public void elseIf(int a) {
+ if (a == 1) {
+ 1 + 1;
+
+ } else if (a == 2) {
+ 2 + 2;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java
new file mode 100644
index 0000000000..b44eb2d39b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java
@@ -0,0 +1,10 @@
+package org.splevo.tests.statements;
+
+public class IfIfStatements {
+
+ public void ifIf() {
+ if (toString().equals("a")) {
+ 2 + 2;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java
new file mode 100644
index 0000000000..01931188db
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java
@@ -0,0 +1,66 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class IfStatements {
+
+ public void newIfStatementTest(String a) {
+
+ if (a.length() > 1) {
+ System.out.println();
+ }
+ }
+
+ public void changedConditionIfStatementTest(String a) {
+
+ if ("value1" == null) {
+ return;
+ }
+
+ if ("valueA" == null) {
+ return;
+ }
+ }
+
+ public void unChangedConditionIfStatementTest(String a) {
+
+ if (true && (toString() instanceof Object)) {
+ return;
+ }
+
+ for (int i = 0; i < a.toCharArray().length; i++) {
+ System.out.println(i);
+ }
+
+ boolean result = true;
+ if (!result) {
+ System.out.println(result);
+ }
+
+ int pos = 1;
+ if (pos == -1) {
+ return;
+ }
+
+ if (new Object() == this) {
+ return;
+ }
+
+ if (new Object() == String.class) {
+
+ }
+
+ LinkedList umlPredecessors = new LinkedList();
+ Iterator it;
+ it = (umlPredecessors != null) ? umlPredecessors.iterator() : null;
+ }
+
+ public void elseIf(int a) {
+ if (a == 1) {
+ System.out.println("1");
+ } else if (a == 2) {
+ System.out.println("2");
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java
new file mode 100644
index 0000000000..1f78fab814
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java
@@ -0,0 +1,55 @@
+package org.splevo.tests.statements;
+
+import java.util.ArrayList;
+
+public class LoopStatements {
+
+ public LoopStatements() {
+ }
+
+ public void ForUnchanged(){
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+
+ public void ForChanged(){
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+
+ public void EnhancedForUnchanged(){
+
+ ArrayList items = new ArrayList();
+ for (String item : items) {
+ System.out.println(item);
+ }
+ }
+
+ public void EnhancedForChanged(){
+
+ ArrayList items = new ArrayList();
+ ArrayList items2 = new ArrayList();
+ for (String item : items) {
+ System.out.println(item);
+ }
+ }
+
+ public void WhileUnchanged(int a){
+
+ while(a < 10){
+ System.out.println("endlessLoop");
+ }
+ }
+
+ public void WhileChanged(int a){
+
+ while(a < 10){
+ System.out.println("endlessLoop");
+ }
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java
new file mode 100644
index 0000000000..59645626f5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+public class ReturnStatementChanges {
+
+ public void doSth(String a){
+
+ return;
+ }
+
+ public void noReturn(){
+
+ }
+
+ public String returnWithExpression(){
+ return "Hello";
+ }
+
+ public String returnWithExpressionEqual(){
+ return "Good Morning";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java
new file mode 100644
index 0000000000..187cfc6f7e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.statements;
+
+public class StaticInitialization {
+
+ public static final String ID1 = "ID1";
+
+ static{
+
+ putDefaultShortcut(ID1, null, new String());
+
+ }
+
+ private static void putDefaultShortcut(String id, Object defaultValue, Object action){
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java
new file mode 100644
index 0000000000..2d5872b1eb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java
@@ -0,0 +1,14 @@
+package org.splevo.tests.statements;
+
+public class Synchronized {
+
+ private Object synchronizationObject = new Byte[0];
+
+ public void synchronizeOnField() {
+
+
+ synchronized (synchronizationObject) {
+ return "synchronizeOnField";
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java
new file mode 100644
index 0000000000..f442487481
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java
@@ -0,0 +1,28 @@
+package org.splevo.tests.statements;
+
+/**
+ * Class with methods containing different throw variations.
+ */
+public class ThrowStatements {
+
+ public static void similarThrow(){
+ throw new IllegalArgumentException();
+ }
+
+ public static void similarThrowWithParameter(){
+ throw new IllegalArgumentException("Error");
+ }
+
+ public static void changedThrow(){
+ throw new IllegalArgumentException();
+ }
+
+ public static void changedThrowWithParameter(){
+ throw new IllegalArgumentException("Error");
+ }
+
+ public static void throwWithChangedParameter(){
+ throw new IllegalArgumentException("Error");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java
new file mode 100644
index 0000000000..79796dfb58
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java
@@ -0,0 +1,23 @@
+package org.splevo.tests.statements;
+
+public class TryCatch {
+
+ public String similarTryCatch(){
+ try{
+ return "hello";
+ } catch (RuntimeException e){
+ return "e";
+ } catch (Exception iea){
+ return "iea";
+ }
+ }
+
+ public String changedTryCatch(){
+ try{
+ return "hello";
+ } catch (Exception iea){
+ return "iea";
+ }
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java
new file mode 100644
index 0000000000..9a531bc59b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java
@@ -0,0 +1,9 @@
+package org.splevo.tests.statements;
+
+public class VariableDeclarationStatements {
+
+ public void doSth(){
+ String var1, var2 = "Hello";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java
new file mode 100644
index 0000000000..46d4c2b1bf
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java
@@ -0,0 +1,20 @@
+package org.splevo.tests.statements;
+
+public class ArrayAccesses {
+
+ public static void main(String[] args) {
+
+ @SuppressWarnings("unused")
+ String projectName;
+ for(int i = 0; i < args.length; i++){
+ if (args[i].equalsIgnoreCase("-print")
+ && i + 1 < args.length) {
+ projectName = args[++i];
+ }
+ }
+
+ Object[] elements = new Object[args.length][2];
+
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java
new file mode 100644
index 0000000000..9008e333dd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java
@@ -0,0 +1,14 @@
+package org.splevo.tests.statements;
+
+public class ClassArrayItemAccess {
+
+ public void newStatement(){
+
+ String[] = new String[4];
+
+ String[0] = new String("0");
+ String[1] = new String("1");
+ String[3] = new String("3");
+ String[2] = new String("2");
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java
new file mode 100644
index 0000000000..7a3c91d18f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java
@@ -0,0 +1,11 @@
+package a;
+
+public class Loop {
+
+ public void print() {
+ Object[] cache;
+ for (int i = 0; cache[i] != null; i++) {
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java
new file mode 100644
index 0000000000..6f3eab0d12
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ChangeInsideSiblingBlock {
+
+ protected void doSth() {
+
+ if(true) {
+ 1 + 1;
+ 2 + 2; // added
+
+ if(true) {
+ 3 + 3;
+ 4 + 4; // added
+ }
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java
new file mode 100644
index 0000000000..e69edf7fb4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java
@@ -0,0 +1,29 @@
+package org.splevo.tests.statements;
+
+public class ClassStatementInsert {
+
+ public void newStatement(){
+
+ System.out.println(new Integer(0));
+
+ System.out.println(new String());
+
+ System.out.println(new Double(0));
+
+ Boolean f = null;
+ f = super.equals(new Object());
+
+ int i = 0;
+ int j = Integer.valueOf("0") + (i++);
+ }
+
+ public void statementOrder(){
+
+ int x, y;
+
+ y = 10;
+ x = 5;
+ x = 3;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java
new file mode 100644
index 0000000000..173ecbccfd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchAndExpression {
+
+ public String doSth(String[] a) {
+
+ if(true && a.length() > 0) {
+ return "new conditional";
+ }
+
+ if (a.length() > 0 && true) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java
new file mode 100644
index 0000000000..7b6a6dee98
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java
@@ -0,0 +1,19 @@
+package org.splevo.tests.statements;
+
+public class ConditionMatchInstanceOfExpression {
+
+ public String doSth(Object a) {
+
+ if(a instanceof String) {
+ return "new instanceof conditional";
+ }
+
+ if(a instanceof Integer) {
+ return "existing instanceof";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java
new file mode 100644
index 0000000000..37bd143c9c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchOrExpression {
+
+ public String doSth(String[] a) {
+
+ if(true || a.length() > 0) {
+ return "new conditional";
+ }
+
+ if (a.length() > 0 || true) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java
new file mode 100644
index 0000000000..938bb77d03
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class ConditionMatchRelationExpression {
+
+ public String doSth(String[] a) {
+
+ if(getClass().getName().length() + a.length > 0) {
+ return "new conditional";
+ }
+
+ if (a.length() > 0) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java
new file mode 100644
index 0000000000..8d9a2152bd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+import java.util.List;
+
+public class ConditionMatchUnaryExpression {
+
+ public String doSth(List a) {
+
+ if(!String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next())) {
+ return "new unary conditional";
+ }
+
+ if(!(String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next())
+ && a.size() == ("test".length() + 1))) {
+ return "existing conditional";
+ }
+
+ for (int i = 0; i < 10 && i >= 0; i++) {
+ System.out.println(""+i);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java
new file mode 100644
index 0000000000..ab3b92c2dc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.statements;
+
+public class EnumAccesses {
+
+ public void doSth() {
+ Container.TestEnum var = Container.TestEnum.EnumItem1;
+ }
+}
+
+class Container {
+
+ public enum TestEnum {
+ EnumItem1,
+ EnumItem2
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java
new file mode 100644
index 0000000000..afee1595fc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java
@@ -0,0 +1,12 @@
+package org.splevo.tests.statements;
+
+public class ConditionalVariable {
+
+ protected void doSth(Collection c) {
+ for (Iterator i = c.iterator(); i.hasNext(); ) {
+ Object o = i.next();
+ System.out.println(o);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java
new file mode 100644
index 0000000000..ec6e025c03
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java
@@ -0,0 +1,22 @@
+package org.splevo.tests.statements;
+
+public class IfElseMultipleStatements {
+
+ public int elseIf(int a) {
+ if (a == 0) {
+ return 0 + 0;
+
+ } else if (a == 1) {
+ return 1 + 1;
+
+ } else if (a == 54) {
+ return 54 + 54;
+
+ } else if (a == 2) {
+ return 2 + 2;
+
+ } else if (a == 3) {
+ return 3 + 3;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java
new file mode 100644
index 0000000000..8d0b508fae
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.statements;
+
+public class IfElseStatements {
+
+ public void elseIf(int a) {
+ if (a == 1) {
+ 1 + 1;
+
+ } else if (a == 54) {
+ 54 + 54;
+
+ } else if (a == 2) {
+ 2 + 2;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java
new file mode 100644
index 0000000000..fd5acb4baf
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java
@@ -0,0 +1,13 @@
+package org.splevo.tests.statements;
+
+public class IfIfStatements {
+
+ public void ifIf() {
+ if (toString().equals("b")) {
+ 1 + 1;
+ }
+ if (toString().equals("a")) {
+ 2 + 2;
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java
new file mode 100644
index 0000000000..fa7c42bdf4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java
@@ -0,0 +1,64 @@
+package org.splevo.tests.statements;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class IfStatements {
+
+ public void newIfStatementTest(String a) {
+
+ // new if statement before
+ if (a == null) {
+ return;
+ }
+
+ if (a.length() > 1) {
+ System.out.println();
+ }
+ }
+
+ public void changedConditionIfStatementTest(String a) {
+
+ if ("value1" == null) {
+ return;
+ }
+
+ if ("valueB" == null) {
+ return;
+ }
+ }
+
+ public void unChangedConditionIfStatementTest(String a) {
+
+ if (true && (toString() instanceof Object)) {
+ return;
+ }
+
+ for (int i = 0; i < a.toCharArray().length; i++) {
+ System.out.println(i);
+ }
+
+ boolean result = true;
+ if (!result) {
+ System.out.println(result);
+ }
+
+ int pos = 1;
+ if (pos == -1) {
+ return;
+ }
+
+ if (new Object() == this) {
+ return;
+ }
+
+ if (new Object() == String.class) {
+
+ }
+
+ LinkedList umlPredecessors = new LinkedList();
+ Iterator it;
+ it = (umlPredecessors != null) ? umlPredecessors.iterator() : null;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java
new file mode 100644
index 0000000000..e53d22c384
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java
@@ -0,0 +1,55 @@
+package org.splevo.tests.statements;
+
+import java.util.ArrayList;
+
+public class LoopStatements {
+
+ public LoopStatements() {
+ }
+
+ public void ForUnchanged(){
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+
+ public void ForChanged(){
+
+ for (int i = 5; i < 10; i++) {
+ System.out.println(""+i);
+ }
+ }
+
+ public void EnhancedForUnchanged(){
+
+ ArrayList items = new ArrayList();
+ for (String item : items) {
+ System.out.println(item);
+ }
+ }
+
+ public void EnhancedForChanged(){
+
+ ArrayList items = new ArrayList();
+ ArrayList items2 = new ArrayList();
+ for (String item : items2) {
+ System.out.println(item);
+ }
+ }
+
+ public void WhileUnchanged(int a){
+
+ while(a < 10){
+ System.out.println("endlessLoop");
+ }
+ }
+
+ public void WhileChanged(int a){
+
+ while(a < 10 && a > 5){
+ System.out.println("endlessLoop");
+ }
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java
new file mode 100644
index 0000000000..27dcea25fa
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java
@@ -0,0 +1,26 @@
+package org.splevo.tests.statements;
+
+public class ReturnStatementChanges {
+
+ public void doSth(String a){
+
+ if(a == null){
+ return;
+ }
+
+ return;
+ }
+
+ public void noReturn(){
+ return;
+ }
+
+ public String returnWithExpression(){
+ return "Good Bye";
+ }
+
+ public String returnWithExpressionEqual(){
+ return "Good Morning";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java
new file mode 100644
index 0000000000..76578a3baa
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java
@@ -0,0 +1,21 @@
+package org.splevo.tests.statements;
+
+public class StaticInitialization {
+
+ public static final String ID0 = "ID0";
+
+ public static final String ID1 = "ID1";
+
+
+ static{
+
+ putDefaultShortcut(ID2, null, new String());
+
+ putDefaultShortcut(ID1, null, new String());
+
+ }
+
+ private static void putDefaultShortcut(String id, Object defaultValue, Object action){
+
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java
new file mode 100644
index 0000000000..2bd0e11bd8
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java
@@ -0,0 +1,16 @@
+package org.splevo.tests.statements;
+
+public class Synchronized {
+
+ private Object synchronizationObject = new Byte[0];
+
+ public void synchronizeOnField() {
+
+
+ System.out.println("dummy change");
+
+ synchronized (synchronizationObject) {
+ return "synchronizeOnField";
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java
new file mode 100644
index 0000000000..edc5504924
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java
@@ -0,0 +1,28 @@
+package org.splevo.tests.statements;
+
+/**
+ * Class with methods containing different throw variations.
+ */
+public class ThrowStatements {
+
+ public static void similarThrow(){
+ throw new IllegalArgumentException();
+ }
+
+ public static void similarThrowWithParameter(){
+ throw new IllegalArgumentException("Error");
+ }
+
+ public static void changedThrow(){
+ throw new RuntimeException();
+ }
+
+ public static void changedThrowWithParameter(){
+ throw new RuntimeException("Error");
+ }
+
+ public static void throwWithChangedParameter(){
+ throw new IllegalArgumentException("Another Error");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java
new file mode 100644
index 0000000000..e4a1a03e32
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java
@@ -0,0 +1,23 @@
+package org.splevo.tests.statements;
+
+public class TryCatch {
+
+ public String similarTryCatch(){
+ try{
+ return "hello";
+ } catch (RuntimeException e){
+ return "e";
+ } catch (Exception iea){
+ return "iea";
+ }
+ }
+
+ public String changedTryCatch(){
+ try{
+ return "hello";
+ } catch (RuntimeException e){
+ return "e";
+ }
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java
new file mode 100644
index 0000000000..905b9355a3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java
@@ -0,0 +1,9 @@
+package org.splevo.tests.statements;
+
+public class VariableDeclarationStatements {
+
+ public void doSth(){
+ String var1, var3 = "Hello";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java
new file mode 100644
index 0000000000..0c0e747850
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java
@@ -0,0 +1,11 @@
+package org.splevo.tests.variabledeclaration;
+
+import java.math.BigInteger;
+
+public class A {
+
+ public void methodA() {
+ BigInteger integerValue1 = new BigInteger("1");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java
new file mode 100644
index 0000000000..dc10e4a777
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java
@@ -0,0 +1,9 @@
+package org.splevo.tests;
+
+public class MultipleVariables {
+
+ public void methodA() {
+ String varA = new String("1");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java
new file mode 100644
index 0000000000..0607e7ab3a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java
@@ -0,0 +1,27 @@
+package org.splevo.tests.variabledeclaration;
+
+public class StringInitialization {
+
+ private static final String EXPORTER_NAME = "Test Exporter";
+ private static final String EXPORTER_VERSION = "1.4";
+ private static final String UML_VERSION = "1.4";
+
+ private String version = "1";
+
+ public void doSth() {
+ String header =
+ " \n"
+ + " ArgoUML"
+ + " (using " + EXPORTER_NAME
+ + " version " + EXPORTER_VERSION
+ + ")\n"
+ + " " + version
+ + " revised on "
+ + "$Date: 2010-09-26 00:23:13 +0200 (Sun, 26 Sep 2010) $ "
+ + "\n"
+ + " \n"
+ + " ";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java
new file mode 100644
index 0000000000..7c5bf63ed6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java
@@ -0,0 +1,11 @@
+package org.splevo.tests.variabledeclaration;
+
+import java.math.BigDecimal;
+
+public class A {
+
+ public void methodA() {
+ BigDecimal integerValue1 = new BigDecimal("1");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java
new file mode 100644
index 0000000000..7ee41b1781
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java
@@ -0,0 +1,10 @@
+package org.splevo.tests;
+
+public class MultipleVariables {
+
+ public void methodA() {
+ String newVarA = new String("0");
+ String varA = new String("1");
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java
new file mode 100644
index 0000000000..0607e7ab3a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java
@@ -0,0 +1,27 @@
+package org.splevo.tests.variabledeclaration;
+
+public class StringInitialization {
+
+ private static final String EXPORTER_NAME = "Test Exporter";
+ private static final String EXPORTER_VERSION = "1.4";
+ private static final String UML_VERSION = "1.4";
+
+ private String version = "1";
+
+ public void doSth() {
+ String header =
+ " \n"
+ + " ArgoUML"
+ + " (using " + EXPORTER_NAME
+ + " version " + EXPORTER_VERSION
+ + ")\n"
+ + " " + version
+ + " revised on "
+ + "$Date: 2010-09-26 00:23:13 +0200 (Sun, 26 Sep 2010) $ "
+ + "\n"
+ + " \n"
+ + " ";
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java
new file mode 100644
index 0000000000..93f9781b9d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java
@@ -0,0 +1,212 @@
+package cipm.consistency.fitests.similarity;
+
+import java.util.Collection;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
+
+/**
+ * An abstract class for similarity checking tests to extend.
+ *
+ * Contains methods that provide information on the next test method to be run
+ * and various delegation methods that spare call chains.
+ *
+ * @author Alp Torac Genc
+ */
+public abstract class AbstractSimilarityTest {
+ /**
+ * @see {@link #getSCC()}
+ */
+ private ISimilarityCheckerContainer scc;
+ /**
+ * @see {@link #getCurrentTestInfo()}
+ */
+ private TestInfo currentTestInfo;
+
+ /**
+ * Sets up the necessary variables before tests are run. The {@link TestInfo}
+ * parameter is included, so that test-specific set up can be performed.
+ *
+ * It is suggested to have a call to {@code super.setUp()} as the FIRST
+ * statement in overriding implementations. Doing so circumvents potential
+ * errors caused by the order of set up operations.
+ *
+ * @param info An object that contains information about the current test to be
+ * run (ex: the test method instance, test class, ...)
+ */
+ @BeforeEach
+ public void setUp(TestInfo info) {
+ this.setTestInfo(info);
+
+ this.setUpLogger();
+
+ this.setSCC(this.initSCC());
+ }
+
+ /**
+ * Cleans up the variables set up with {@link #setUp(TestInfo)} and performs
+ * other necessary clean up operations.
+ *
+ * It is suggested to have a call to {@code super.tearDown()} as the LAST
+ * statement in overriding implementations. Doing so circumvents potential
+ * errors caused by the order of clean up operations.
+ */
+ @AfterEach
+ public void tearDown() {
+ this.cleanUpSCC();
+ this.cleanUpTestInfo();
+ }
+
+ /**
+ * Sets the {@link TestInfo} belonging to the currently running test method to
+ * null. Used by {@link #tearDown()}, in order to make sure that the underlying
+ * {@link TestInfo} does not get carried over.
+ */
+ protected void cleanUpTestInfo() {
+ this.currentTestInfo = null;
+ }
+
+ /**
+ * Sets the information object belonging to the currently running test method.
+ */
+ protected void setTestInfo(TestInfo info) {
+ this.currentTestInfo = info;
+ }
+
+ /**
+ * Provides the implementors access to the underlying
+ * {@link ISimilarityCheckerContainer} (SCC).
+ *
+ * @return The {@link ISimilarityCheckerContainer} (SCC) that will be used to
+ * store the similarity checker under test.
+ */
+ protected ISimilarityCheckerContainer getSCC() {
+ return this.scc;
+ }
+
+ /**
+ * Sets the used {@link ISimilarityCheckerContainer} to null. Used by
+ * {@link #tearDown()}, in order to ensure that each test method starts with a
+ * fresh {@link ISimilarityCheckerContainer}.
+ */
+ protected void cleanUpSCC() {
+ this.scc = null;
+ }
+
+ /**
+ * @return An object that contains information on the currently running test.
+ */
+ protected TestInfo getCurrentTestInfo() {
+ return this.currentTestInfo;
+ }
+
+ /**
+ * @param info An object that contains information on a test.
+ *
+ * @return The name of the test method, to whom the info parameter belongs.
+ * Returns an empty String, if info is null or info does not contain a
+ * test method.
+ */
+ private String getCurrentTestMethodName(TestInfo info) {
+ if (info != null) {
+ var met = info.getTestMethod().orElseGet(() -> null);
+
+ if (met != null) {
+ return met.getName();
+ }
+ }
+
+ return "";
+ }
+
+ /**
+ * @return The logger of the current test class.
+ */
+ protected Logger getLogger() {
+ return Logger.getLogger("cipm." + this.getClass().getSimpleName());
+ }
+
+ /**
+ * Prepares loggers.
+ *
+ * Enabling too many loggers (without limiting the console size) can cause
+ * Java memory issues.
+ */
+ protected void setUpLogger() {
+ Logger logger = Logger.getLogger("cipm");
+ logger.setLevel(Level.ALL);
+
+ // Enable to receive log messages from similarity switches
+ // logger = Logger.getLogger("javaswitch");
+ // logger.setLevel(Level.ALL);
+
+ // logger = Logger.getLogger("jamopp");
+ // logger.setLevel(Level.ALL);
+ logger = Logger.getRootLogger();
+ logger.removeAllAppenders();
+ ConsoleAppender ap = new ConsoleAppender(new PatternLayout("[%d{DATE}] %-5p: %c - %m%n"),
+ ConsoleAppender.SYSTEM_OUT);
+ logger.addAppender(ap);
+ }
+
+ /**
+ * Creates the concrete {@link ISimilarityCheckerContainer} that will be used to
+ * store the similarity checker under test.
+ *
+ * If necessary, it can be overridden in tests to change the said similarity
+ * checker during set up.
+ */
+ protected abstract ISimilarityCheckerContainer initSCC();
+
+ /**
+ * Sets the used {@link ISimilarityCheckerContainer} to the given one.
+ *
+ * If necessary, it can be called in tests to change the used similarity checker
+ * container to the given one.
+ *
+ * @see {@link #initSCC()} for setting the {@link ISimilarityCheckerContainer}
+ * during set up.
+ */
+ protected void setSCC(ISimilarityCheckerContainer scc) {
+ this.scc = scc;
+ }
+
+ /**
+ * Delegates similarity checking to the underlying
+ * {@link ISimilarityCheckerContainer}.
+ */
+ public Boolean isSimilar(Object element1, Object element2) {
+ return this.getSCC().isSimilar(element1, element2);
+ }
+
+ /**
+ * Delegates similarity checking to the underlying
+ * {@link ISimilarityCheckerContainer}.
+ */
+ public Boolean areSimilar(Collection> elements1, Collection> elements2) {
+ return this.getSCC().areSimilar(elements1, elements2);
+ }
+
+ /**
+ * @return The prefix of the {@link Resource} file names created from within the
+ * current test class. Defaults to the name of the current test class.
+ *
+ * @see {@link #getResourceFileName()}
+ */
+ public String getCurrentTestClassName() {
+ return this.getClass().getSimpleName();
+ }
+
+ /**
+ * @return The name of the currently running test method
+ */
+ public String getCurrentTestMethodName() {
+ return this.getCurrentTestMethodName(this.getCurrentTestInfo());
+ }
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java
new file mode 100644
index 0000000000..a9ccffab2c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java
@@ -0,0 +1,46 @@
+package cipm.consistency.fitests.similarity;
+
+import java.util.Collection;
+
+/**
+ * An interface meant to be implemented by classes that store the similarity
+ * checker under test, in order to spare other test classes the need to add that
+ * similarity checker as a dependency.
+ *
+ * This interface contains dependencies to neither similarity checker interfaces
+ * nor to concrete implementations, because doing so would reduce the
+ * re-usability.
+ *
+ * The underlying similarity checking mechanism(s) can be reset by using the
+ * {@link #newSimilarityChecker()} method. The similarity checking mechanism(s)
+ * are not automatically re-created upon calling similarity checking methods in
+ * this interface, because it might be desirable to keep using them.
+ *
+ * @author Alp Torac Genc
+ */
+public interface ISimilarityCheckerContainer {
+ /**
+ * If there are no similarity checking mechanism(s) present, this method creates
+ * and sets them up. Otherwise, replaces the currently stored similarity
+ * checking mechanism(s) with new ones.
+ *
+ * The similarity checking mechanism(s) are not automatically re-created upon
+ * calling similarity checking methods, because it might be desirable to keep
+ * using the existing similarity checking mechanism(s).
+ */
+ public void newSimilarityChecker();
+
+ /**
+ * Delegates similarity checking to the similarity checking mechanism(s) within.
+ * Calls {@link #newSimilarityChecker()} beforehand, if there are no similarity
+ * checking mechanism(s) present.
+ */
+ public Boolean isSimilar(Object element1, Object element2);
+
+ /**
+ * Delegates similarity checking to the similarity checking mechanism(s) within.
+ * Calls {@link #newSimilarityChecker()} beforehand, if there are no similarity
+ * checking mechanism(s) present.
+ */
+ public Boolean areSimilar(Collection> elements1, Collection> elements2);
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java
new file mode 100644
index 0000000000..b40a0416a0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.base;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.splevo.jamopp.diffing.similarity.SimilarityChecker;
+
+import cipm.consistency.fitests.similarity.ISimilarityCheckerContainer;
+
+/**
+ * A concrete implementation of {@link ISimilarityCheckerContainer} that creates
+ * and works with {@link JavaSimilarityChecker} instances.
+ *
+ * @author Alp Torac Genc
+ */
+public class JavaSimilarityCheckerContainer implements ISimilarityCheckerContainer {
+ private SimilarityChecker sc;
+
+ private SimilarityChecker getSimilarityChecker() {
+ if (this.sc == null) {
+ this.newSimilarityChecker();
+ }
+ return this.sc;
+ }
+
+ @Override
+ public void newSimilarityChecker() {
+ this.sc = new SimilarityChecker();
+ }
+
+ @Override
+ public Boolean isSimilar(Object element1, Object element2) {
+ return this.getSimilarityChecker().isSimilar((EObject) element1, (EObject) element2);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Boolean areSimilar(Collection> elements1, Collection> elements2) {
+ return this.getSimilarityChecker().areSimilar((List extends EObject>) elements1,
+ (List extends EObject>) elements2);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java
new file mode 100644
index 0000000000..69404da23c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains test classes and interfaces that depend on
+ * {@link org.splevo.jamopp.diffing.similarity} and/or its sub-packages.
+ */
+package cipm.consistency.fitests.similarity.base;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java
new file mode 100644
index 0000000000..add310bc50
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java
@@ -0,0 +1,306 @@
+package cipm.consistency.fitests.similarity.eobject;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
+
+import cipm.consistency.initialisers.eobject.IEObjectInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+import cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider;
+
+/**
+ * An abstract class that extends {@link AbstractResourceSimilarityTest} with
+ * various methods that can be used to test the similarity checking of
+ * {@link EObject} instances.
+ *
+ * Integrates {@link InitialiserTestSettingsProvider}, in order to grant access
+ * to expected similarity values.
+ *
+ * @author Alp Torac Genc
+ * @see {@link InitialiserTestSettingsProvider#getSimilarityValues()} and
+ * further related methods and classes for more information on expected
+ * similarity values.
+ */
+public abstract class AbstractEObjectSimilarityTest extends AbstractResourceSimilarityTest {
+ /**
+ * @see {@link #getEcoreUtilHelper()}
+ */
+ private EcoreUtilHelper ecoreHelper;
+
+ @BeforeEach
+ @Override
+ public void setUp(TestInfo info) {
+ super.setUp(info);
+
+ this.setEcoreUtilHelper(new EcoreUtilHelper());
+ }
+
+ @AfterEach
+ @Override
+ public void tearDown() {
+ this.cleanUpEcoreUtilHelper();
+
+ this.resetInitialiserTestSettingsProvider();
+
+ super.tearDown();
+ }
+
+ /**
+ * Consider adding default initialisation for
+ * {@link InitialiserTestSettingsProvider} if plausible to spare code
+ * duplication.
+ *
+ * @return The {@link InitialiserTestSettingsProvider} that will be used in
+ * tests.
+ */
+ public abstract InitialiserTestSettingsProvider getInitialiserTestSettingsProvider();
+
+ /**
+ * Sets up the {@link EcoreUtilHelper} instance that will be used with the given
+ * one.
+ */
+ protected void setEcoreUtilHelper(EcoreUtilHelper ecoreHelper) {
+ this.ecoreHelper = ecoreHelper;
+ }
+
+ /**
+ * Sets the used {@link EcoreUtilHelper} to null, in order to make sure that
+ * each test method has a fresh instance.
+ */
+ protected void cleanUpEcoreUtilHelper() {
+ this.ecoreHelper = null;
+ }
+
+ /**
+ * @return A helper class instance that can be used to perform various
+ * operations on {@link EObject} instances.
+ */
+ protected EcoreUtilHelper getEcoreUtilHelper() {
+ return this.ecoreHelper;
+ }
+
+ /**
+ * Resets {@link #getInitialiserTestSettingsProvider()} after individual tests.
+ */
+ protected void resetInitialiserTestSettingsProvider() {
+ this.getInitialiserTestSettingsProvider().reset();
+ }
+
+ /**
+ * @return The {@link IInitialiserPackage} that is used to generate initialiser
+ * parameters for tests.
+ */
+ public IInitialiserPackage getUsedInitialiserPackage() {
+ return this.getInitialiserTestSettingsProvider().getUsedInitialiserPackage();
+ }
+
+ /**
+ * The variant of
+ * {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} that uses the
+ * type, which introduces attrKey to the {@link EObject} hierarchy first.
+ */
+ public Boolean getExpectedSimilarityResult(EStructuralFeature attrKey) {
+ return this.getInitialiserTestSettingsProvider().getSimilarityValues().getExpectedSimilarityResult(attrKey);
+ }
+
+ /**
+ * @param objCls The type of the {@link EObject} instances being compared
+ * @param attrKey The attribute, based on which the said instances are compared
+ * @return The expected similarity value for cases, where 2 instances of objCls
+ * are compared, whose attribute (attrKey) is different.
+ */
+ public Boolean getExpectedSimilarityResult(Class extends EObject> objCls, EStructuralFeature attrKey) {
+ return this.getInitialiserTestSettingsProvider().getSimilarityValues().getExpectedSimilarityResult(objCls,
+ attrKey);
+ }
+
+ /**
+ * See {@link EcoreUtilHelper#cloneEObj(EObject)}
+ */
+ public T cloneEObj(T obj) {
+ return this.getEcoreUtilHelper().cloneEObj(obj);
+ }
+
+ /**
+ * See {@link EcoreUtilHelper#cloneEObjWithContainers(EObject)}
+ */
+ public T cloneEObjWithContainers(T obj) {
+ var clone = this.getEcoreUtilHelper().cloneEObjWithContainers(obj);
+ if (clone != null)
+ return clone;
+
+ Assertions.fail("Cloning with cloneEObjWithContainers failed");
+ return null;
+ }
+
+ /**
+ * See {@link EcoreUtilHelper#cloneEObjList(Collection)}
+ */
+ public Collection cloneEObjList(Collection objs) {
+ return this.getEcoreUtilHelper().cloneEObjList(objs);
+ }
+
+ /**
+ * See {@link EcoreUtilHelper#getActualEquality(EObject, EObject)}
+ */
+ public boolean getActualEquality(EObject elem1, EObject elem2) {
+ return this.getEcoreUtilHelper().getActualEquality(elem1, elem2);
+ }
+
+ /**
+ * See {@link EcoreUtilHelper#getActualEquality(List, List)}
+ */
+ public boolean getActualEquality(List extends EObject> elems1, List extends EObject> elems2) {
+ return this.getEcoreUtilHelper().getActualEquality(elems1, elems2);
+ }
+
+ /**
+ * Clones elem and compares it with its clone. They are expected to be similar.
+ */
+ public void assertSimilar(EObject elem) {
+ this.assertSimilarityResult(elem, elem, Boolean.TRUE);
+ }
+
+ /**
+ * Compares elem1 with elem2, expects the similarity result to be the same with
+ * the given expected value.
+ *
+ * Note: All given {@link EObject} instances will be cloned before tests to
+ * make sure that there are no side effects caused by the given {@link EObject}
+ * instances changing their container.
+ * {@link #cloneEObjWithContainers(EObject)} is used to make sure that all
+ * potentially relevant containers are cloned as well.
+ */
+ public void assertSimilarityResult(EObject elem1, EObject elem2, Boolean expectedSimilarityResult) {
+ if (expectedSimilarityResult == null) {
+ this.getLogger().debug("No expected similarity result present");
+ } else if ((!expectedSimilarityResult.booleanValue() && this.getActualEquality(elem1, elem2))) {
+ this.getLogger().debug("Elements are expected to be different" + " in " + this.getCurrentTestMethodName()
+ + " but are similar according to EcoreUtilHelper");
+ }
+
+ var objOne = this.cloneEObjWithContainers(elem1);
+ var objTwo = this.cloneEObjWithContainers(elem2);
+
+ var resOne = this.createResource(List.of(objOne));
+ var resTwo = this.createResource(List.of(objTwo));
+
+ Assertions.assertEquals(expectedSimilarityResult, this.areSimilar(resOne.getContents(), resTwo.getContents()),
+ "EcoreUtilHelper comparison result: " + this.getActualEquality(objOne, objTwo));
+ }
+
+ /**
+ * Tests the similarity as follows:
+ *
+ * - Clones elem1 and compares it with its clone,
+ *
- Clones elem2 and compares it with its clone,
+ *
- Compares elem1 with elem2
+ *
- Compares elem2 with elem1
+ *
+ *
+ * Note: All given {@link EObject} instances will be cloned before tests to
+ * make sure that there are no side effects caused by the given {@link EObject}
+ * instances changing their container.
+ * {@link #cloneEObjWithContainers(EObject)} is used to make sure that all
+ * potentially relevant containers are cloned as well.
+ *
+ *
+ * @param expectedSimilarityValue The expected result of the similarity
+ * checking.
+ */
+ public void testSimilarity(EObject elem1, EObject elem2, Boolean expectedSimilarityValue) {
+ this.assertSimilar(elem1);
+ this.assertSimilar(elem2);
+
+ this.assertSimilarityResult(elem1, elem2, expectedSimilarityValue);
+ this.assertSimilarityResult(elem2, elem1, expectedSimilarityValue);
+ }
+
+ /**
+ * A variant of {@link #testSimilarity(EObject, EObject, Boolean)}, where the
+ * last parameter is computed using the given attrKey.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for
+ * objCls and attrKey.
+ */
+ public void testSimilarity(EObject elem1, EObject elem2, Class extends EObject> objCls,
+ EStructuralFeature attrKey) {
+ this.testSimilarity(elem1, elem2, this.getExpectedSimilarityResult(objCls, (EStructuralFeature) attrKey));
+ }
+
+ /**
+ * The variant of
+ * {@link #testSimilarity(EObject, EObject, Class, EStructuralFeature)} that
+ * uses the same class as the given elems.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for
+ * attrKey.
+ */
+ @SuppressWarnings("unchecked")
+ public void testSimilarity(EObject elem1, EObject elem2, EStructuralFeature attrKey) {
+ this.testSimilarity(elem1, elem2, (Class extends EObject>) elem1.eClass().getInstanceClass(), attrKey);
+ }
+
+ /**
+ * A variant of {@link #testSimilarity(EObject, EObject, Boolean)} that
+ * constructs a minimal second element with the given initialiser instance init
+ * and uses it as the second parameter in the said method.
+ *
+ * If initialiseSecondElement is set to true, constructs the second element with
+ * {@code init.initialise(init.instantiate())}. Otherwise uses
+ * {@code init.instantiate()}.
+ *
+ * Can be used to summarise the null check tests.
+ *
+ * @param init The initialiser used in the construction of
+ * the second element
+ * @param initialiseSecondElement Denotes whether {@code init.initialise(...)}
+ * will be used in the construction of the second
+ * element.
+ */
+ public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement,
+ Boolean expectedSimilarityValue) {
+ var elem2 = init.instantiate();
+
+ if (initialiseSecondElement) {
+ Assertions.assertTrue(init.initialise(elem2));
+ }
+
+ this.testSimilarity(elem, elem2, expectedSimilarityValue);
+ }
+
+ /**
+ * A variant of
+ * {@link #testSimilarityNullCheck(EObject, IEObjectInitialiser, boolean, Boolean)},
+ * where the last parameter is computed using the given attrKey.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for
+ * objCls and attrKey.
+ */
+ public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement,
+ Class extends EObject> objCls, EStructuralFeature attrKey) {
+ this.testSimilarityNullCheck(elem, init, initialiseSecondElement,
+ this.getExpectedSimilarityResult(objCls, (EStructuralFeature) attrKey));
+ }
+
+ /**
+ * A variant of
+ * {@link #testSimilarityNullCheck(EObject, IEObjectInitialiser, boolean, Class, EStructuralFeature)}
+ * that computes the {@code objCls} parameter from the {@code elem} parameter.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for
+ * attrKey.
+ */
+ @SuppressWarnings("unchecked")
+ public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement,
+ EStructuralFeature attrKey) {
+ this.testSimilarityNullCheck(elem, init, initialiseSecondElement,
+ (Class extends EObject>) elem.eClass().getInstanceClass(), attrKey);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java
new file mode 100644
index 0000000000..eb045fdeca
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java
@@ -0,0 +1,102 @@
+package cipm.consistency.fitests.similarity.eobject;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
+
+import cipm.consistency.fitests.similarity.AbstractSimilarityTest;
+
+/**
+ * An abstract class that extends {@link AbstractSimilarityTest} with additional
+ * methods regarding {@link Resource} instance creation.
+ *
+ * @author Alp Torac Genc
+ */
+public abstract class AbstractResourceSimilarityTest extends AbstractSimilarityTest {
+ /**
+ * @see {@link #getResourceHelper()}
+ */
+ private ResourceHelper resHelper;
+
+ @BeforeEach
+ @Override
+ public void setUp(TestInfo info) {
+ super.setUp(info);
+
+ this.setResourceHelper(new ResourceHelper());
+
+ this.getResourceHelper().setResourceSaveRootPath(this.getAbsoluteResourceRootPath());
+ this.getResourceHelper().setResourceFileExtension(this.getResourceFileExtension());
+ }
+
+ @AfterEach
+ @Override
+ public void tearDown() {
+ this.getResourceHelper().clean();
+ this.cleanUpResourceHelper();
+
+ super.tearDown();
+ }
+
+ /**
+ * Sets the used {@link ResourceHelper} to null, in order to ensure that each
+ * test method has a fresh instance.
+ */
+ protected void cleanUpResourceHelper() {
+ this.resHelper = null;
+ }
+
+ /**
+ * Sets up the {@link ResourceHelper} instance that will be used with the given
+ * one.
+ */
+ protected void setResourceHelper(ResourceHelper resHelper) {
+ this.resHelper = resHelper;
+ }
+
+ /**
+ * The {@link ResourceHelper} instance that can be used for creating
+ * {@link Resource} instances.
+ */
+ protected ResourceHelper getResourceHelper() {
+ return this.resHelper;
+ }
+
+ /**
+ * Delegates the creation of a {@link Resource} instance to the underlying
+ * {@link ResourceHelper}.
+ *
+ * The name of the {@link Resource} instance will be the return value of
+ * {@link #getResourceFileName()}.
+ *
+ * @return A {@link Resource} instance with the given contents
+ */
+ protected Resource createResource(Collection extends EObject> eos) {
+ return this.getResourceHelper().createResource(eos, this.getResourceFileName());
+ }
+
+ /**
+ * Uses the currently run test class and method to compute a name for the file
+ * of the {@link Resource} instance, should it be saved.
+ *
+ * @return A name for the file of the {@link Resource} instance.
+ */
+ public String getResourceFileName() {
+ return this.getCurrentTestClassName() + "_" + this.getCurrentTestMethodName();
+ }
+
+ /**
+ * @return The absolute path, under which the {@link Resource} files will be
+ * saved.
+ */
+ public abstract String getAbsoluteResourceRootPath();
+
+ /**
+ * @return The extension of the {@link Resource} files, if they are saved.
+ */
+ public abstract String getResourceFileExtension();
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java
new file mode 100644
index 0000000000..2aa29faefa
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java
@@ -0,0 +1,114 @@
+package cipm.consistency.fitests.similarity.eobject;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ * A helper class that contains utility methods for {@link EObject}. This class
+ * encapsulates such methods, so that other classes can spare dependencies to
+ * various {@link EObject} related packages.
+ *
+ * Methods in this class include various cloning methods for {@link EObject}
+ * instances. Furthermore, there are methods that compare {@link EObject}
+ * instances at meta-metamodel level, without any other context (all their
+ * contents and attributes are checked).
+ *
+ * @author Alp Torac Genc
+ * @see {@link EcoreUtil}
+ */
+public class EcoreUtilHelper {
+ private final Logger LOGGER = Logger.getLogger("cipm." + EcoreUtilHelper.class.getSimpleName());
+
+ /**
+ * Creates a clone copy of the given obj and its contents.
+ *
+ * Note: DOES NOT clone the container {@code obj.eContainer()} of this
+ * object. Only copies the given object and the contents nested in it.
+ *
+ * @return A clone of obj without its container and clones of its contents.
+ * @see {@link EcoreUtil#copy(EObject)}
+ */
+ public T cloneEObj(T obj) {
+ return EcoreUtil.copy(obj);
+ }
+
+ /**
+ * Finds the topmost EObject (objTop) that can be reached from {@code obj},
+ * clones objTop, finds the clone of {@code obj} among the contents of objTop
+ * and returns that clone.
+ *
+ * @return A clone of obj, which preserves obj's place in its hierarchy. The
+ * returned obj clone contains clones of original obj's contents. All
+ * objects containing obj are also implicitly cloned, so that obj
+ * clone's position (among object clones) matches to the original obj's
+ * position (among original objects).
+ * @see {@link EcoreUtil#copy(EObject)}
+ */
+ @SuppressWarnings("unchecked")
+ public T cloneEObjWithContainers(T obj) {
+ if (obj.eContainer() == null) {
+ return this.cloneEObj(obj);
+ }
+
+ EObject cObj = obj;
+
+ while (cObj.eContainer() != null) {
+ cObj = cObj.eContainer();
+ }
+
+ EObject clone = this.cloneEObj(cObj);
+ var contents = clone.eAllContents();
+
+ while (contents.hasNext()) {
+ var cCloneObj = contents.next();
+ if (this.getActualEquality(obj, cCloneObj)) {
+ return (T) cCloneObj;
+ }
+ }
+
+ LOGGER.error("Cloning EObject with cloneEObjWithContainers failed");
+ return null;
+ }
+
+ /**
+ * Creates a clone copy of all given objs.
+ *
+ * Note: DOES NOT clone any containers {@code obj.eContainer()} of the
+ * objects. Only copies the given objects and the contents nested in them.
+ *
+ * @see {@link EcoreUtil#copyAll(Collection)}
+ */
+ public Collection cloneEObjList(Collection objs) {
+ return EcoreUtil.copyAll(objs);
+ }
+
+ /**
+ * Computes the equality of two {@link EObject} instances using
+ * {@link EcoreUtil}.
+ *
+ * Note: The equality here is not necessarily the same as similarity checking
+ * that is being tested. This form of equality is much stricter than similarity,
+ * since there might be some differences in attributes and/or nested content,
+ * which are irrelevant for similarity in certain cases.
+ */
+ public boolean getActualEquality(EObject elem1, EObject elem2) {
+ return EcoreUtil.equals(elem1, elem2);
+ }
+
+ /**
+ * Computes the equality of two lists of {@link EObject} using
+ * {@link EcoreUtil}.
+ *
+ * Note: The equality here is not necessarily the same as similarity checking
+ * that is being tested. This form of equality is much stricter than similarity,
+ * since there might be some differences in attributes and/or nested content,
+ * which are irrelevant for similarity in certain cases.
+ */
+ public boolean getActualEquality(List extends EObject> elems1, List extends EObject> elems2) {
+ return EcoreUtil.equals(elems1, elems2);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java
new file mode 100644
index 0000000000..b9c0b86103
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java
@@ -0,0 +1,285 @@
+package cipm.consistency.fitests.similarity.eobject;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.log4j.Logger;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+/**
+ * A class that encapsulates the means to create {@link Resource} instances.
+ *
+ * @author Alp Torac Genc
+ */
+public class ResourceHelper {
+ private static final Logger LOGGER = Logger.getLogger("cipm." + ResourceHelper.class.getSimpleName());
+
+ /**
+ * The directory, where the created {@link Resource} instances will be stored,
+ * if they are saved.
+ */
+ private String resourceSaveRootPath;
+
+ /**
+ * The extension of {@link Resource} files, if they are saved.
+ */
+ private String resourceFileExtension;
+
+ /**
+ * The map that keeps track of the mapping inserted into
+ * {@link Resource.Factory.Registry}. Can be used to clean such mappings from
+ * the registry at the end of tests.
+ */
+ private Map registryMappings = new HashMap();
+
+ /**
+ * The list of created {@link Resource} instances. Can be used to perform clean
+ * up after tests.
+ */
+ private List createdResources = new ArrayList();
+
+ /**
+ * @return The {@link Logger} that can be used to log happenings in this
+ * instance.
+ */
+ protected Logger getLogger() {
+ return LOGGER;
+ }
+
+ /**
+ * Creates and returns a {@link Resource} instance, whose URI will be the given
+ * one.
+ *
+ * Does not save the created {@link Resource} instance.
+ */
+ protected Resource initResource(URI resUri) {
+ ResourceSet rSet = new ResourceSetImpl();
+ return rSet.createResource(resUri);
+ }
+
+ /**
+ * Sets the directory, where the created {@link Resource} instances will be
+ * stored, if they are saved.
+ */
+ public void setResourceSaveRootPath(String resourceSaveRootPath) {
+ this.resourceSaveRootPath = resourceSaveRootPath;
+ }
+
+ /**
+ * Sets the extension of {@link Resource} files, if they are saved.
+ */
+ public void setResourceFileExtension(String resourceFileExtension) {
+ this.removeFromRegistry(this.resourceFileExtension);
+ this.resourceFileExtension = resourceFileExtension;
+ this.setResourceRegistry();
+ }
+
+ /**
+ * @return The extension of the {@link Resource} files.
+ */
+ public String getResourceFileExtension() {
+ return this.resourceFileExtension;
+ }
+
+ /**
+ * @return The directory, where the created {@link Resource} instances will be
+ * stored, if they are saved.
+ */
+ public String getResourceSaveRootPath() {
+ return resourceSaveRootPath;
+ }
+
+ /**
+ * Complements {@link #getResourceSaveRootPath()} with the {@link Resource} file
+ * name and extension. The said file will only be created, if the
+ * {@link Resource} file is saved.
+ *
+ * @param resourceFileName The name of the file
+ * @param resourceFileExtension The extension of the file
+ * @return The {@link URI} for a {@link Resource} instance.
+ */
+ protected URI createURI(String resourceFileName, String resourceFileExtension) {
+ return URI.createFileURI(
+ this.getResourceSaveRootPath() + File.separator + resourceFileName + "." + resourceFileExtension);
+ }
+
+ /**
+ * The variant of {@link #createURI(String, String)}, which uses
+ * {@link #getResourceFileExtension()}.
+ */
+ protected URI createURI(String resourceName) {
+ return this.createURI(resourceName, this.getResourceFileExtension());
+ }
+
+ /**
+ * @return The name of the {@link Resource} file with the count parameter added
+ * to it.
+ */
+ protected String getResourceNameWithCount(String resourceName, int count) {
+ return resourceName + "-" + count;
+ }
+
+ /**
+ * @return Computes a unique name for the {@link Resource} file, so that it is
+ * not overwritten if another resource file with the same name is to be
+ * created.
+ */
+ protected String computeEffectiveResourceName(String resourceName) {
+ var resourceRoot = new File(this.getResourceSaveRootPath());
+
+ var count = 0;
+
+ if (resourceRoot.exists()) {
+ var files = List.of(
+ List.of(resourceRoot.listFiles()).stream().map((file) -> file.getName()).toArray(String[]::new));
+
+ while (files.contains(this.getResourceNameWithCount(resourceName, count))) {
+ count++;
+ }
+ }
+
+ return this.getResourceNameWithCount(resourceName, count);
+ }
+
+ /**
+ * Creates a {@link Resource} instance for the given EObject instances. The
+ * Resource instances created with this method are tracked, so that they can be
+ * deleted later if necessary.
+ *
+ * !!! IMPORTANT !!!
+ *
+ * Using this method will cause the logger to log an error message, if some
+ * of the EObject instances (from eos) that are already in a Resource instance
+ * are attempted to be placed into another Resource. This should be avoided,
+ * since doing so will REMOVE the said EObject instances from their former
+ * Resource and cause side effects in tests.
+ */
+ public Resource createResource(Collection extends EObject> eos, String resourceName) {
+ Resource res = this.initResource(this.createURI(this.computeEffectiveResourceName(resourceName)));
+ this.createdResources.add(res);
+
+ if (eos != null) {
+ for (var eo : eos) {
+
+ /*
+ * Make sure to not add an EObject, which has already been added to a Resource,
+ * to another Resource. Doing so will detach it from its former Resource and add
+ * it to the second one.
+ */
+ if (eo.eResource() != null) {
+ this.getLogger().error("An EObject's resource was set and shifted during resource creation");
+ }
+ res.getContents().add(eo);
+ }
+ }
+
+ return res;
+ }
+
+ /**
+ * Puts the necessary mapping for saving {@link Resource} files with the given
+ * file extension into {@link Resource.Factory.Registry}. The entry is also
+ * tracked so that it can be deleted later, if necessary.
+ */
+ protected void setResourceRegistry() {
+ var resFileExtension = this.getResourceFileExtension();
+ var fac = new XMIResourceFactoryImpl();
+
+ this.registryMappings.put(resFileExtension, fac);
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(resFileExtension, fac);
+ }
+
+ /**
+ * Unloads the given {@link Resource} instance.
+ */
+ public void unloadResource(Resource res) {
+ res.unload();
+ }
+
+ /**
+ * Unloads and deletes all created {@link Resource} instances, if they are
+ * created with {@link #createResource(Collection)}. Stops tracking them as
+ * well.
+ */
+ public void cleanAllResources() {
+ this.createdResources.forEach((r) -> {
+ this.unloadResource(r);
+
+ try {
+ r.delete(null);
+ } catch (IOException e) {
+ this.getLogger().debug("Resource either was not created as a file or has already been deleted: "
+ + r.getURI().toString());
+ }
+ });
+
+ this.createdResources.clear();
+ }
+
+ /**
+ * Deletes the directory that contains all {@link Resource} instances, if it is
+ * empty.
+ */
+ public void deleteResourceDir() {
+ new File(this.getResourceSaveRootPath()).delete();
+ }
+
+ /**
+ * Removes the entry matching to the given {@code resourceFileExtension} from
+ * the resource factory, if it was added by this instance. Stops tracking the
+ * said entry.
+ */
+ protected void removeFromRegistry(String resourceFileExtension) {
+ if (resourceFileExtension == null)
+ return;
+
+ var reg = Resource.Factory.Registry.INSTANCE;
+ var regMap = reg.getExtensionToFactoryMap();
+
+ if (regMap.containsKey(resourceFileExtension)) {
+ var val = regMap.get(resourceFileExtension);
+
+ if (this.registryMappings.containsKey(resourceFileExtension)) {
+ var valTracked = this.registryMappings.get(resourceFileExtension);
+
+ if (val.equals(valTracked)) {
+ regMap.remove(val);
+ this.registryMappings.remove(valTracked);
+ }
+ }
+ }
+ }
+
+ /**
+ * Cleans the mapping(s) in {@link Resource.Factory.Registry} inserted by
+ * {@link #setResourceRegistry(String)}. Stops tracking them as well.
+ */
+ protected void cleanRegistry() {
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+
+ for (var key : this.registryMappings.keySet()) {
+ reg.getExtensionToFactoryMap().remove(key);
+ }
+
+ this.registryMappings.clear();
+ }
+
+ /**
+ * Cleans up the saved attributes and created {@link Resource} files.
+ */
+ public void clean() {
+ this.cleanRegistry();
+ this.cleanAllResources();
+ this.deleteResourceDir();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java
new file mode 100644
index 0000000000..422e0aa10f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link EObject} and {@link Resource} extensions for
+ * {@link cipm.consistency.fitests.similarity}.
+ */
+package cipm.consistency.fitests.similarity.eobject;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java
new file mode 100644
index 0000000000..720aabc9ed
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java
@@ -0,0 +1,105 @@
+package cipm.consistency.fitests.similarity.jamopp;
+
+import java.io.File;
+import java.util.stream.Stream;
+
+import org.junit.jupiter.params.provider.Arguments;
+
+import cipm.consistency.fitests.similarity.ISimilarityCheckerContainer;
+import cipm.consistency.fitests.similarity.base.JavaSimilarityCheckerContainer;
+import cipm.consistency.fitests.similarity.eobject.AbstractEObjectSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters;
+import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPSimilarityValues;
+import cipm.consistency.fitests.similarity.params.IInitialiserParameters;
+import cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider;
+import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser;
+
+/**
+ * An abstract test class that extends {@link AbstractEObjectSimilarityTest}
+ * with concrete method implementations for JaMoPP context, as well as static
+ * methods that can be used in parameterised tests to generate initialiser
+ * instances.
+ *
+ * @author Alp Torac Genc
+ */
+public abstract class AbstractJaMoPPSimilarityTest extends AbstractEObjectSimilarityTest {
+ @Override
+ protected ISimilarityCheckerContainer initSCC() {
+ return new JavaSimilarityCheckerContainer();
+ }
+
+ @Override
+ public String getAbsoluteResourceRootPath() {
+ return new File("").getAbsoluteFile().getAbsolutePath() + File.separator + "testModels";
+ }
+
+ @Override
+ public String getResourceFileExtension() {
+ return "javaxmi";
+ }
+
+ /**
+ * @return The {@link InitialiserTestSettingsProvider} that will be used in
+ * tests. Initialises the instance to be returned, if not properly
+ * initialised.
+ */
+ public static InitialiserTestSettingsProvider getClassesInitialiserTestSettingsProvider() {
+ var instance = InitialiserTestSettingsProvider.getInstance();
+
+ if (instance == null) {
+ InitialiserTestSettingsProvider.initialise();
+ instance = InitialiserTestSettingsProvider.getInstance();
+ }
+
+ if (instance.getParameters() == null) {
+ instance.setParameters(new JaMoPPInitialiserParameters());
+ }
+
+ if (instance.getSimilarityValues() == null) {
+ instance.setSimilarityValues(new JaMoPPSimilarityValues());
+ }
+
+ return instance;
+ }
+
+ @Override
+ public InitialiserTestSettingsProvider getInitialiserTestSettingsProvider() {
+ return getClassesInitialiserTestSettingsProvider();
+ }
+
+ /**
+ * @see {@link IInitialiserParameters#getEachInitialiserOnceBySuper(Class)}
+ */
+ public static Stream getEachInitialiserArgumentsOnceFor(
+ Class extends IJaMoPPEObjectInitialiser> superType) {
+ return getClassesInitialiserTestSettingsProvider().getParameters().getEachInitialiserOnceBySuper(superType)
+ .stream().map((i) -> Arguments.of(i));
+ }
+
+ /**
+ * @see {@link IInitialiserParameters#getAllInitialisersBySuper(Class)}
+ */
+ public static Stream getAllInitialiserArgumentsFor(
+ Class extends IJaMoPPEObjectInitialiser> superType) {
+ return getClassesInitialiserTestSettingsProvider().getParameters().getAllInitialisersBySuper(superType).stream()
+ .map((i) -> Arguments.of(i));
+ }
+
+ /**
+ * @see {@link IInitialiserParameters#getAdaptedInitialisersBySuper(Class)}
+ */
+ public static Stream getAdaptedInitialiserArgumentsFor(
+ Class superType) {
+ return getClassesInitialiserTestSettingsProvider().getParameters().getAdaptedInitialisersBySuper(superType)
+ .stream().map((i) -> Arguments.of(i));
+ }
+
+ /**
+ * @see {@link IInitialiserParameters#getNonAdaptedInitialisersBySuper(Class)}
+ */
+ public static Stream getNonAdaptedInitialiserArgumentsFor(
+ Class extends IJaMoPPEObjectInitialiser> superType) {
+ return getClassesInitialiserTestSettingsProvider().getParameters().getNonAdaptedInitialisersBySuper(superType)
+ .stream().map((i) -> Arguments.of(i));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java
new file mode 100644
index 0000000000..aff61aa660
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java
@@ -0,0 +1,595 @@
+package cipm.consistency.fitests.similarity.jamopp;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.initialisers.IInitialiserBase;
+import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser;
+import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser;
+import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser;
+
+import org.emftext.language.java.containers.Module;
+
+/**
+ * A test class dedicated to test the general control flow of similarity
+ * checking.
+ *
+ * Also contains some tests for lists, from which some abstract from
+ * {@link EObject} instances, whereas others make use of {@link Module}
+ * instances, as they can easily be compared after their name
+ * ({@code module.getName()}).
+ *
+ * @author Alp Torac Genc
+ */
+public class GeneralJaMoPPSimilarityTest extends AbstractJaMoPPSimilarityTest {
+ /**
+ * Provides all non-adapted versions of {@link IJaMoPPEObjectInitialiser}
+ * implementors.
+ */
+ private static Stream provideNonAdaptedInitialisers() {
+ return AbstractJaMoPPSimilarityTest.getNonAdaptedInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class);
+ }
+
+ /**
+ * Provides all adapted versions of {@link IJaMoPPEObjectInitialiser}
+ * implementors.
+ */
+ private static Stream provideAdaptedInitialisers() {
+ return AbstractJaMoPPSimilarityTest.getAdaptedInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class);
+ }
+
+ /**
+ * Provides all versions of {@link IJaMoPPEObjectInitialiser} implementors.
+ */
+ private static Stream provideAllInitialisers() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class);
+ }
+
+ /**
+ * Provides one instance of each {@link IJaMoPPEObjectInitialiser} implementor.
+ * The initialiser instance will be adapted, if possible.
+ */
+ private static Stream provideEachInitialiserOnce() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IJaMoPPEObjectInitialiser.class);
+ }
+
+ /**
+ * @return An empty, immutable list
+ */
+ private List toList() {
+ return List.of();
+ }
+
+ /**
+ * @return An immutable list containing the given elements
+ */
+ private List extends EObject> toList(EObject... eos) {
+ return List.of(eos);
+ }
+
+ /**
+ * Instantiates an object using init, initialises that object and returns it.
+ * Asserts that the initialisation is successful.
+ */
+ private EObject instantiateAndInitialise(IJaMoPPEObjectInitialiser init) {
+ var obj = init.instantiate();
+ Assertions.assertTrue(init.initialise(obj));
+ return obj;
+ }
+
+ /**
+ * @return A mutable list with a single null element.
+ */
+ private List makeListWithSingleNullElement() {
+ var list = new ArrayList();
+ list.add(null);
+
+ // Make sure that the null element is in the list
+ Assertions.assertEquals(1, list.size());
+ Assertions.assertNull(list.get(0));
+
+ return list;
+ }
+
+ /**
+ * A variant of {@link #assertAreSimilar(List, List, Boolean)}, where the last
+ * parameter is true.
+ */
+ private void assertAreSimilar(List extends EObject> eos1, List extends EObject> eos2) {
+ this.assertAreSimilar(eos1, eos2, Boolean.TRUE);
+ }
+
+ /**
+ * Makes the following assertions:
+ *
+ *
+ * - The similarity value of both lists with respect to
+ * {@link #areSimilar(java.util.Collection, java.util.Collection)} is
+ * expectedResult.
+ *
- The object within the lists are pairwise similar with respect to
+ * {@link #isSimilar(Object, Object)}, if expectedResult is true. Otherwise
+ * asserts that there is at least one pair, which is not similar.
+ *
- The similarity checking is symmetrical, meaning that changing positions
+ * of parameters within similarity checking methods has no effect on the result.
+ *
+ */
+ private void assertAreSimilar(List extends EObject> eos1, List extends EObject> eos2, Boolean expectedResult) {
+ Assertions.assertEquals(expectedResult, this.areSimilar(eos1, eos2));
+ Assertions.assertEquals(expectedResult, this.areSimilar(eos2, eos1), "areSimilar is not symmetric");
+
+ if (eos1 != null && eos2 != null) {
+ int size = eos1.size() == eos2.size() ? eos1.size() : -1;
+
+ if (expectedResult.booleanValue()) {
+ // Ensure that the objects are pairwise similar as well
+ for (int i = 0; i < size; i++) {
+ this.assertIsSimilar(eos1.get(i), eos2.get(i));
+ }
+ } else if (size > 0) {
+ // Ensure that there is at least one object pair that is not similar, if list
+ // sizes are equal yet they not similar
+ for (int i = 0; i < size; i++) {
+ var eo1 = eos1.get(i);
+ var eo2 = eos2.get(i);
+
+ var res1 = this.isSimilar(eo1, eo2);
+ var res2 = this.isSimilar(eo2, eo1);
+
+ Assertions.assertEquals(res1, res2, "isSimilar checking is not symmetric");
+ if (res1 == Boolean.FALSE) {
+ return;
+ }
+ }
+ Assertions.fail("areSimilar returns false, even though all objects are pairwise similar");
+ }
+ }
+ }
+
+ /**
+ * A variant of {@link #assertIsSimilar(EObject, EObject, Boolean)}, where the
+ * last parameter is true.
+ */
+ private void assertIsSimilar(EObject obj1, EObject obj2) {
+ this.assertIsSimilar(obj1, obj2, Boolean.TRUE);
+ }
+
+ /**
+ * Asserts that similarity checking obj1 and obj2 results in expectedResult.
+ * Additionally asserts that similarity checking is symmetrical, meaning that
+ * changing positions of obj1 and obj2 inside the similarity checking method has
+ * no effect on the result.
+ */
+ private void assertIsSimilar(EObject obj1, EObject obj2, Boolean expectedResult) {
+ var res1 = this.isSimilar(obj1, obj2);
+ var res2 = this.isSimilar(obj2, obj1);
+
+ // FIXME: Remove the null check and deal with the cause of the issues
+
+ if (expectedResult == null || (res1 != null && res2 != null)) {
+ Assertions.assertEquals(expectedResult, res1);
+ Assertions.assertEquals(expectedResult, res2, "isSimilar is not symmetric");
+ } else {
+ this.getLogger().warn("isSimilar returned null");
+ }
+ }
+
+ /**
+ * Ensure that the inherited {@link IJaMoPPEObjectInitialiser#newInitialiser()}
+ * returns an initialiser instance of the same type.
+ *
+ * All versions of initialisers are included to make sure that adapting
+ * initialisers does not break type equality of the returned initialiser.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAllInitialisers")
+ public void test_NewInitialiser_TypeCheck(IJaMoPPEObjectInitialiser initialiser) {
+ Assertions.assertEquals(initialiser.getClass(), initialiser.newInitialiser().getClass());
+ }
+
+ /**
+ * Ensure that the inherited {@link IJaMoPPEObjectInitialiser#newInitialiser()}
+ * does not consider adaptation strategies.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAdaptedInitialisers")
+ public void test_NewInitialiser_AdaptationStrategiesNotCopied(IInitialiserBase initialiser) {
+ var newInit = (IInitialiserBase) initialiser.newInitialiser();
+ Assertions.assertFalse(newInit.isAdapted());
+ }
+
+ /**
+ * Ensure that adaptation strategies of adapted initialisers are copied for the
+ * new initialiser instance. Also make sure that the new adaptation strategies
+ * are not reference equal.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAdaptedInitialisers")
+ public void test_NewInitialiser_WithAdaptationStrategies(IInitialiserBase initialiser) {
+ var newInit = initialiser.newInitialiserWithStrategies();
+
+ Assertions.assertEquals(initialiser.getClass(), newInit.getClass());
+
+ if (initialiser.isAdapted()) {
+ Assertions.assertTrue(newInit.isAdapted());
+
+ var strats = initialiser.getAdaptingStrategies();
+ var newStrats = newInit.getAdaptingStrategies();
+
+ Assertions.assertEquals(strats.size(), newStrats.size());
+
+ // Ensure that new adaptation strategies are not reference equal
+ for (var s : strats) {
+ Assertions.assertTrue(newStrats.stream().noneMatch((ns) -> ns == s));
+
+ // Approximate equality of contents by checking amount of elements of same type
+ Assertions.assertEquals(strats.stream().filter((s2) -> s2.getClass().equals(s.getClass())).count(),
+ newStrats.stream().filter((ns) -> ns.getClass().equals(s.getClass())).count());
+ }
+ } else {
+ Assertions.assertFalse(newInit.isAdapted());
+ }
+ }
+
+ /**
+ * Checks if similarity checking causes issues, if the {@link EObject} instances
+ * on both sides are not properly initialised.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should
+ * not be initialised.
+ */
+ @ParameterizedTest
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @MethodSource("provideNonAdaptedInitialisers")
+ public void test_IsSimilar_Uninitialised_ObjectsEqual(IJaMoPPEObjectInitialiser initialiser) {
+ var obj1 = initialiser.instantiate();
+ var obj2 = initialiser.instantiate();
+
+ this.assertIsSimilar(obj1, obj2);
+ }
+
+ /**
+ * Checks if two minimally initialised {@link EObject} instances are
+ * similar.
+ *
+ * Only adapted initialisers are used, since the generated instances should be
+ * initialised.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAdaptedInitialisers")
+ public void test_IsSimilar_Initialised_ObjectsEqual(IJaMoPPEObjectInitialiser initialiser) {
+ var obj11 = this.instantiateAndInitialise(initialiser);
+ var obj12 = this.instantiateAndInitialise(initialiser);
+
+ this.assertIsSimilar(obj11, obj12);
+ }
+
+ /**
+ * Checks if the same {@link EObject} instance is similar to itself.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAllInitialisers")
+ public void test_IsSimilar_SameReference(IJaMoPPEObjectInitialiser initialiser) {
+ var obj11 = initialiser.instantiate();
+
+ this.assertIsSimilar(obj11, obj11);
+ }
+
+ /**
+ * Checks if an {@link EObject} instance is similar to its clone.
+ */
+ @ParameterizedTest
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @MethodSource("provideAllInitialisers")
+ public void test_IsSimilar_CloneEqual(IJaMoPPEObjectInitialiser initialiser) {
+ var obj11 = initialiser.instantiate();
+ var objClone = this.cloneEObj(obj11);
+
+ this.assertIsSimilar(obj11, objClone);
+ }
+
+ /**
+ * Checks whether similarity checking causes issues, if one side is null.
+ */
+ @Test
+ public void test_IsSimilar_OneSide_Null() {
+ var initialiser = new ModuleInitialiser();
+ var obj = initialiser.instantiate();
+
+ this.assertIsSimilar(null, obj, Boolean.FALSE);
+ }
+
+ /**
+ * Checks whether similarity checking causes issues, if both sides are null.
+ */
+ @Test
+ public void test_IsSimilar_BothSides_Null() {
+ this.assertIsSimilar(null, null);
+ }
+
+ /**
+ * Checks if two {@link EObject} instances that implement different interfaces
+ * are not similar.
+ */
+ @Test
+ public void test_IsSimilar_ClassMismatch() {
+ var mod = new ModuleInitialiser().instantiate();
+ var pac = new PackageInitialiser().instantiate();
+
+ this.assertIsSimilar(mod, pac, Boolean.FALSE);
+ }
+
+ /**
+ * Checks whether similarity checking causes issues, if 2 lists each with 1
+ * {@link EObject} instance cause issues, where the mentioned instances are not
+ * initialised properly.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should
+ * not be initialised.
+ */
+ @ParameterizedTest
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @MethodSource("provideNonAdaptedInitialisers")
+ public void test_AreSimilar_Uninitialised_SingleObject(IJaMoPPEObjectInitialiser initialiser) {
+ var obj1 = initialiser.instantiate();
+ var obj2 = initialiser.instantiate();
+
+ this.assertAreSimilar(this.toList(obj1), this.toList(obj2));
+ }
+
+ /**
+ * Checks if similarity checking causes issues, if 2 lists each with 2
+ * {@link EObject} instance cause issues, where the mentioned {@link EObject}
+ * instances are not initialised properly.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should
+ * not be initialised.
+ */
+ @ParameterizedTest
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @MethodSource("provideNonAdaptedInitialisers")
+ public void test_AreSimilar_Uninitialised_MultipleObjects(IJaMoPPEObjectInitialiser initialiser) {
+ var obj11 = initialiser.instantiate();
+ var obj12 = initialiser.instantiate();
+ var obj21 = initialiser.instantiate();
+ var obj22 = initialiser.instantiate();
+
+ this.assertAreSimilar(this.toList(obj11, obj12), this.toList(obj21, obj22));
+ }
+
+ /**
+ * Checks whether similarity checking causes issues, if 2 lists each with 1
+ * {@link EObject} instance cause issues, where the mentioned instances are not
+ * initialised properly.
+ *
+ * Only adapted initialisers are used, since the generated instances should be
+ * initialised.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAdaptedInitialisers")
+ public void test_AreSimilar_Initialised_SingleObject(IJaMoPPEObjectInitialiser initialiser) {
+ var obj1 = this.instantiateAndInitialise(initialiser);
+ var obj2 = this.instantiateAndInitialise(initialiser);
+
+ this.assertAreSimilar(this.toList(obj1), this.toList(obj2));
+ }
+
+ /**
+ * Checks if similarity checking causes issues, if 2 lists each with 2
+ * {@link EObject} instance cause issues, where the mentioned {@link EObject}
+ * instances are not initialised properly.
+ *
+ * Only adapted initialisers are used, since the generated instances should be
+ * initialised.
+ */
+ @ParameterizedTest
+ @MethodSource("provideAdaptedInitialisers")
+ public void test_AreSimilar_Initialised_MultipleObjects(IJaMoPPEObjectInitialiser initialiser) {
+ var obj11 = this.instantiateAndInitialise(initialiser);
+ var obj12 = this.instantiateAndInitialise(initialiser);
+ var obj21 = this.instantiateAndInitialise(initialiser);
+ var obj22 = this.instantiateAndInitialise(initialiser);
+
+ this.assertAreSimilar(this.toList(obj11, obj12), this.toList(obj21, obj22));
+ }
+
+ /**
+ * Checks if similarity checking returns true, when a list is compared to
+ * itself. The said list contains one {@link EObject} instance.
+ */
+ @ParameterizedTest
+ @MethodSource("provideNonAdaptedInitialisers")
+ public void test_AreSimilar_SingleObject_SameReference(IJaMoPPEObjectInitialiser initialiser) {
+ var obj = initialiser.instantiate();
+ var list = this.toList(obj);
+
+ this.assertAreSimilar(list, list);
+ }
+
+ /**
+ * Checks if a list containing only an {@link EObject} instance is similar to
+ * another list that contains only a clone of that {@link EObject} instance.
+ */
+ @ParameterizedTest
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @MethodSource("provideAllInitialisers")
+ public void test_AreSimilar_SingleObject_CloneEqual(IJaMoPPEObjectInitialiser initialiser) {
+ var obj = initialiser.instantiate();
+ var objCopy = this.cloneEObj(obj);
+
+ this.assertAreSimilar(this.toList(obj), this.toList(objCopy));
+ }
+
+ /**
+ * Checks if similarity checking returns true, when a list is compared to
+ * itself. The said list contains two different {@link EObject} instances.
+ */
+ @Test
+ public void test_AreSimilar_MultipleObjects_SameReference() {
+ var modInit = new ModuleInitialiser();
+
+ var obj1 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj1, "mod1"));
+
+ var obj2 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj2, "mod2"));
+
+ // Make sure both objects are different
+ this.assertIsSimilar(obj1, obj2, Boolean.FALSE);
+
+ var list = this.toList(obj1, obj2);
+
+ this.assertAreSimilar(list, list);
+ }
+
+ /**
+ * Checks if a list containing 2 different {@link EObject} instances is similar
+ * to another list that is its clone.
+ */
+ @Test
+ public void test_AreSimilar_MultipleObjects_CloneEqual() {
+ var initialiser = new ModuleInitialiser();
+
+ var obj1 = initialiser.instantiate();
+ Assertions.assertTrue(initialiser.setName(obj1, "mod1"));
+
+ var obj2 = initialiser.instantiate();
+ Assertions.assertTrue(initialiser.setName(obj2, "mod2"));
+
+ // Make sure both objects are different
+ this.assertIsSimilar(obj1, obj2, Boolean.FALSE);
+
+ var obj1Copy = this.cloneEObj(obj1);
+ var obj2Copy = this.cloneEObj(obj2);
+
+ this.assertAreSimilar(this.toList(obj1, obj2), this.toList(obj1Copy, obj2Copy));
+ }
+
+ /**
+ * Checks if similarity checking lists of {@link EObject} instances causes
+ * issues, if one side is null.
+ */
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void test_AreSimilar_OneSide_Null() {
+ var initialiser = new ModuleInitialiser();
+ var obj = initialiser.instantiate();
+
+ this.assertAreSimilar(null, this.toList(obj), Boolean.FALSE);
+ }
+
+ /**
+ * Checks if two lists, where one list is empty and the other one is not, are
+ * not similar.
+ */
+ @ParameterizedTest
+ @MethodSource("provideNonAdaptedInitialisers")
+ public void test_AreSimilar_OneSide_EmptyList(IJaMoPPEObjectInitialiser initialiser) {
+ var obj = initialiser.instantiate();
+
+ this.assertAreSimilar(this.toList(), this.toList(obj), Boolean.FALSE);
+ }
+
+ /**
+ * Checks if similarity checking lists of {@link EObject} instances causes
+ * issues, if one of the lists contains a null element.
+ */
+ @Test
+ public void test_AreSimilar_OneSide_ListWithNullElement() {
+ var initialiser = new ModuleInitialiser();
+ var obj = initialiser.instantiate();
+
+ this.assertAreSimilar(this.toList(obj), this.makeListWithSingleNullElement(), Boolean.FALSE);
+ }
+
+ /**
+ * Checks if two lists, where one of them is a sublist of another, are not
+ * similar.
+ */
+ @Test
+ public void test_AreSimilar_OneSide_SubList() {
+ var modInit = new ModuleInitialiser();
+
+ var obj1 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj1, "mod1"));
+
+ var obj2 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj2, "mod2"));
+
+ // Make sure both objects are different
+ this.assertIsSimilar(obj1, obj2, Boolean.FALSE);
+
+ this.assertAreSimilar(this.toList(obj1), this.toList(obj1, obj2), Boolean.FALSE);
+ }
+
+ /**
+ * Checks if similarity checking lists of {@link EObject} instances causes
+ * issues, if both sides are null.
+ */
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void test_AreSimilar_BothSides_Null() {
+ this.assertAreSimilar(null, null);
+ }
+
+ /**
+ * Checks if two empty lists are similar.
+ */
+ @Test
+ public void test_AreSimilar_BothSides_EmptyList() {
+ Assertions.assertTrue(this.areSimilar(this.toList(), this.toList()));
+ }
+
+ /**
+ * Checks if similarity checking lists of {@link EObject} instances causes
+ * issues, if both lists each contain a null element.
+ */
+ @Test
+ public void test_AreSimilar_BothSides_ListsWithNullElement() {
+ this.assertAreSimilar(this.makeListWithSingleNullElement(), this.makeListWithSingleNullElement());
+ }
+
+ /**
+ * Checks whether lists with the same size, same elements (clones of them) but
+ * in different order are successfully identified as different.
+ *
+ * Implemented by cloning and comparing 2
+ * {@link org.emftext.language.java.containers.Module}.
+ */
+ @Test
+ public void test_AreSimilar_SameObjectDifferentOrder() {
+ var modInit = new ModuleInitialiser();
+
+ var obj1 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj1, "mod1"));
+
+ var obj2 = modInit.instantiate();
+ Assertions.assertTrue(modInit.setName(obj2, "mod2"));
+
+ // Make sure both objects are different
+ this.assertIsSimilar(obj1, obj2, Boolean.FALSE);
+
+ this.assertAreSimilar(this.toList(obj1, obj2), this.toList(obj2, obj1), Boolean.FALSE);
+ }
+
+ /**
+ * Checks if two {@link EObject} instances that implement different interfaces
+ * are not similar.
+ */
+ @Test
+ public void test_AreSimilar_ClassMismatch() {
+ var mod = new ModuleInitialiser().instantiate();
+ var pac = new PackageInitialiser().instantiate();
+
+ this.assertAreSimilar(this.toList(mod), this.toList(pac), Boolean.FALSE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java
new file mode 100644
index 0000000000..835b9207a6
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java
@@ -0,0 +1,373 @@
+package cipm.consistency.fitests.similarity.jamopp;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.TreeSet;
+import java.util.stream.Stream;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import jamopp.options.ParserOptions;
+import jamopp.parser.jdt.singlefile.JaMoPPJDTSingleFileParser;
+
+/**
+ * A test class that attempts to parse and check similarity of {@link Resource}
+ * files.
+ *
+ * @author Alp Torac Genc
+ */
+public class SPLevoModelsSimilarityTest extends AbstractJaMoPPSimilarityTest {
+ private static final Logger LOGGER = Logger.getLogger("cipm." + SPLevoModelsSimilarityTest.class.getSimpleName());
+
+ /**
+ * The name of the root directory of the models from SPLevo
+ */
+ private static final String splevoModelImplDirName = "splevo-testmodels";
+ /**
+ * Path to the root folder of the models from SPLevo
+ */
+ private static final String splevoModelImplPath = new File("").getAbsoluteFile().getAbsolutePath() + File.separator
+ + splevoModelImplDirName;
+
+ /**
+ * List of the parent directory of the directories {@link #model1Name} and
+ * {@link #model2Name}.
+ */
+ private static final Collection modelDirs = new ArrayList();
+
+ /**
+ * The first model to parse.
+ */
+ private static final String model1Name = "a";
+ /**
+ * The second model to parse.
+ */
+ private static final String model2Name = "b";
+
+ /**
+ * The path, at which the resource file's URI will point at.
+ */
+ private static Path targetPath = Path
+ .of(new File("").getAbsoluteFile().getAbsolutePath() + File.separator + "testModels");
+
+ /**
+ * Discovers the sub-directories under the root folder of SPLevo tests, which
+ * contain Java source files in folders with certain names, and adds them to a
+ * list.
+ */
+ @BeforeAll
+ public static void setUpBeforeAll() {
+ modelDirs.addAll(discoverFiles(new File(splevoModelImplPath)));
+ }
+
+ /**
+ * Reads the given file and removes line breaks and whitespaces.
+ */
+ private static String readEffectiveCode(File f) throws IOException {
+ var content = Files.readString(f.toPath());
+
+ return content.replaceAll("\\n", "").replaceAll("\\r", "").replaceAll("\\s", "");
+ }
+
+ /**
+ * Compares the equality of the given files based on their effective content.
+ *
+ * @see {@link #readEffectiveCode(File)}
+ */
+ private static boolean filesEqual(File f1, File f2) throws IOException {
+ var f1Content = readEffectiveCode(f1);
+ var f2Content = readEffectiveCode(f2);
+
+ return f1Content.equals(f2Content);
+ }
+
+ /**
+ * Recursively checks the equality of the given directories, based on their
+ * content (i.e. the files/sub-directories they contain and the contents of
+ * those files).
+ *
+ * @see {@link #filesEqual(File, File)}, {@link #readEffectiveCode(File)}
+ */
+ private static boolean dirsEqual(File dir1, File dir2) throws IOException {
+ LOGGER.debug("Comparing: " + dir1.getName() + " and " + dir2.getName());
+
+ // There cannot be 2 files with the same path, name and extension
+ // so using TreeSet, which sorts the files spares doing so here
+ var files1 = new TreeSet();
+ var files2 = new TreeSet();
+
+ for (var f : dir1.listFiles()) {
+ files1.add(f);
+ }
+
+ for (var f : dir2.listFiles()) {
+ files2.add(f);
+ }
+
+ if (files1.size() != files2.size()) {
+ return false;
+ }
+
+ var fileIter1 = files1.iterator();
+ var fileIter2 = files2.iterator();
+
+ for (int i = 0; i < files1.size(); i++) {
+ var f1 = fileIter1.next();
+ var f2 = fileIter2.next();
+
+ if (f1.isDirectory() && f2.isDirectory()) {
+ if (!dirsEqual(f1, f2)) {
+ LOGGER.debug("Directories " + f1.getName() + " and " + f2.getName() + " are not equal");
+ return false;
+ }
+ } else if (f1.isFile() && f2.isFile()) {
+ if (!filesEqual(f1, f2)) {
+ LOGGER.debug("Files " + f1.getName() + " and " + f2.getName() + " are not equal");
+ return false;
+ }
+ } else {
+ LOGGER.debug("Unexpected case there is a file and a directory");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Parses all Java-Model files under the given directory into a {@link Resource}
+ * instance.
+ *
+ * Note: This method will parse ALL such files. Therefore, the given model
+ * directory should only contain one Java-Model.
+ *
+ * @param modelDir The directory that contains the Java-model files
+ */
+ private static Resource parseModelsDir(Path modelDir) {
+ // Leave out commented options
+ ParserOptions.CREATE_LAYOUT_INFORMATION.setValue(Boolean.FALSE);
+ ParserOptions.REGISTER_LOCAL.setValue(Boolean.TRUE);
+// ParserOptions.RESOLVE_EVERYTHING.setValue(Boolean.TRUE);
+// ParserOptions.RESOLVE_ALL_BINDINGS.setValue(Boolean.TRUE);
+
+ JaMoPPJDTSingleFileParser parser = new JaMoPPJDTSingleFileParser();
+ parser.setResourceSet(new ResourceSetImpl());
+ ResourceSet resourceSet = parser.parseDirectory(modelDir);
+
+ ResourceSet next = new ResourceSetImpl();
+ Resource all = next.createResource(URI.createFileURI(targetPath.toAbsolutePath().toString()));
+
+ var filteredResources = new ArrayList();
+ resourceSet.getResources().stream().filter((r) -> r.getURI().path().contains(splevoModelImplDirName))
+ .forEach((r) -> filteredResources.add(r));
+
+ for (Resource r : filteredResources) {
+ // Filter Resources in ResourceSet that belong in the modelDir (based on URI)
+ all.getContents().addAll(r.getContents());
+ }
+ return all;
+ }
+
+ /**
+ * Recursively searches for directories that contain Java-model files. All
+ * directories with pre-defined model names (currently {@link #model1Name} and
+ * {@link #model2name}) will be added to foundModelDirs, if not already there.
+ *
+ * @param dirToDiscover The directory, where the recursive search will begin
+ * @param foundModelDirs A collection of directories that contain Java-model
+ * files
+ */
+ private static void discoverFiles(File dirToDiscover, Collection foundModelDirs) {
+ if (dirToDiscover != null && dirToDiscover.isDirectory()) {
+ var discovered = new ArrayList();
+
+ for (var f : dirToDiscover.listFiles()) {
+ if (!f.getName().equals(model1Name) && !f.getName().equals(model2Name)) {
+ discovered.add(f);
+ } else if (!foundModelDirs.contains(dirToDiscover.toPath())) {
+ foundModelDirs.add(dirToDiscover.toPath());
+ }
+ }
+
+ discovered.forEach((d) -> discoverFiles(d, foundModelDirs));
+ }
+ }
+
+ /**
+ * Recursively searches for directories containing Java-Model files, starting
+ * from the given directory, and returns a list of all such directories.
+ */
+ private static Collection discoverFiles(File dirToDiscover) {
+ var foundModelDirs = new ArrayList();
+ discoverFiles(dirToDiscover, foundModelDirs);
+ return foundModelDirs;
+ }
+
+ private static String getDisplayName(Path path) {
+ var nameCount = path.getNameCount();
+
+ var startIndex = nameCount > 2 ? nameCount - 2 : nameCount - 1;
+ var endIndex = nameCount;
+
+ return path.subpath(startIndex, endIndex).toString();
+ }
+
+ /**
+ * Creates and returns parameters for
+ * {@link #sameResourceSimilarityTest(Resource, Resource, Boolean, String)}.
+ */
+ private static Stream generateReferenceEqualityTestParams() {
+ var args = new ArrayList();
+
+ modelDirs.forEach((md) -> {
+ var model1Path = Paths.get(md.toString(), model1Name);
+ var model2Path = Paths.get(md.toString(), model2Name);
+
+ var res1 = parseModelsDir(model1Path);
+ var res2 = parseModelsDir(model2Path);
+
+ args.add(Arguments.of(res1, res1, true, getDisplayName(model1Path)));
+ args.add(Arguments.of(res2, res2, true, getDisplayName(model2Path)));
+ });
+
+ return args.stream();
+ }
+
+ /**
+ * Creates and returns parameters for
+ * {@link #sameFileSimilarityTest(Resource, Resource, Boolean, String)}.
+ */
+ private static Stream generateEqualityTestParams() {
+ var args = new ArrayList();
+
+ modelDirs.forEach((md) -> {
+ var model1Path = Paths.get(md.toString(), model1Name);
+ var model2Path = Paths.get(md.toString(), model2Name);
+
+ var res11 = parseModelsDir(model1Path);
+ var res12 = parseModelsDir(model1Path);
+
+ var res21 = parseModelsDir(model2Path);
+ var res22 = parseModelsDir(model2Path);
+
+ args.add(Arguments.of(res11, res12, true, getDisplayName(model1Path)));
+ args.add(Arguments.of(res21, res22, true, getDisplayName(model2Path)));
+ });
+
+ return args.stream();
+ }
+
+ /**
+ * Creates and returns parameters for
+ * {@link #differentFileSimilarityTest(Resource, Resource, Boolean, String)}.
+ */
+ private static Stream generateUnsimilarityTestParams() {
+ var args = new ArrayList();
+
+ modelDirs.forEach((md) -> {
+ var modelDirName = md.getName(md.getNameCount() - 1).toString();
+
+ var model1Path = Paths.get(md.toString(), model1Name);
+ var model2Path = Paths.get(md.toString(), model2Name);
+
+ var contentEquality = false;
+
+ try {
+ contentEquality = dirsEqual(model1Path.toFile(), model2Path.toFile());
+ } catch (IOException e) {
+ LOGGER.debug("Could not read paths: " + model1Path.toString() + " and " + model2Path.toString());
+ Assertions.fail();
+ }
+
+ LOGGER.debug(md.getFileName() + " contents equal: " + contentEquality);
+
+ var res1 = parseModelsDir(model1Path);
+ var res2 = parseModelsDir(model2Path);
+
+ args.add(Arguments.of(res1, res2, contentEquality,
+ modelDirName + " (" + model1Name + " and " + model2Name + ")"));
+ });
+
+ return args.stream();
+ }
+
+ /**
+ * Checks whether the given {@link Resource} instances are similar, based on
+ * {@code res_i.getAllContents()}
+ */
+ protected void testSimilarity(Resource res1, Resource res2, Boolean areSimilar) {
+ var list1 = new ArrayList();
+ var list2 = new ArrayList();
+
+ // Java files, which are not in proper project settings,
+ // can result in similarity checking issues, if resource.getContents()
+ // is used to return the EObject contents.
+ // getAllContents() bypasses this, as it makes sure that everything
+ // is visited.
+ res1.getAllContents().forEachRemaining((o) -> list1.add(o));
+ res2.getAllContents().forEachRemaining((o) -> list2.add(o));
+
+ Assertions.assertEquals(areSimilar, this.areSimilar(list1, list2));
+ }
+
+ /**
+ * Checks if parsed {@link Resource} instances are detected as similar. Checks
+ * the similarity of res1 with itself (same reference) and res2 with itself
+ * (same reference).
+ *
+ * @param res1 The first {@link Resource} instance
+ * @param res2 The second {@link Resource} instance
+ * @param areSimilar Expected similarity value
+ * @param displayName The display name of the test
+ */
+ @ParameterizedTest(name = "{3}")
+ @MethodSource({ "generateReferenceEqualityTestParams" })
+ public void sameResourceSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) {
+ this.testSimilarity(res1, res2, areSimilar);
+ }
+
+ /**
+ * Checks if parsed {@link Resource} instances are detected as similar. Checks
+ * the similarity of res1 with its clone and res2 with its clone.
+ *
+ * @param res1 The first {@link Resource} instance
+ * @param res2 The second {@link Resource} instance
+ * @param areSimilar Expected similarity value
+ * @param displayName The display name of the test
+ */
+ @ParameterizedTest(name = "{3}")
+ @MethodSource({ "generateEqualityTestParams" })
+ public void sameFileSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) {
+ this.testSimilarity(res1, res2, areSimilar);
+ }
+
+ /**
+ * Checks if parsed {@link Resource} instances are detected as similar. Checks
+ * the similarity of res1 with res2.
+ *
+ * @param res1 The first {@link Resource} instance
+ * @param res2 The second {@link Resource} instance
+ * @param areSimilar Expected similarity value
+ * @param displayName The display name of the test
+ */
+ @ParameterizedTest(name = "{3}")
+ @MethodSource({ "generateUnsimilarityTestParams" })
+ public void differentFileSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) {
+ this.testSimilarity(res1, res2, areSimilar);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java
new file mode 100644
index 0000000000..a940456970
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * Contains test classes that can be used to test the similarity checking of
+ * Java-model elements, which are stored and represented by {@link EObject}
+ * implementors present in JaMoPP.
+ */
+package cipm.consistency.fitests.similarity.jamopp;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java
new file mode 100644
index 0000000000..2169814275
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.params;
+
+import cipm.consistency.initialisers.IInitialiserBase;
+import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser;
+import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser;
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser;
+import cipm.consistency.initialisers.jamopp.initadapters.BlockContainerInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.ClassMethodInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.ConcreteClassifierInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.IdentifierReferenceInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.MemberInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.NamedElementInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.initadapters.NewConstructorCallInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.instantiations.INewConstructorCallInitialiser;
+import cipm.consistency.initialisers.jamopp.members.IClassMethodInitialiser;
+import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IIdentifierReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.BlockInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser;
+import cipm.consistency.fitests.similarity.params.IInitialiserParameterAdaptationStrategy;
+
+/**
+ * A concrete implementation of {@link IInitialiserParameterAdaptationStrategy}.
+ *
+ *
+ * Adapts the given {@link IInitialiserBase} instances in a way that interface
+ * tests can run without exceptions being thrown, due to objects they
+ * instantiate missing certain components.
+ */
+public class JaMoPPInitialiserParameterAdaptationStrategy implements IInitialiserParameterAdaptationStrategy {
+ @Override
+ public void adaptAdaptableInitialiser(IInitialiserBase init) {
+ if (INamedElementInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new NamedElementInitialiserAdapter());
+ }
+ if (IBlockContainerInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new BlockContainerInitialiserAdapter(new BlockInitialiser()));
+ }
+ if (IMemberInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new MemberInitialiserAdapter(new ClassInitialiser()));
+ }
+ if (IConcreteClassifierInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new ConcreteClassifierInitialiserAdapter(new CompilationUnitInitialiser()));
+ }
+ if (INewConstructorCallInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new NewConstructorCallInitialiserAdapter(new ClassifierReferenceInitialiser(),
+ new ClassInitialiser()));
+ }
+ if (IClassMethodInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new ClassMethodInitialiserAdapter(new BlockInitialiser()));
+ }
+ if (IIdentifierReferenceInitialiser.class.isAssignableFrom(init.getClass())) {
+ init.addAdaptingStrategy(new IdentifierReferenceInitialiserAdapter());
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java
new file mode 100644
index 0000000000..40a26892e0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java
@@ -0,0 +1,23 @@
+package cipm.consistency.fitests.similarity.jamopp.params;
+
+import cipm.consistency.initialisers.IInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.JaMoPPInitialiserPackage;
+import cipm.consistency.fitests.similarity.params.IInitialiserParameterAdaptationStrategy;
+import cipm.consistency.fitests.similarity.params.IInitialiserParameters;
+
+/**
+ * A class that provides central access to concrete initialiser instances.
+ *
+ * @author Alp Torac Genc
+ */
+public class JaMoPPInitialiserParameters implements IInitialiserParameters {
+ @Override
+ public IInitialiserPackage getUsedInitialiserPackage() {
+ return new JaMoPPInitialiserPackage();
+ }
+
+ @Override
+ public IInitialiserParameterAdaptationStrategy getAdaptationStrategy() {
+ return new JaMoPPInitialiserParameterAdaptationStrategy();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java
new file mode 100644
index 0000000000..c52d700499
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java
@@ -0,0 +1,296 @@
+package cipm.consistency.fitests.similarity.jamopp.params;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.emftext.language.java.arrays.ArrayInstantiation;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.commons.CommonsPackage;
+import org.emftext.language.java.containers.ContainersPackage;
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.containers.EmptyModel;
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters;
+import org.emftext.language.java.expressions.InstanceOfExpression;
+import org.emftext.language.java.expressions.NestedExpression;
+import org.emftext.language.java.expressions.SingleImplicitLambdaParameter;
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.QualifiedTypeArgument;
+import org.emftext.language.java.imports.ClassifierImport;
+import org.emftext.language.java.imports.ImportsPackage;
+import org.emftext.language.java.imports.PackageImport;
+import org.emftext.language.java.imports.StaticClassifierImport;
+import org.emftext.language.java.instantiations.Instantiation;
+import org.emftext.language.java.instantiations.InstantiationsPackage;
+import org.emftext.language.java.instantiations.NewConstructorCall;
+import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments;
+import org.emftext.language.java.members.AdditionalField;
+import org.emftext.language.java.members.EnumConstant;
+import org.emftext.language.java.members.MembersPackage;
+import org.emftext.language.java.modifiers.ModifiersPackage;
+import org.emftext.language.java.modules.ModulesPackage;
+import org.emftext.language.java.modules.ProvidesModuleDirective;
+import org.emftext.language.java.modules.UsesModuleDirective;
+import org.emftext.language.java.parameters.ParametersPackage;
+import org.emftext.language.java.references.MethodCall;
+import org.emftext.language.java.references.PackageReference;
+import org.emftext.language.java.references.PrimitiveTypeReference;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.emftext.language.java.references.ReflectiveClassReference;
+import org.emftext.language.java.references.SelfReference;
+import org.emftext.language.java.references.StringReference;
+import org.emftext.language.java.references.TextBlockReference;
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.StatementListContainer;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.types.InferableType;
+import org.emftext.language.java.types.PrimitiveType;
+import org.emftext.language.java.types.TypesPackage;
+import org.emftext.language.java.variables.VariablesPackage;
+
+import cipm.consistency.fitests.similarity.params.AbstractSimilarityValues;
+import cipm.consistency.fitests.similarity.params.ISimilarityValues;
+
+/**
+ * Contains expected similarity values for tests, in which a certain attribute
+ * is different.
+ *
+ * Entries for directly matching entries will take precedence over entries of
+ * their parent types. If the behaviour of a certain type differs from its
+ * parents' and/or sibling types, an entry can be created to account for it.
+ * This spares having to create explicit entries for everything in a part of the
+ * hierarchy, if there are small deviations.
+ *
+ * To spare creating entries for every possibility, a default similarity value
+ * can be defined by using {@link #setDefaultSimilarityResult(Boolean)}. If
+ * there are no entries for a specific attribute, the default similarity value
+ * will be assumed. The default value is null, if not explicitly defined.
+ *
+ * @see {@link ISimilarityValues} for more information on the methods used
+ * below.
+ * @see {@link AbstractSimilarityValues}
+ */
+public class JaMoPPSimilarityValues extends AbstractSimilarityValues {
+ public void addAnnotationsSimilarityEntries() {
+ this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS, Boolean.TRUE);
+ this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE, Boolean.TRUE);
+ this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER, Boolean.TRUE);
+ this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS, Boolean.TRUE);
+ this.addSimilarityEntry(AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE, Boolean.TRUE);
+ }
+
+ public void addArraysSimilarityEntries() {
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES, Boolean.TRUE);
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES, Boolean.TRUE);
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER, Boolean.TRUE);
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_SELECTOR__POSITION, Boolean.TRUE);
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER, Boolean.TRUE);
+ this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE, Boolean.TRUE);
+ }
+
+ public void addContainersSimilarityEntries() {
+ this.addSimilarityEntry(ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.MODULE__OPEN, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.MODULE__PACKAGES, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.MODULE__TARGET, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.PACKAGE__CLASSIFIERS, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.PACKAGE__MODULE, Boolean.TRUE);
+ this.addSimilarityEntry(ContainersPackage.Literals.JAVA_ROOT__ORIGIN, Boolean.TRUE);
+ }
+
+ public void addCommonsSimilarityEntries() {
+ this.addSimilarityEntry(new Class[] { AdditionalField.class, Package.class, Block.class },
+ CommonsPackage.Literals.NAMED_ELEMENT__NAME, Boolean.TRUE);
+ this.addSimilarityEntry(new Class[] { PackageImport.class, StaticClassifierImport.class, Module.class },
+ CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES, Boolean.TRUE);
+ this.addSimilarityEntry(new Class[] { EmptyModel.class, PackageReference.class },
+ new EStructuralFeature[] { CommonsPackage.Literals.NAMED_ELEMENT__NAME,
+ CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES },
+ new Boolean[] { Boolean.TRUE, Boolean.TRUE });
+ }
+
+ public void addClassifiersSimilarityEntries() {
+ this.addSimilarityEntry(ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.CLASS__EXTENDS, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.ENUMERATION__CONSTANTS, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifiersPackage.Literals.INTERFACE__EXTENDS, Boolean.TRUE);
+ }
+
+ public void addExpressionsSimilarityEntries() {
+ this.addSimilarityEntry(ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY, Boolean.TRUE);
+ this.addSimilarityEntry(ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS, Boolean.TRUE);
+ }
+
+ public void addGenericsSimilarityEntries() {
+ this.addSimilarityEntry(GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS, Boolean.TRUE);
+ this.addSimilarityEntry(GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS, Boolean.TRUE);
+ this.addSimilarityEntry(GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS, Boolean.TRUE);
+ }
+
+ public void addInstantiationsSimilarityEntries() {
+ this.addSimilarityEntry(InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS, Boolean.TRUE);
+ this.addSimilarityEntry(InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE, Boolean.TRUE);
+ }
+
+ public void addImportsSimilarityEntries() {
+ this.addSimilarityEntry(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS, Boolean.TRUE);
+ this.addSimilarityEntry(ImportsPackage.Literals.IMPORT__CLASSIFIER, Boolean.TRUE);
+ this.addSimilarityEntry(ImportsPackage.Literals.STATIC_IMPORT__STATIC, Boolean.TRUE);
+ this.addSimilarityEntry(ClassifierImport.class, ImportsPackage.Literals.IMPORT__CLASSIFIER, Boolean.FALSE);
+ }
+
+ public void addMembersSimilarityEntries() {
+ this.addSimilarityEntry(MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS, Boolean.TRUE);
+ this.addSimilarityEntry(MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS, Boolean.TRUE);
+ this.addSimilarityEntry(MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE, Boolean.TRUE);
+ this.addSimilarityEntry(MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS, Boolean.TRUE);
+ this.addSimilarityEntry(MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS, Boolean.TRUE);
+ this.addSimilarityEntry(MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS, Boolean.TRUE);
+ }
+
+ public void addModifiersSimilarityEntries() {
+ this.addSimilarityEntry(ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ModifiersPackage.Literals.MODIFIABLE__MODIFIERS, Boolean.TRUE);
+ }
+
+ public void addModulesSimilarityEntries() {
+ this.addSimilarityEntry(ModulesPackage.Literals.MODULE_REFERENCE__TARGET, Boolean.TRUE);
+ this.addSimilarityEntry(ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS, Boolean.TRUE);
+ this.addSimilarityEntry(ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER, Boolean.TRUE);
+ this.addSimilarityEntry(ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE,
+ Boolean.TRUE);
+ this.addSimilarityEntry(ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES, Boolean.TRUE);
+ }
+
+ public void addStatementsSimilarityEntries() {
+ this.addSimilarityEntry(StatementsPackage.Literals.ASSERT__ERROR_MESSAGE, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.CONDITION__ELSE_STATEMENT, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.FOR_EACH_LOOP__NEXT, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.FOR_LOOP__INIT, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.FOR_LOOP__UPDATES, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.SWITCH__CASES, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.THROW__THROWABLE, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__RESOURCES, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK, Boolean.TRUE);
+ this.addSimilarityEntry(StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT, Boolean.TRUE);
+ this.addSimilarityEntry(StatementListContainer.class, StatementsPackage.Literals.BLOCK__STATEMENTS,
+ Boolean.TRUE);
+ }
+
+ public void addParametersSimilarityEntries() {
+ this.addSimilarityEntry(ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES, Boolean.TRUE);
+ this.addSimilarityEntry(ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE, Boolean.TRUE);
+ this.addSimilarityEntry(ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE, Boolean.TRUE);
+ this.addSimilarityEntry(
+ new Class[] { ExplicitlyTypedLambdaParameters.class, ImplicitlyTypedLambdaParameters.class,
+ SingleImplicitLambdaParameter.class },
+ ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS, Boolean.TRUE);
+ }
+
+ public void addReferencesSimilarityEntries() {
+ this.addSimilarityEntry(ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE, Boolean.TRUE);
+ this.addSimilarityEntry(ReferencesPackage.Literals.SELF_REFERENCE__SELF, Boolean.TRUE);
+ this.addSimilarityEntry(ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE, Boolean.TRUE);
+ this.addSimilarityEntry(ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET, Boolean.TRUE);
+ this.addSimilarityEntry(EnumConstant.class, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS, Boolean.TRUE);
+ this.addSimilarityEntry(MethodCall.class, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS, Boolean.TRUE);
+ this.addSimilarityEntry(
+ new Class[] { ArrayInstantiation.class, NestedExpression.class, Instantiation.class,
+ PrimitiveTypeReference.class, ReflectiveClassReference.class, SelfReference.class,
+ StringReference.class, TextBlockReference.class },
+ new EStructuralFeature[] { ReferencesPackage.Literals.REFERENCE__NEXT,
+ ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS },
+ new Boolean[] { Boolean.TRUE, Boolean.TRUE });
+ }
+
+ public void addTypesSimilarityEntries() {
+ this.addSimilarityEntry(new Class[] { InferableType.class, PrimitiveType.class },
+ TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET, Boolean.TRUE);
+ this.addSimilarityEntry(TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS, Boolean.TRUE);
+ this.addSimilarityEntry(TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE, Boolean.TRUE);
+ this.addSimilarityEntry(
+ new Class[] { InstanceOfExpression.class, QualifiedTypeArgument.class, NewConstructorCall.class,
+ NewConstructorCallWithInferredTypeArguments.class, ProvidesModuleDirective.class,
+ UsesModuleDirective.class },
+ TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE, Boolean.FALSE);
+ }
+
+ public void addVariablesSimilarityEntries() {
+ this.addSimilarityEntry(VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES, Boolean.TRUE);
+ }
+
+ public void setDefaultSimilarityResult() {
+ this.setDefaultSimilarityResult(Boolean.FALSE);
+ }
+
+ public JaMoPPSimilarityValues() {
+ this.setDefaultSimilarityResult();
+
+ this.addAnnotationsSimilarityEntries();
+ this.addArraysSimilarityEntries();
+ this.addContainersSimilarityEntries();
+ this.addCommonsSimilarityEntries();
+ this.addClassifiersSimilarityEntries();
+ this.addExpressionsSimilarityEntries();
+ this.addGenericsSimilarityEntries();
+ this.addInstantiationsSimilarityEntries();
+ this.addImportsSimilarityEntries();
+ this.addMembersSimilarityEntries();
+ this.addModifiersSimilarityEntries();
+ this.addModulesSimilarityEntries();
+ this.addStatementsSimilarityEntries();
+ this.addParametersSimilarityEntries();
+ this.addReferencesSimilarityEntries();
+ this.addTypesSimilarityEntries();
+ this.addVariablesSimilarityEntries();
+ }
+
+ /**
+ * @return The type of the class that has the attribute attr.
+ */
+ protected Class extends Object> getClassFromStructuralFeature(Object attr) {
+ return (Class extends Object>) ((EStructuralFeature) attr).getContainerClass();
+ }
+
+ @Override
+ public void addSimilarityEntry(Object attr, Boolean expectedSimResult) {
+ this.addSimilarityEntry(this.getClassFromStructuralFeature(attr), attr, expectedSimResult);
+ }
+
+ @Override
+ public Boolean getExpectedSimilarityResult(Object attr) {
+ return this.getExpectedSimilarityResult(this.getClassFromStructuralFeature(attr), attr);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java
new file mode 100644
index 0000000000..b1dac455c5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains implementations of interfaces from
+ * {@link cipm.consistency.fitests.similarity.params} for JaMoPP.
+ */
+package cipm.consistency.fitests.similarity.jamopp.params;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java
new file mode 100644
index 0000000000..7750a7c33f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java
@@ -0,0 +1,25 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.members.AdditionalField;
+
+import cipm.consistency.initialisers.jamopp.members.AdditionalFieldInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AdditionalField} instances.
+ *
+ * Contains methods that can be used to create {@link AdditionalField}
+ * instances.
+ */
+public interface UsesAdditionalFields {
+ /**
+ * @param The name of the instance to be constructed
+ * @return A minimal {@link AdditionalField} instance with the given parameter.
+ */
+ public default AdditionalField createMinimalAF(String afName) {
+ var afInit = new AdditionalFieldInitialiser();
+ var af = afInit.instantiate();
+ afInit.setName(af, afName);
+ return af;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java
new file mode 100644
index 0000000000..ebcff93ade
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java
@@ -0,0 +1,26 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.variables.AdditionalLocalVariable;
+
+import cipm.consistency.initialisers.jamopp.variables.AdditionalLocalVariableInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AdditionalLocalVariable} instances.
+ *
+ * Contains methods that can be used to create {@link AdditionalLocalVariable}
+ * instances.
+ */
+public interface UsesAdditionalLocalVariables {
+ /**
+ * @param alvName The name of the instance to be constructed
+ * @return A minimal {@link AdditionalLocalVariable} instance with the given
+ * parameter.
+ */
+ public default AdditionalLocalVariable createMinimalALV(String alvName) {
+ var alvInit = new AdditionalLocalVariableInitialiser();
+ var alv = alvInit.instantiate();
+ alvInit.setName(alv, alvName);
+ return alv;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java
new file mode 100644
index 0000000000..51f3e1e87e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java
@@ -0,0 +1,59 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.members.InterfaceMethod;
+
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationAttributeSettingInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AnnotationAttributeSetting} instances.
+ *
+ * Contains methods that can be used to create
+ * {@link AnnotationAttributeSetting} instances.
+ */
+public interface UsesAnnotationAttributeSettings extends UsesAnnotationValues {
+ /**
+ * @param im The attribute of the instance to be constructed.
+ * @param val The value of the instance to be constructed.
+ *
+ * @return An {@link AnnotationAttributeSetting} instance with the given
+ * attribute and value.
+ */
+ public default AnnotationAttributeSetting createAAS(InterfaceMethod im, AnnotationValue val) {
+ var aasInit = new AnnotationAttributeSettingInitialiser();
+ var aas = aasInit.instantiate();
+ aasInit.setAttribute(aas, im);
+ aasInit.setValue(aas, val);
+ return aas;
+ }
+
+ /**
+ * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)}, where the
+ * first parameter is null and the second parameter constructed using
+ * {@link #createMinimalSR(String)}.
+ *
+ * @param val See {@link #createMinimalSR(String)}
+ */
+ public default AnnotationAttributeSetting createStringAAS(String val) {
+ return this.createAAS(null, this.createMinimalSR(val));
+ }
+
+ /**
+ * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)} where both
+ * parameters are null.
+ */
+ public default AnnotationAttributeSetting createEmptyAAS() {
+ return this.createAAS(null, null);
+ }
+
+ /**
+ * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)}, where the
+ * first parameter is null and the second parameter is constructed using
+ * {@link #createNullLiteral()}.
+ */
+ public default AnnotationAttributeSetting createNullAAS() {
+ return this.createAAS(null, this.createNullLiteral());
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java
new file mode 100644
index 0000000000..a44838d358
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java
@@ -0,0 +1,39 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.classifiers.Classifier;
+
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationInstanceInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AnnotationInstance} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationInstance}
+ * instances.
+ */
+public interface UsesAnnotationInstances extends UsesAnnotations {
+ /**
+ * @param aiNss The namespaces of the instance to be constructed.
+ * @param aiAnnotation The annotation of the instance to be constructed.
+ * @return An {@link AnnotationInstance} with the given parameters.
+ */
+ public default AnnotationInstance createMinimalAI(String[] aiNss, Classifier aiAnnotation) {
+ var aii = new AnnotationInstanceInitialiser();
+ AnnotationInstance ai = aii.instantiate();
+ aii.addNamespaces(ai, aiNss);
+ aii.setAnnotation(ai, aiAnnotation);
+ return ai;
+ }
+
+ /**
+ * A variant of {@link #createMinimalAI(String[], Classifier)}, where
+ * {@link #createMinimalAnnotation(String)} is used to construct
+ * {@link Classifier} parameter.
+ *
+ * @param annotationName See {@link #createMinimalAnnotation(String)}
+ */
+ public default AnnotationInstance createMinimalAI(String[] aiNss, String annotationName) {
+ return this.createMinimalAI(aiNss, this.createMinimalAnnotation(annotationName));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java
new file mode 100644
index 0000000000..9338c848ad
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java
@@ -0,0 +1,48 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.annotations.SingleAnnotationParameter;
+
+import cipm.consistency.initialisers.jamopp.annotations.SingleAnnotationParameterInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AnnotationParameter} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationParameter}
+ * instances.
+ */
+public interface UsesAnnotationParameters extends UsesAnnotationValues {
+ /**
+ * @param val The value of the instance to be constructed
+ * @return A {@link SingleAnnotationParameter} instance with the given
+ * parameter.
+ */
+ public default SingleAnnotationParameter createSingleAnnoParam(AnnotationValue val) {
+ var init = new SingleAnnotationParameterInitialiser();
+ SingleAnnotationParameter result = init.instantiate();
+ init.setValue(result, val);
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createSingleAnnoParam(AnnotationValue)}, where the
+ * parameter is constructed using {@link #createMinimalSR(String)}.
+ *
+ * @param val See {@link #createMinimalSR(String)}
+ */
+ public default SingleAnnotationParameter createSingleStrAnnoParam(String val) {
+ return this.createSingleAnnoParam(this.createMinimalSR(val));
+ }
+
+ /**
+ * A variant of {@link #createSingleAnnoParam(AnnotationValue)}, where the
+ * parameter is a {@link NullLiteral}.
+ *
+ * @see {@link #createNullLiteral()}
+ */
+ public default SingleAnnotationParameter createSingleNullAnnoParam() {
+ return this.createSingleAnnoParam(this.createNullLiteral());
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java
new file mode 100644
index 0000000000..2cc1f7095e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java
@@ -0,0 +1,14 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AnnotationValue} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationValue}
+ * instances.
+ */
+public interface UsesAnnotationValues extends UsesReferences, UsesLiterals {
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java
new file mode 100644
index 0000000000..2872cc3c4d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java
@@ -0,0 +1,24 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.classifiers.Annotation;
+
+import cipm.consistency.initialisers.jamopp.classifiers.AnnotationInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Annotation} instances.
+ *
+ * Contains methods that can be used to create {@link Annotation} instances.
+ */
+public interface UsesAnnotations {
+ /**
+ * @param annotationName The name of the instance to be constructed
+ * @return An {@link Annotation} instance with the given parameter.
+ */
+ public default Annotation createMinimalAnnotation(String annotationName) {
+ var ai = new AnnotationInitialiser();
+ Annotation result = ai.instantiate();
+ ai.setName(result, annotationName);
+ return result;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java
new file mode 100644
index 0000000000..1362297003
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java
@@ -0,0 +1,37 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+
+import cipm.consistency.initialisers.jamopp.classifiers.AnonymousClassInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link AnonymousClass} instances.
+ *
+ * Contains methods that can be used to create {@link AnonymousClass} instances.
+ */
+public interface UsesAnonymousClasses extends UsesMethods {
+ /**
+ * @param methodName See {@link #createMinimalClsMethodWithNullReturn(String)}
+ *
+ * @return An {@link AnonymousClass} instance with a {@link Member} constructed
+ * using {@link #createMinimalClsMethodWithNullReturn(String)}.
+ *
+ */
+ public default AnonymousClass createMinimalAnonymousClassWithMethod(String methodName) {
+ var acInit = new AnonymousClassInitialiser();
+ var ac = this.createMinimalAnonymousClass();
+ acInit.addMember(ac, this.createMinimalClsMethodWithNullReturn(methodName));
+ return ac;
+ }
+
+ /**
+ * @return A minimal {@link AnonymousClass} instance.
+ */
+ public default AnonymousClass createMinimalAnonymousClass() {
+ var acInit = new AnonymousClassInitialiser();
+ var ac = acInit.instantiate();
+ return ac;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java
new file mode 100644
index 0000000000..7083aee070
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.arrays.ArrayDimension;
+
+import cipm.consistency.initialisers.jamopp.arrays.ArrayDimensionInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ArrayDimension} instances.
+ *
+ * Contains methods that can be used to create {@link ArrayDimension}
+ * instances.
+ */
+public interface UsesArrayDimensions extends UsesAnnotationInstances {
+ /**
+ * @return An uninitialised {@link ArrayDimension} instance.
+ */
+ public default ArrayDimension createMinimalArrayDimension() {
+ var init = new ArrayDimensionInitialiser();
+ var result = init.instantiate();
+ return result;
+ }
+
+ /**
+ * @return An {@link ArrayDimension} instance with the given {@link AnnotationInstance} array.
+ */
+ public default ArrayDimension createArrayDimension(AnnotationInstance[] ais) {
+ var result = this.createMinimalArrayDimension();
+ var init = new ArrayDimensionInitialiser();
+ init.addAnnotations(result, ais);
+ return result;
+ }
+
+ /**
+ * @return An {@link ArrayDimension} instance that has an {@link AnnotationInstance} with
+ * the given namespace and instance name.
+ */
+ public default ArrayDimension createArrayDimension(String[] annotationInstanceNamespaces,
+ String annotationInstanceName) {
+ return this.createArrayDimension(new AnnotationInstance[] {
+ this.createMinimalAI(annotationInstanceNamespaces, annotationInstanceName) });
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java
new file mode 100644
index 0000000000..e9afa89493
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java
@@ -0,0 +1,36 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.arrays.ArrayInitializationValue;
+import org.emftext.language.java.arrays.ArrayInitializer;
+import org.emftext.language.java.expressions.Expression;
+
+import cipm.consistency.initialisers.jamopp.arrays.ArrayInitializerInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ArrayInitializer} instances.
+ *
+ * Contains methods that can be used to create {@link ArrayInitializer}
+ * instances.
+ */
+public interface UsesArrayInitializers {
+ /**
+ * @param aivs The values of the instance to be constructed
+ * @return An {@link ArrayInitializer} with the given parameter
+ */
+ public default ArrayInitializer createMinimalArrayInitializer(ArrayInitializationValue[] aivs) {
+ var init = new ArrayInitializerInitialiser();
+ ArrayInitializer result = init.instantiate();
+ init.addInitialValues(result, aivs);
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalArrayInitializer(ArrayInitializationValue[])}, where the
+ * parameter is an array containing only one {@link ArrayInitializationValue}.
+ */
+ public default ArrayInitializer createMinimalArrayInitializer(Expression aiv) {
+ return this.createMinimalArrayInitializer(new ArrayInitializationValue[] { aiv });
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java
new file mode 100644
index 0000000000..c9745f7751
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java
@@ -0,0 +1,33 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.expressions.Expression;
+
+import cipm.consistency.initialisers.jamopp.arrays.ArraySelectorInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ArraySelector} instances.
+ *
+ * Contains methods that can be used to create {@link ArraySelector} instances.
+ */
+public interface UsesArraySelectors extends UsesExpressions {
+ /**
+ * @param asPos The position of the instance to be constructed
+ * @return An {@link ArraySelector} instance with the given parameter.
+ */
+ public default ArraySelector createAS(Expression asPos) {
+ var init = new ArraySelectorInitialiser();
+ var as = init.instantiate();
+ init.setPosition(as, asPos);
+ return as;
+ }
+
+ /**
+ * A variant of {@link #createAS(Expression)}, where the parameter is wrapped
+ * using {@link #createDecimalIntegerLiteral(int)}.
+ */
+ public default ArraySelector createMinimalAS(int asPos) {
+ return this.createAS(this.createDecimalIntegerLiteral(asPos));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java
new file mode 100644
index 0000000000..b418f2ec5f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java
@@ -0,0 +1,39 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.statements.CatchBlock;
+
+import cipm.consistency.initialisers.jamopp.statements.CatchBlockInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link CatchBlock} instances.
+ *
+ * Contains methods that can be used to create {@link CatchBlock} instances.
+ */
+public interface UsesCatchBlocks extends UsesParameters {
+ /**
+ * @param cbParam The parameter of the instance to be constructed
+ * @return A {@link CatchBlock} instance with the given parameter
+ */
+ public default CatchBlock createMinimalCB(OrdinaryParameter cbParam) {
+ var cbInit = new CatchBlockInitialiser();
+ var cb = cbInit.instantiate();
+ cbInit.setParameter(cb, cbParam);
+ return cb;
+ }
+
+ /**
+ * A variant of {@link #createMinimalCB(OrdinaryParameter)}, where the parameter
+ * is constructed using
+ * {@link #createMinimalOrdParamWithClsTarget(String, String)}.
+ *
+ * @param paramName See
+ * {@link #createMinimalOrdParamWithClsTarget(String, String)}
+ * @param targetName See
+ * {@link #createMinimalOrdParamWithClsTarget(String, String)}
+ */
+ public default CatchBlock createMinimalCB(String paramName, String targetName) {
+ return this.createMinimalCB(this.createMinimalOrdParamWithClsTarget(paramName, targetName));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java
new file mode 100644
index 0000000000..1940ad1498
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java
@@ -0,0 +1,129 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+
+import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser;
+import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser;
+import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser;
+
+import org.emftext.language.java.classifiers.Class;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ConcreteClassifier} instances.
+ *
+ * Contains methods that can be used to create {@link ConcreteClassifier}
+ * instances.
+ */
+public interface UsesConcreteClassifiers extends UsesPackages, UsesNames {
+ /**
+ * @return A {@link Class} instance without setting any of its attributes
+ */
+ public default Class createMinimalClass() {
+ return new ClassInitialiser().instantiate();
+ }
+
+ /**
+ * @return A {@link Class} instance contained in a {@link CompilationUnit}
+ * instance. Attributes of neither the {@link Class} instance nor the
+ * {@link CompilationUnit} instance are set.
+ */
+ public default Class createMinimalClassWithCU() {
+ var cls = this.createMinimalClass();
+
+ var cuInit = new CompilationUnitInitialiser();
+ var cu = cuInit.instantiate();
+ cuInit.addClassifier(cu, cls);
+
+ return cls;
+ }
+
+ /**
+ * @param init The initialiser that will be used to create the instance
+ * @param clsName The name of the instance to be constructed
+ * @return A {@link ConcreteClassifier} instance with the given name. The
+ * concrete type of the instance depends on init.
+ */
+ public default ConcreteClassifier createMinimalClassifier(IConcreteClassifierInitialiser init, String clsName) {
+ ConcreteClassifier result = init.instantiate();
+ init.setName(result, clsName);
+ return result;
+ }
+
+ /**
+ * @param init The initialiser that will be used to create the instance
+ * @param clsName The name of the instance to be constructed
+ * @param cuName The name of the {@link CompilationUnit} that will contain the
+ * created instance
+ * @return A {@link ConcreteClassifier} instance that is contained by a
+ * {@link CompilationUnit}. The given parameters are used during both of
+ * their construction.
+ */
+ public default ConcreteClassifier createMinimalClassifierWithCU(IConcreteClassifierInitialiser init, String clsName,
+ String cuName) {
+ ConcreteClassifier result = init.instantiate();
+ init.setName(result, clsName);
+
+ var cuInit = new CompilationUnitInitialiser();
+ var cu = cuInit.instantiate();
+ cuInit.setName(cu, cuName);
+ cuInit.addClassifier(cu, result);
+
+ return result;
+ }
+
+ /**
+ * @param init The initialiser that will be used to create the instance
+ * @param clsName The name of the instance to be constructed
+ * @param pacNss See {@link #createMinimalPackage(String[])}
+ * @return A {@link ConcreteClassifier} instance that will be contained by a
+ * {@link Package} constructed by
+ * {@link #createMinimalPackage(String[])}.
+ */
+ public default ConcreteClassifier createMinimalClassifierWithPac(IConcreteClassifierInitialiser init,
+ String clsName, String[] pacNss) {
+ ConcreteClassifier result = init.instantiate();
+ init.setName(result, clsName);
+ init.setPackage(result, this.createMinimalPackage(pacNss));
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalClassifierWithPac(IConcreteClassifierInitialiser, String, String[])},
+ * where the constructed instance is of type {@link Class}.
+ */
+ public default Class createMinimalClassWithPac(String clsName, String[] pacNss) {
+ return (Class) this.createMinimalClassifierWithPac(new ClassInitialiser(), clsName, pacNss);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalClassifierWithCU(IConcreteClassifierInitialiser, String, String)},
+ * where the name of the constructed {@link CompilationUnit} is
+ * {@link #getDefaultName()}.
+ */
+ public default ConcreteClassifier createMinimalClassifierWithCU(IConcreteClassifierInitialiser init,
+ String clsName) {
+ return this.createMinimalClassifierWithCU(init, clsName, this.getDefaultName());
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalClassifier(IConcreteClassifierInitialiser, String)},
+ * where a {@link Class} instance with the given parameter is created.
+ */
+ public default Class createMinimalClass(String clsName) {
+ return (Class) this.createMinimalClassifier(new ClassInitialiser(), clsName);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalClassifierWithCU(IConcreteClassifierInitialiser, String)},
+ * where the constructed instance is of type {@link Class} with the given
+ * parameter.
+ */
+ public default Class createMinimalClassWithCU(String clsName) {
+ return (Class) this.createMinimalClassifierWithCU(new ClassInitialiser(), clsName);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java
new file mode 100644
index 0000000000..62d3efe57c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java
@@ -0,0 +1,24 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.members.EnumConstant;
+
+import cipm.consistency.initialisers.jamopp.members.EnumConstantInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link EnumConstant} instances.
+ *
+ * Contains methods that can be used to create {@link EnumConstant} instances.
+ */
+public interface UsesEnumConstants {
+ /**
+ * @param ecName The name of the instance to be created
+ * @return An {@link EnumConstant} with the given parameter
+ */
+ public default EnumConstant createMinimalEnumConstant(String ecName) {
+ var ecInit = new EnumConstantInitialiser();
+ var ec = ecInit.instantiate();
+ ecInit.setName(ec, ecName);
+ return ec;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java
new file mode 100644
index 0000000000..7b37cb816e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java
@@ -0,0 +1,118 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.expressions.EqualityExpression;
+import org.emftext.language.java.expressions.EqualityExpressionChild;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionList;
+import org.emftext.language.java.operators.EqualityOperator;
+
+import cipm.consistency.initialisers.jamopp.expressions.EqualityExpressionInitialiser;
+import cipm.consistency.initialisers.jamopp.expressions.ExpressionListInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Expression} instances.
+ *
+ * Contains methods that can be used to create {@link Expression} instances.
+ */
+public interface UsesExpressions extends UsesOperators, UsesLiterals, UsesStringReferences {
+ /**
+ * @param exprs The {@link Expression} instances the constructed instance will
+ * contain
+ * @return A {@link ExpressionList} instance with the given parameters
+ */
+ public default ExpressionList createExprList(Expression... exprs) {
+ var elInit = new ExpressionListInitialiser();
+ var el = this.createExprList();
+ elInit.addExpressions(el, exprs);
+ return el;
+ }
+
+ /**
+ * @param lhs The left hand side of the instance to be constructed
+ * @param eop The equality operator of the instance to be constructed
+ * @param rhs The right hand side of the instance to be constructed
+ * @return Constructs an {@link EqualityExpression} instance that represents
+ * {@code lhs eop rhs}
+ */
+ public default EqualityExpression createMinimalEE(EqualityExpressionChild lhs, EqualityOperator eop,
+ EqualityExpressionChild rhs) {
+ var eqInit = new EqualityExpressionInitialiser();
+
+ EqualityExpression result = eqInit.instantiate();
+ eqInit.addEqualityOperator(result, eop);
+ eqInit.addChild(result, lhs);
+ eqInit.addChild(result, rhs);
+
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalEE(EqualityExpressionChild, EqualityOperator, EqualityExpressionChild)}
+ * that uses an operator generated by {@link #createEqualityOperator()}.
+ */
+ public default EqualityExpression createMinimalEE(EqualityExpressionChild lhs, EqualityExpressionChild rhs) {
+ return this.createMinimalEE(lhs, this.createEqualityOperator(), rhs);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalEE(EqualityExpressionChild, EqualityOperator, EqualityExpressionChild)}
+ * that uses an operator generated by {@link #createNotEqualOperator()}.
+ */
+ public default EqualityExpression createMinimalNEE(EqualityExpressionChild lhs, EqualityExpressionChild rhs) {
+ return this.createMinimalEE(lhs, this.createNotEqualOperator(), rhs);
+ }
+
+ /**
+ * @return A minimal {@link ExpressionList} instance
+ */
+ public default ExpressionList createExprList() {
+ return new ExpressionListInitialiser().instantiate();
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalEE(EqualityExpressionChild, EqualityExpressionChild)}
+ * that equates to {@code 1 == 1} in {@link Expression} form.
+ *
+ * @see {@link #createDecimalIntegerLiteral(int)}
+ */
+ public default EqualityExpression createMinimalTrueEE() {
+ return this.createMinimalEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(1));
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalEE(EqualityExpressionChild, EqualityExpressionChild)}
+ * that equates to {@code 1 == 2} in {@link Expression} form.
+ *
+ * @see {@link #createDecimalIntegerLiteral(int)}
+ */
+ public default EqualityExpression createMinimalFalseEE() {
+ return this.createMinimalEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2));
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalNEE(EqualityExpressionChild, EqualityExpressionChild)}
+ * that equates to {@code 1 =/= 1} in {@link Expression} form.
+ *
+ * @see {@link #createDecimalIntegerLiteral(int)}
+ */
+ public default EqualityExpression createMinimalFalseNEE() {
+ return this.createMinimalNEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(1));
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalNEE(EqualityExpressionChild, EqualityExpressionChild)}
+ * that equates to {@code 1 =/= 2} in {@link Expression} form.
+ *
+ * @see {@link #createDecimalIntegerLiteral(int)}
+ */
+ public default EqualityExpression createMinimalTrueNEE() {
+ return this.createMinimalNEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java
new file mode 100644
index 0000000000..b2a0fb39c1
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java
@@ -0,0 +1,25 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.members.Field;
+
+import cipm.consistency.initialisers.jamopp.members.FieldInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with {@link Field}
+ * instances.
+ *
+ * Contains methods that can be used to create {@link Field} instances.
+ */
+public interface UsesFields {
+ /**
+ * @param fieldName The name of the instance to be constructed
+ * @return A {@link Field} instance with the given parameter
+ */
+ public default Field createMinimalField(String fieldName) {
+ var init = new FieldInitialiser();
+ Field result = init.instantiate();
+ init.setName(result, fieldName);
+
+ return result;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java
new file mode 100644
index 0000000000..0291a7ab6d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java
@@ -0,0 +1,39 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.ImportingElement;
+
+import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ImportingElement} instances.
+ *
+ * Contains methods that can be used to create {@link ImportingElement}
+ * instances.
+ */
+public interface UsesImportingElements extends UsesImports {
+ /**
+ * @param init The initialiser that will be used to construct the instance
+ * @param imp The {@link Import} that will be added to the constructed instance
+ * @return An {@link ImportingElement} instance with the given parameters
+ */
+ public default ImportingElement createMinimalImportingElement(IImportingElementInitialiser init, Import imp) {
+ ImportingElement result = init.instantiate();
+ init.addImport(result, imp);
+
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalImportingElement(IImportingElementInitialiser, Import)},
+ * where the {@link Import} parameter is constructed using
+ * {@link #createMinimalClsImport(String)}.
+ *
+ * @param clsName See {@link #createMinimalClsImport(String)}
+ */
+ public default ImportingElement createMinimalImportingElement(IImportingElementInitialiser init, String clsName) {
+ return this.createMinimalImportingElement(init, this.createMinimalClsImport(clsName));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java
new file mode 100644
index 0000000000..739b57bb97
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java
@@ -0,0 +1,52 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.imports.ClassifierImport;
+import org.emftext.language.java.imports.Import;
+
+import cipm.consistency.initialisers.jamopp.imports.ClassifierImportInitialiser;
+import cipm.consistency.initialisers.jamopp.imports.IImportInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with {@link Import}
+ * instances.
+ *
+ * Contains methods that can be used to create {@link Import} instances.
+ */
+public interface UsesImports extends UsesConcreteClassifiers {
+ /**
+ * @param initialiser The initialiser that will be used to construct the
+ * instance
+ * @param cls The classifier of the instance to be constructed (what it
+ * will point at)
+ * @return An {@link Import} instance with the given parameters
+ */
+ public default Import createMinimalImport(IImportInitialiser initialiser, ConcreteClassifier cls) {
+ Import result = initialiser.instantiate();
+ initialiser.setClassifier(result, cls);
+
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalImport(IImportInitialiser, ConcreteClassifier)}, where
+ * the constructed instance is of type {@link ClassifierImport}.
+ */
+ public default ClassifierImport createMinimalClsImport(ConcreteClassifier cls) {
+ return (ClassifierImport) this.createMinimalImport(new ClassifierImportInitialiser(), cls);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalImport(IImportInitialiser, ConcreteClassifier)}, where
+ * the constructed instance is of type {@link ClassifierImport} that points at a
+ * {@link Classifier} constructed with
+ * {@link #createMinimalClassWithCU(String)}.
+ *
+ * @param clsName See {@link #createMinimalClassWithCU(String)}
+ */
+ public default ClassifierImport createMinimalClsImport(String clsName) {
+ return this.createMinimalClsImport(this.createMinimalClassWithCU(clsName));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java
new file mode 100644
index 0000000000..99fbd83d36
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java
@@ -0,0 +1,42 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters;
+import org.emftext.language.java.parameters.Parameter;
+
+import cipm.consistency.initialisers.jamopp.expressions.ExplicitlyTypedLambdaParametersInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link LambdaParameters} instances.
+ *
+ * Contains methods that can be used to create {@link LambdaParameters}
+ * instances.
+ */
+public interface UsesLambdaParameters extends UsesParameters {
+ /**
+ * @param params The parameters that will be added to the constructed instance
+ * @return An {@link ExplicitlyTypedLambdaParameters} instance with the given
+ * parameters
+ */
+ public default ExplicitlyTypedLambdaParameters createETLP(Parameter[] params) {
+ var init = new ExplicitlyTypedLambdaParametersInitialiser();
+
+ var result = init.instantiate();
+ init.addParameters(result, params);
+
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createETLP(Parameter[])}, where a single
+ * {@link Parameter} instance is constructed and used.
+ *
+ * @param paramName See
+ * {@link #createMinimalOrdParamWithClsTarget(String, String)}
+ * @param targetName See
+ * {@link #createMinimalOrdParamWithClsTarget(String, String)}
+ */
+ public default ExplicitlyTypedLambdaParameters createMinimalETLP(String paramName, String targetName) {
+ return this.createETLP(new Parameter[] { this.createMinimalOrdParamWithClsTarget(paramName, targetName) });
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java
new file mode 100644
index 0000000000..a068c42098
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java
@@ -0,0 +1,202 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.BinaryIntegerLiteral;
+import org.emftext.language.java.literals.BinaryLongLiteral;
+import org.emftext.language.java.literals.BooleanLiteral;
+import org.emftext.language.java.literals.CharacterLiteral;
+import org.emftext.language.java.literals.DecimalDoubleLiteral;
+import org.emftext.language.java.literals.DecimalFloatLiteral;
+import org.emftext.language.java.literals.DecimalIntegerLiteral;
+import org.emftext.language.java.literals.DecimalLongLiteral;
+import org.emftext.language.java.literals.HexDoubleLiteral;
+import org.emftext.language.java.literals.HexFloatLiteral;
+import org.emftext.language.java.literals.HexIntegerLiteral;
+import org.emftext.language.java.literals.HexLongLiteral;
+import org.emftext.language.java.literals.NullLiteral;
+import org.emftext.language.java.literals.OctalIntegerLiteral;
+import org.emftext.language.java.literals.OctalLongLiteral;
+import org.emftext.language.java.literals.Super;
+import org.emftext.language.java.literals.This;
+import org.emftext.language.java.modifiers.Static;
+import org.emftext.language.java.modifiers.Transitive;
+
+import cipm.consistency.initialisers.jamopp.literals.BinaryIntegerLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.BinaryLongLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.BooleanLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.CharacterLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.DecimalDoubleLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.DecimalFloatLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.DecimalIntegerLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.DecimalLongLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.HexDoubleLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.HexFloatLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.HexIntegerLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.HexLongLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.NullLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.OctalIntegerLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.OctalLongLiteralInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.SuperInitialiser;
+import cipm.consistency.initialisers.jamopp.literals.ThisInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.StaticInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.TransitiveInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Literal} instances.
+ *
+ * Contains methods that can be used to create {@link Literal} instances. The
+ * methods wrap primitive value provided to them for convenience.
+ */
+public interface UsesLiterals {
+ public default CharacterLiteral createCharacterLiteral(String val) {
+ var init = new CharacterLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setValue(lit, val);
+ return lit;
+ }
+
+ public default BooleanLiteral createBooleanLiteral(boolean val) {
+ var init = new BooleanLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setValue(lit, val);
+ return lit;
+ }
+
+ public default HexFloatLiteral createHexFloatLiteral(float val) {
+ var init = new HexFloatLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setHexValue(lit, val);
+ return lit;
+ }
+
+ public default DecimalFloatLiteral createDecimalFloatLiteral(float val) {
+ var init = new DecimalFloatLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setDecimalValue(lit, val);
+ return lit;
+ }
+
+ public default HexDoubleLiteral createHexDoubleLiteral(double val) {
+ var init = new HexDoubleLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setHexValue(lit, val);
+ return lit;
+ }
+
+ public default DecimalDoubleLiteral createDecimalDoubleLiteral(double val) {
+ var init = new DecimalDoubleLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setDecimalValue(lit, val);
+ return lit;
+ }
+
+ public default BinaryIntegerLiteral createBinaryIntegerLiteral(BigInteger val) {
+ var init = new BinaryIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setBinaryValue(lit, val);
+ return lit;
+ }
+
+ public default BinaryIntegerLiteral createBinaryIntegerLiteral(int val) {
+ return this.createBinaryIntegerLiteral(BigInteger.valueOf(val));
+ }
+
+ public default DecimalIntegerLiteral createDecimalIntegerLiteral(BigInteger val) {
+ var init = new DecimalIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setDecimalValue(lit, val);
+ return lit;
+ }
+
+ public default DecimalIntegerLiteral createDecimalIntegerLiteral(int val) {
+ return this.createDecimalIntegerLiteral(BigInteger.valueOf(val));
+ }
+
+ public default HexIntegerLiteral createHexIntegerLiteral(BigInteger val) {
+ var init = new HexIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setHexValue(lit, val);
+ return lit;
+ }
+
+ public default HexIntegerLiteral createHexIntegerLiteral(int val) {
+ return this.createHexIntegerLiteral(BigInteger.valueOf(val));
+ }
+
+ public default OctalIntegerLiteral createOctalIntegerLiteral(BigInteger val) {
+ var init = new OctalIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setOctalValue(lit, val);
+ return lit;
+ }
+
+ public default OctalIntegerLiteral createOctalIntegerLiteral(int val) {
+ return this.createOctalIntegerLiteral(BigInteger.valueOf(val));
+ }
+
+ public default BinaryLongLiteral createBinaryLongLiteral(BigInteger val) {
+ var init = new BinaryLongLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setBinaryValue(lit, val);
+ return lit;
+ }
+
+ public default BinaryLongLiteral createBinaryLongLiteral(int val) {
+ return this.createBinaryLongLiteral(BigInteger.valueOf(val));
+ }
+
+ public default DecimalLongLiteral createDecimalLongLiteral(BigInteger val) {
+ var init = new DecimalLongLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setDecimalValue(lit, val);
+ return lit;
+ }
+
+ public default DecimalLongLiteral createDecimalLongLiteral(int val) {
+ return this.createDecimalLongLiteral(BigInteger.valueOf(val));
+ }
+
+ public default HexLongLiteral createHexLongLiteral(BigInteger val) {
+ var init = new HexLongLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setHexValue(lit, val);
+ return lit;
+ }
+
+ public default HexLongLiteral createHexLongLiteral(int val) {
+ return this.createHexLongLiteral(BigInteger.valueOf(val));
+ }
+
+ public default OctalLongLiteral createOctalLongLiteral(BigInteger val) {
+ var init = new OctalLongLiteralInitialiser();
+ var lit = init.instantiate();
+ init.setOctalValue(lit, val);
+ return lit;
+ }
+
+ public default OctalLongLiteral createOctalLongLiteral(int val) {
+ return this.createOctalLongLiteral(BigInteger.valueOf(val));
+ }
+
+ public default NullLiteral createNullLiteral() {
+ return new NullLiteralInitialiser().instantiate();
+ }
+
+ public default This createThis() {
+ return new ThisInitialiser().instantiate();
+ }
+
+ public default Super createSuper() {
+ return new SuperInitialiser().instantiate();
+ }
+
+ public default Static createStatic() {
+ return new StaticInitialiser().instantiate();
+ }
+
+ public default Transitive createTransitive() {
+ return new TransitiveInitialiser().instantiate();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java
new file mode 100644
index 0000000000..711771ff1c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java
@@ -0,0 +1,24 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.variables.LocalVariable;
+
+import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link LocalVariable} instances.
+ *
+ * Contains methods that can be used to create {@link LocalVariable} instances.
+ */
+public interface UsesLocalVariables {
+ /**
+ * @param lvName The name of the instance to be constructed
+ * @return A {@link LocalVariable} instance with the given parameter
+ */
+ public default LocalVariable createMinimalLV(String lvName) {
+ var lvInit = new LocalVariableInitialiser();
+ var lv = lvInit.instantiate();
+ lvInit.setName(lv, lvName);
+ return lv;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java
new file mode 100644
index 0000000000..845326f437
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java
@@ -0,0 +1,64 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.members.ClassMethod;
+import org.emftext.language.java.members.InterfaceMethod;
+
+import cipm.consistency.initialisers.jamopp.members.ClassMethodInitialiser;
+import cipm.consistency.initialisers.jamopp.members.InterfaceMethodInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with {@link Method}
+ * instances.
+ *
+ * Contains methods that can be used to create {@link Method} instances.
+ */
+public interface UsesMethods extends UsesStatements {
+ /**
+ * A variant of {@link #createMinimalClsMethodWithNullReturn()} with the given
+ * parameter
+ *
+ * @param methodName The name of the instance to be constructed
+ */
+ public default ClassMethod createMinimalClsMethodWithNullReturn(String methodName) {
+ var init = new ClassMethodInitialiser();
+ ClassMethod result = this.createMinimalClsMethodWithNullReturn();
+ init.setName(result, methodName);
+ return result;
+ }
+
+ /**
+ * @return A {@link ClassMethod} instance with only one {@link Statement}
+ * constructed by {@link #createMinimalNullReturn()}.
+ */
+ public default ClassMethod createMinimalClsMethodWithNullReturn() {
+ var init = new ClassMethodInitialiser();
+ ClassMethod result = init.instantiate();
+ init.addStatement(result, this.createMinimalNullReturn());
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createMinimalInterfaceMethodWithNullReturn()} with the
+ * given parameter
+ *
+ * @param methodName The name of the instance to be constructed
+ */
+ public default InterfaceMethod createMinimalInterfaceMethodWithNullReturn(String methodName) {
+ var init = new InterfaceMethodInitialiser();
+ InterfaceMethod result = this.createMinimalInterfaceMethodWithNullReturn();
+ init.setName(result, methodName);
+ return result;
+ }
+
+ /**
+ * @return A {@link InterfaceMethod} instance with only one {@link Statement}
+ * constructed by {@link #createNullLiteral()}.
+ */
+ public default InterfaceMethod createMinimalInterfaceMethodWithNullReturn() {
+ var init = new InterfaceMethodInitialiser();
+ InterfaceMethod result = init.instantiate();
+ init.setDefaultValue(result, this.createNullLiteral());
+ return result;
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java
new file mode 100644
index 0000000000..4de3bab2df
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java
@@ -0,0 +1,83 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.modifiers.Abstract;
+import org.emftext.language.java.modifiers.Default;
+import org.emftext.language.java.modifiers.Final;
+import org.emftext.language.java.modifiers.Native;
+import org.emftext.language.java.modifiers.Private;
+import org.emftext.language.java.modifiers.Protected;
+import org.emftext.language.java.modifiers.Public;
+import org.emftext.language.java.modifiers.Static;
+import org.emftext.language.java.modifiers.Strictfp;
+import org.emftext.language.java.modifiers.Synchronized;
+import org.emftext.language.java.modifiers.Transient;
+import org.emftext.language.java.modifiers.Volatile;
+
+import cipm.consistency.initialisers.jamopp.modifiers.AbstractInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.DefaultInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.FinalInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.NativeInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.PrivateInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.ProtectedInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.PublicInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.StaticInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.StrictfpInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.SynchronizedInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.TransientInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.VolatileInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Modifier} instances.
+ *
+ * Contains methods that can be used to create {@link Modifier} instances.
+ */
+public interface UsesModifiers {
+ public default Default createDefault() {
+ return new DefaultInitialiser().instantiate();
+ }
+
+ public default Final createFinal() {
+ return new FinalInitialiser().instantiate();
+ }
+
+ public default Native createNative() {
+ return new NativeInitialiser().instantiate();
+ }
+
+ public default Private createPrivate() {
+ return new PrivateInitialiser().instantiate();
+ }
+
+ public default Public createPublic() {
+ return new PublicInitialiser().instantiate();
+ }
+
+ public default Static createStatic() {
+ return new StaticInitialiser().instantiate();
+ }
+
+ public default Strictfp createStrictfp() {
+ return new StrictfpInitialiser().instantiate();
+ }
+
+ public default Transient createTransient() {
+ return new TransientInitialiser().instantiate();
+ }
+
+ public default Abstract createAbstract() {
+ return new AbstractInitialiser().instantiate();
+ }
+
+ public default Synchronized createSynchronized() {
+ return new SynchronizedInitialiser().instantiate();
+ }
+
+ public default Volatile createVolatile() {
+ return new VolatileInitialiser().instantiate();
+ }
+
+ public default Protected createProtected() {
+ return new ProtectedInitialiser().instantiate();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java
new file mode 100644
index 0000000000..d6146c8024
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java
@@ -0,0 +1,70 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.modules.AccessProvidingModuleDirective;
+import org.emftext.language.java.modules.ExportsModuleDirective;
+import org.emftext.language.java.modules.OpensModuleDirective;
+
+import cipm.consistency.initialisers.jamopp.modules.ExportsModuleDirectiveInitialiser;
+import cipm.consistency.initialisers.jamopp.modules.IAccessProvidingModuleDirectiveInitialiser;
+import cipm.consistency.initialisers.jamopp.modules.OpensModuleDirectiveInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ModuleDirective} instances.
+ *
+ * Contains methods that can be used to create {@link ModuleDirective}
+ * instances.
+ */
+public interface UsesModuleDirectives extends UsesPackages, UsesModuleReferences {
+ /**
+ * @param init The initialiser that will be used to construct the instance
+ * @param pac The accessable package of the instance to be constructed
+ * @return An {@link AccessProvidingModuleDirective} instance with the given
+ * parameters
+ */
+ public default AccessProvidingModuleDirective createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser init,
+ Package pac) {
+ var result = init.instantiate();
+ init.setAccessablePackage(result, pac);
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser, Package)}
+ * that constructs a {@link ExportsModuleDirective} instance.
+ */
+ public default ExportsModuleDirective createMinimalEMD(Package pac) {
+ return (ExportsModuleDirective) this.createMinimalAPMD(new ExportsModuleDirectiveInitialiser(), pac);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser, Package)}
+ * that constructs a {@link OpensModuleDirective} instance.
+ */
+ public default OpensModuleDirective createMinimalOMD(Package pac) {
+ return (OpensModuleDirective) this.createMinimalAPMD(new OpensModuleDirectiveInitialiser(), pac);
+ }
+
+ /**
+ * A variant of {@link #createMinimalEMD(Package)}, where
+ * {@link #createMinimalPackage(String[])} is used to construct the parameter.
+ *
+ * @param pacNss See {@link #createMinimalPackage(String[])}
+ */
+ public default ExportsModuleDirective createMinimalEMD(String[] pacNss) {
+ return this.createMinimalEMD(this.createMinimalPackage(pacNss));
+ }
+
+ /**
+ * A variant of {@link #createMinimalOMD(Package)}, where
+ * {@link #createMinimalPackage(String[])} is used to construct the parameter.
+ *
+ * @param pacNss See {@link #createMinimalPackage(String[])}
+ */
+ public default OpensModuleDirective createMinimalOMD(String[] pacNss) {
+ return this.createMinimalOMD(this.createMinimalPackage(pacNss));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java
new file mode 100644
index 0000000000..a570c903a3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java
@@ -0,0 +1,39 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.modules.ModuleReference;
+
+import cipm.consistency.initialisers.jamopp.modules.ModuleReferenceInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link ModuleReference} instances.
+ *
+ * Contains methods that can be used to create {@link ModuleReference}
+ * instances.
+ */
+public interface UsesModuleReferences extends UsesModules {
+ /**
+ * @param modName See {@link #createMinimalModule(String)}
+ * @param modRefNss The namespaces of the {@link Module}, at which the
+ * constructed instance will point
+ * @return A {@link ModuleReference} instance that points at a {@link Module}
+ * constructed with {@link #createMinimalModule(String)}.
+ */
+ public default ModuleReference createMinimalMR(String modName, String[] modRefNss) {
+ var mrInit = new ModuleReferenceInitialiser();
+ var mr = mrInit.instantiate();
+ mrInit.setTarget(mr, this.createMinimalModule(modName));
+ mrInit.addNamespaces(mr, modRefNss);
+ return mr;
+ }
+
+ /**
+ * A variant of {@link #createMinimalModule(String, String[])}, where the
+ * {@link Module} constructed in the process has no namespaces (second parameter
+ * is null).
+ */
+ public default ModuleReference createMinimalMR(String modName) {
+ return this.createMinimalMR(modName, null);
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java
new file mode 100644
index 0000000000..04ea40f1bb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.containers.Module;
+
+import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with {@link Module}
+ * instances.
+ *
+ * Contains methods that can be used to create {@link Module} instances.
+ */
+public interface UsesModules {
+ /**
+ * @param modName The name of the instance to be constructed
+ * @param modNss The namespaces of the instance to be constructed
+ * @return A {@link Module} instance with the given parameters
+ */
+ public default Module createMinimalModule(String modName, String[] modNss) {
+ var modInit = new ModuleInitialiser();
+ var mod = modInit.instantiate();
+ modInit.setName(mod, modName);
+ modInit.addNamespaces(mod, modNss);
+ return mod;
+ }
+
+ /**
+ * A variation of {@link #createMinimalModule(String, String[])}, where the
+ * constructed instance has no namespaces.
+ */
+ public default Module createMinimalModule(String modName) {
+ return this.createMinimalModule(modName, null);
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java
new file mode 100644
index 0000000000..e0a18815d5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java
@@ -0,0 +1,17 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link NamedElement} instances.
+ *
+ * Contains methods that can be used to create {@link NamedElement} instances.
+ */
+public interface UsesNames {
+ /**
+ * @return A default name that can be used while constructing
+ * {@link NamedElement} instances
+ */
+ public default String getDefaultName() {
+ return "";
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java
new file mode 100644
index 0000000000..32ecadf11c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java
@@ -0,0 +1,95 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.operators.Addition;
+import org.emftext.language.java.operators.AssignmentOperator;
+import org.emftext.language.java.operators.AssignmentOr;
+import org.emftext.language.java.operators.Division;
+import org.emftext.language.java.operators.EqualityOperator;
+import org.emftext.language.java.operators.GreaterThan;
+import org.emftext.language.java.operators.LeftShift;
+import org.emftext.language.java.operators.LessThan;
+import org.emftext.language.java.operators.MinusMinus;
+import org.emftext.language.java.operators.Multiplication;
+import org.emftext.language.java.operators.NotEqual;
+import org.emftext.language.java.operators.PlusPlus;
+import org.emftext.language.java.operators.RightShift;
+import org.emftext.language.java.operators.Subtraction;
+
+import cipm.consistency.initialisers.jamopp.operators.AdditionInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.AssignmentInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.AssignmentOrInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.DivisionInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.EqualInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.GreaterThanInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.LeftShiftInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.LessThanInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.MinusMinusInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.MultiplicationInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.NotEqualInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.PlusPlusInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.RightShiftInitialiser;
+import cipm.consistency.initialisers.jamopp.operators.SubtractionInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Operator} instances.
+ *
+ * Contains methods that can be used to create {@link Operator} instances.
+ */
+public interface UsesOperators {
+ public default AssignmentOperator createAssignmentOperator() {
+ return new AssignmentInitialiser().instantiate();
+ }
+
+ public default AssignmentOr createAssignmentOrOperator() {
+ return new AssignmentOrInitialiser().instantiate();
+ }
+
+ public default EqualityOperator createEqualityOperator() {
+ return new EqualInitialiser().instantiate();
+ }
+
+ public default NotEqual createNotEqualOperator() {
+ return new NotEqualInitialiser().instantiate();
+ }
+
+ public default GreaterThan createGreaterThanOperator() {
+ return new GreaterThanInitialiser().instantiate();
+ }
+
+ public default LessThan createLessThanOperator() {
+ return new LessThanInitialiser().instantiate();
+ }
+
+ public default LeftShift createLeftShiftOperator() {
+ return new LeftShiftInitialiser().instantiate();
+ }
+
+ public default RightShift createRightShiftOperator() {
+ return new RightShiftInitialiser().instantiate();
+ }
+
+ public default Addition createAdditionOperator() {
+ return new AdditionInitialiser().instantiate();
+ }
+
+ public default Subtraction createSubtractionOperator() {
+ return new SubtractionInitialiser().instantiate();
+ }
+
+ public default Division createDivisionOperator() {
+ return new DivisionInitialiser().instantiate();
+ }
+
+ public default Multiplication createMultiplicationOperator() {
+ return new MultiplicationInitialiser().instantiate();
+ }
+
+ public default PlusPlus createPlusPlusOperator() {
+ return new PlusPlusInitialiser().instantiate();
+ }
+
+ public default MinusMinus createMinusMinusOperator() {
+ return new MinusMinusInitialiser().instantiate();
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java
new file mode 100644
index 0000000000..fca440ad06
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java
@@ -0,0 +1,25 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.imports.PackageImport;
+
+import cipm.consistency.initialisers.jamopp.imports.PackageImportInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link PackageImport} instances.
+ *
+ * Contains methods that can be used to create {@link PackageImport} instances.
+ */
+public interface UsesPackageImports {
+ /**
+ * @param piNss The namespaces of the instance to be constructed
+ * @return A {@link PackageImport} instance with the given parameters
+ */
+ public default PackageImport createMinimalPackageImport(String[] piNss) {
+ var initialiser = new PackageImportInitialiser();
+ var result = initialiser.instantiate();
+ initialiser.addNamespaces(result, piNss);
+
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java
new file mode 100644
index 0000000000..b85fc2daef
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java
@@ -0,0 +1,49 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.containers.Package;
+
+import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Package} instances.
+ *
+ * Contains methods that can be used to create {@link Package} instances.
+ */
+public interface UsesPackages {
+ /**
+ * @param pacNss The namespaces of the instance to be constructed
+ * @return A {@link Package} instance with the given parameters
+ */
+ public default Package createMinimalPackage(String[] pacNss) {
+ var pacInit = new PackageInitialiser();
+
+ Package result = pacInit.instantiate();
+ pacInit.addNamespaces(result, pacNss);
+
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createMinimalPackage(String[])}, where namespaces are
+ * generated using the given parameters.
+ *
+ * The generated namespaces will each consist of the given prefix and a suffix.
+ * As suffix, the namespaces will have a number between 0 (including) and the
+ * given count (excluding).
+ *
+ * Example: {@code nsPrefix = "ns", nsCount = 3} constructs a {@link Package}
+ * instance with namespaces "ns0", "ns1", "ns2".
+ *
+ * @param pacNsPrefix The prefix of the namespaces to be generated
+ * @param pacNsCount The count of the namespaces to be generated
+ */
+ public default Package createMinimalPackage(String pacNsPrefix, int pacNsCount) {
+ var nss = new String[pacNsCount];
+
+ for (int i = 0; i < pacNsCount; i++)
+ nss[i] = pacNsPrefix + i;
+
+ return this.createMinimalPackage(nss);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java
new file mode 100644
index 0000000000..dff6bc321e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java
@@ -0,0 +1,52 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.parameters.Parameter;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.parameters.IParameterInitialiser;
+import cipm.consistency.initialisers.jamopp.parameters.OrdinaryParameterInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Parameter} instances.
+ *
+ * Contains methods that can be used to create {@link Parameter} instances.
+ */
+public interface UsesParameters extends UsesTypeReferences {
+ /**
+ * @param init The initialiser that will be used to construct the instance
+ * @param paramName The name of the instance to be constructed
+ * @param tref The type reference of the instance to be constructed
+ * @return A {@link Parameter} instance with the given parameters
+ */
+ public default Parameter createMinimalParameter(IParameterInitialiser init, String paramName, TypeReference tref) {
+ Parameter result = init.instantiate();
+ init.setName(result, paramName);
+ init.setTypeReference(result, tref);
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalParameter(IParameterInitialiser, String, TypeReference)},
+ * where the {@link TypeReference} parameter is constructed using
+ * {@link #createMinimalClsRef(String)}.
+ *
+ * @param targetName See {@link #createMinimalClsRef(String)}
+ */
+ public default Parameter createMinimalParamWithClsTarget(IParameterInitialiser init, String paramName,
+ String targetName) {
+ return this.createMinimalParameter(init, paramName, this.createMinimalClsRef(targetName));
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalParamWithClsTarget(IParameterInitialiser, String, String)}
+ * that returns an {@link OrdinaryParameter} instance.
+ */
+ public default OrdinaryParameter createMinimalOrdParamWithClsTarget(String paramName, String targetName) {
+ return (OrdinaryParameter) this.createMinimalParamWithClsTarget(new OrdinaryParameterInitialiser(), paramName,
+ targetName);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java
new file mode 100644
index 0000000000..122999c388
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java
@@ -0,0 +1,11 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Reference} instances.
+ *
+ * Contains methods that can be used to create {@link Reference} instances.
+ */
+public interface UsesReferences extends UsesStringReferences {
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java
new file mode 100644
index 0000000000..42b053e594
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java
@@ -0,0 +1,154 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Assert;
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.JumpLabel;
+import org.emftext.language.java.statements.LocalVariableStatement;
+import org.emftext.language.java.statements.Return;
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.variables.LocalVariable;
+
+import cipm.consistency.initialisers.jamopp.statements.AssertInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.BlockInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.JumpLabelInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.LocalVariableStatementInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.ReturnInitialiser;
+import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link Statement} instances.
+ *
+ * Contains methods that can be used to create {@link Statement} instances.
+ */
+public interface UsesStatements extends UsesLiterals {
+ /**
+ * @param returnVal The return value of the instance to be constructed
+ * @return A {@link Return} instance with the given {@link Expression} as its
+ * return value.
+ */
+ public default Return createMinimalReturn(Expression returnVal) {
+ var init = new ReturnInitialiser();
+ Return result = init.instantiate();
+ init.setReturnValue(result, returnVal);
+ return result;
+ }
+
+ /**
+ * @param lvName The name of the instance to be constructed
+ * @return A {@link LocalVariableStatement} instance with the given name.
+ */
+ public default LocalVariableStatement createMinimalLVS(String lvName) {
+ var init = new LocalVariableInitialiser();
+ var res = init.instantiate();
+ init.setName(res, lvName);
+ return this.createMinimalLVS(res);
+ }
+
+ /**
+ * @param lvName The {@link LocalVariable} of the instance to be constructed
+ * @return A {@link LocalVariableStatement} instance with the given
+ * {@link LocalVariable}.
+ */
+ public default LocalVariableStatement createMinimalLVS(LocalVariable lv) {
+ var init = new LocalVariableStatementInitialiser();
+ var res = init.instantiate();
+ init.setVariable(res, lv);
+ return res;
+ }
+
+ /**
+ * @param jlName The name of the instance to be constructed
+ * @param targetSt The target statement of the instance to be constructed
+ * @return A {@link JumpLabel} instance with the given parameter
+ */
+ public default JumpLabel createMinimalJL(String jlName, Statement targetSt) {
+ var init = new JumpLabelInitialiser();
+ var jl = init.instantiate();
+ init.setName(jl, jlName);
+ init.setStatement(jl, targetSt);
+ return jl;
+ }
+
+ /**
+ * @param sts The statements that will be added to the instance to be
+ * constructed
+ * @return A {@link Block} instance with the given parameters
+ */
+ public default Block createMinimalBlock(Statement[] sts) {
+ var init = new BlockInitialiser();
+ Block result = init.instantiate();
+ init.addStatements(result, sts);
+ return result;
+ }
+
+ /**
+ * @return An {@link Assert} instance, whose {@link Condition} is constructed
+ * with {@link #createBooleanLiteral(boolean)} using the value true.
+ */
+ public default Assert createMinimalTrivialAssert() {
+ var init = new AssertInitialiser();
+ Assert result = init.instantiate();
+ init.setCondition(result, this.createBooleanLiteral(true));
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createMinimalReturn(Expression)}, where the parameter is
+ * constructed with {@link #createNullLiteral()}.
+ *
+ * @see {@link #createNullLiteral()}
+ */
+ public default Return createMinimalNullReturn() {
+ return this.createMinimalReturn(this.createNullLiteral());
+ }
+
+ /**
+ * A variant of {@link #createMinimalJLToNullReturn(String)}, where the
+ * constructed instance has no name (null).
+ */
+ public default JumpLabel createMinimalJLToNullReturn() {
+ return this.createMinimalJLToNullReturn(null);
+ }
+
+ /**
+ * A variant of {@link #createMinimalJLToTrivialAssert(String)}, where the
+ * constructed instance has no name (null).
+ */
+ public default JumpLabel createMinimalJLToTrivialAssert() {
+ return this.createMinimalJLToTrivialAssert(null);
+ }
+
+ /**
+ * A variant of {@link #createMinimalJL(String, Statement)}, where the target
+ * statement is generated with {@link #createMinimalNullReturn()}.
+ */
+ public default JumpLabel createMinimalJLToNullReturn(String jlName) {
+ return this.createMinimalJL(jlName, this.createMinimalNullReturn());
+ }
+
+ /**
+ * A variant of {@link #createMinimalJL(String, Statement)}, where the target
+ * statement is generated with {@link #createMinimalTrivialAssert()}.
+ */
+ public default JumpLabel createMinimalJLToTrivialAssert(String jlName) {
+ return this.createMinimalJL(jlName, this.createMinimalTrivialAssert());
+ }
+
+ /**
+ * A variant of {@link #createMinimalBlock(Statement[])} that uses a single
+ * statement generated by {@link #createMinimalNullReturn()}.
+ */
+ public default Block createMinimalBlockWithNullReturn() {
+ return this.createMinimalBlock(new Statement[] { this.createMinimalNullReturn() });
+ }
+
+ /**
+ * A variant of {@link #createMinimalBlock(Statement[])} that uses a single
+ * statement generated by {@link #createMinimalTrivialAssert()}.
+ */
+ public default Block createMinimalBlockWithTrivialAssert() {
+ return this.createMinimalBlock(new Statement[] { this.createMinimalTrivialAssert() });
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java
new file mode 100644
index 0000000000..56ef65810d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java
@@ -0,0 +1,25 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.references.StringReference;
+
+import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link StringReference} instances.
+ *
+ * Contains methods that can be used to create {@link StringReference}
+ * instances.
+ */
+public interface UsesStringReferences {
+ /**
+ * @param val The value of the instance to be constructed
+ * @return A {@link StringReference} instance with the given parameter
+ */
+ public default StringReference createMinimalSR(String val) {
+ var init = new StringReferenceInitialiser();
+ StringReference result = init.instantiate();
+ init.setValue(result, val);
+ return result;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java
new file mode 100644
index 0000000000..cc6c6e0e53
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java
@@ -0,0 +1,41 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.NormalSwitchCase;
+
+import cipm.consistency.initialisers.jamopp.statements.NormalSwitchCaseInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link SwitchCase} instances.
+ *
+ * Contains methods that can be used to create {@link SwitchCase} instances.
+ */
+public interface UsesSwitchCases extends UsesExpressions {
+ /**
+ * @param addConds The additional conditions that will be added to the instance
+ * to be constructed
+ * @return A {@link NormalSwitchCase} with the given parameters
+ */
+ public default NormalSwitchCase createMinimalNSC(Expression[] addConds) {
+ var nscInit = new NormalSwitchCaseInitialiser();
+ var nsc = nscInit.instantiate();
+ nscInit.addAdditionalConditions(nsc, addConds);
+ return nsc;
+ }
+
+ /**
+ * A variant of {@link #createMinimalNSC(Expression[])} that uses a single
+ * {@link Expression} generated by {@link #createMinimalFalseEE()}.
+ */
+ public default NormalSwitchCase createMinimalNSC() {
+ return this.createMinimalNSC(new Expression[] { this.createMinimalFalseEE() });
+ }
+
+ /**
+ * A variant of {@link #createMinimalNSC()} that has no additional conditions
+ */
+ public default NormalSwitchCase createEmptyNSC() {
+ return this.createMinimalNSC(null);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java
new file mode 100644
index 0000000000..5053f448ba
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.generics.ExtendsTypeArgument;
+import org.emftext.language.java.generics.SuperTypeArgument;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.generics.ExtendsTypeArgumentInitialiser;
+import cipm.consistency.initialisers.jamopp.generics.SuperTypeArgumentInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link TypeArgument} instances.
+ *
+ * Contains methods that can be used to create {@link TypeArgument} instances.
+ */
+public interface UsesTypeArguments extends UsesTypeReferences {
+ /**
+ * @param extType The extend type of the instance to be constructed
+ * @return An {@link ExtendsTypeArgument} instance with the given parameter
+ */
+ public default ExtendsTypeArgument createMinimalExtendsTA(TypeReference extType) {
+ var init = new ExtendsTypeArgumentInitialiser();
+ ExtendsTypeArgument result = init.instantiate();
+ init.setExtendType(result, extType);
+ return result;
+ }
+
+ /**
+ * @param supType The super type of the instance to be constructed
+ * @return An {@link SuperTypeArgument} instance with the given parameter
+ */
+ public default SuperTypeArgument createMinimalSuperTA(TypeReference supType) {
+ var init = new SuperTypeArgumentInitialiser();
+ SuperTypeArgument result = init.instantiate();
+ init.setSuperType(result, supType);
+ return result;
+ }
+
+ /**
+ * A variant of {@link #createMinimalExtendsTA(TypeReference)}, where the
+ * parameter is constructed with {@link #createMinimalClsRef(String)}.
+ *
+ * @param clsName See {@link #createMinimalClsRef(String)}
+ */
+ public default ExtendsTypeArgument createMinimalExtendsTAWithCls(String clsName) {
+ return this.createMinimalExtendsTA(this.createMinimalClsRef(clsName));
+ }
+
+ /**
+ * A variant of {@link #createMinimalSuperTA(TypeReference)}, where the
+ * parameter is constructed with {@link #createMinimalClsRef(String)}.
+ *
+ * @param clsName See {@link #createMinimalClsRef(String)}
+ */
+ public default SuperTypeArgument createMinimalSuperTAWithCls(String clsName) {
+ return this.createMinimalSuperTA(this.createMinimalClsRef(clsName));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java
new file mode 100644
index 0000000000..115aa6b6d9
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java
@@ -0,0 +1,63 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.generics.TypeParameter;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.generics.ITypeParameterInitialiser;
+import cipm.consistency.initialisers.jamopp.generics.TypeParameterInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link TypeParameter} instances.
+ *
+ * Contains methods that can be used to create {@link TypeParameter} instances.
+ */
+public interface UsesTypeParameters extends UsesTypeReferences {
+ /**
+ * @param init The initialiser that will be used to construct the instance
+ * @param extTypes The extend types of the instance to be constructed
+ * @return A {@link TypeParameter} with the given parameters
+ */
+ public default TypeParameter createMinimalTypeParam(ITypeParameterInitialiser init, TypeReference[] extTypes) {
+ TypeParameter result = init.instantiate();
+ init.addExtendTypes(result, extTypes);
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalTypeParam(ITypeParameterInitialiser, TypeReference[])}
+ * that uses {@link #createMinimalClsRef(String)} to generate the given amount
+ * of extend types.
+ *
+ * The each generated extend type will point at a {@link Classifier} (will be
+ * constructed in the process) with the name "cls"+i, where i = 0, 1, ...,
+ * extTypeCount - 1.
+ *
+ * @param extTypeCount The amount of extend types that will be generated in the
+ * process
+ */
+ public default TypeParameter createMinimalTypeParamWithClsRefs(ITypeParameterInitialiser init, int extTypeCount) {
+ var arr = new TypeReference[extTypeCount];
+
+ for (int i = 0; i < extTypeCount; i++) {
+ arr[i] = this.createMinimalClsRef("cls" + i);
+ }
+
+ return this.createMinimalTypeParam(init, arr);
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalTypeParam(ITypeParameterInitialiser, TypeReference[])}
+ * that generates a {@link TypeParameter} instance with only one extend type
+ * that points at a {@link Classifier} generated with
+ * {@link #createMinimalClsRef(String)} using the given parameter
+ *
+ * @param clsName See {@link #createMinimalClsRef(String)}
+ */
+ public default TypeParameter createMinimalTypeParamWithClsRef(String clsName) {
+ return this.createMinimalTypeParam(new TypeParameterInitialiser(),
+ new TypeReference[] { this.createMinimalClsRef(clsName) });
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java
new file mode 100644
index 0000000000..9aa2b215ed
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java
@@ -0,0 +1,68 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.NamespaceClassifierReference;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.types.NamespaceClassifierReferenceInitialiser;
+
+/**
+ * An interface that can be implemented by tests, which work with
+ * {@link TypeReference} instances.
+ *
+ * Contains methods that can be used to create {@link TypeReference} instances.
+ */
+public interface UsesTypeReferences extends UsesConcreteClassifiers {
+ /**
+ * @param init The initialiser that will be used to construct the instance
+ * @param cls The target of the instance to be constructed
+ * @return A {@link TypeReference} instance with the given parameters
+ */
+ public default TypeReference createMinimalTypeReference(ITypeReferenceInitialiser init, Classifier cls) {
+ TypeReference result = init.instantiate();
+ init.setTarget(result, cls);
+ return result;
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalTypeReference(ITypeReferenceInitialiser, Classifier)},
+ * the {@link Classifier} parameter is constructed with
+ * {@link #createMinimalClassWithCU(String)}.
+ *
+ * @param clsName See {@link #createMinimalClassWithCU(String)}
+ */
+ public default ClassifierReference createMinimalClsRef(String clsName) {
+ return (ClassifierReference) this.createMinimalTypeReference(new ClassifierReferenceInitialiser(),
+ this.createMinimalClassWithCU(clsName));
+ }
+
+ /**
+ * A variant of
+ * {@link #createMinimalTypeReference(ITypeReferenceInitialiser, Classifier)},
+ * where the {@link Classifier} parameter is constructed using
+ * {@link #createMinimalClassWithCU(String)}.
+ *
+ * @param clsName See {@link #createMinimalClassWithCU(String)}
+ */
+ public default TypeReference createMinimalClsRef(ITypeReferenceInitialiser init, String clsName) {
+ return this.createMinimalTypeReference(init, this.createMinimalClassWithCU(clsName));
+ }
+
+ /**
+ * @param clsName See {@link #createMinimalClsRef(String)}
+ *
+ * @return A {@link NamespaceClassifierReference} instance with a
+ * {@link ClassifierReference} constructed with
+ * {@link #createMinimalClsRef(String)}.
+ */
+ public default NamespaceClassifierReference createMinimalCNR(String clsName) {
+ var init = new NamespaceClassifierReferenceInitialiser();
+ NamespaceClassifierReference result = init.instantiate();
+ init.addClassifierReference(result, this.createMinimalClsRef(clsName));
+ return result;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java
new file mode 100644
index 0000000000..bb2f1c2203
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java
@@ -0,0 +1,124 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.complextests;
+
+import org.eclipse.emf.common.util.EList;
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.classifiers.impl.ClassImpl;
+import org.emftext.language.java.generics.TypeArgument;
+import org.emftext.language.java.references.IdentifierReference;
+import org.emftext.language.java.references.Reference;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.emftext.language.java.types.Type;
+import org.emftext.language.java.types.TypeReference;
+
+/**
+ * A dummy class that implements both {@link ReferenceableElement} (via
+ * {@link ClassImpl}) and {@link Reference} interfaces. Can be used to test
+ * cases, where for an {@link IdentifierReference} instance {@code IR} the
+ * following holds:
+ *
+ * {@code IR.getNext() == IR.getTarget()}
+ *
+ * Currently there is no actual class used by JaMoPP, which implements both
+ * interfaces named above. This class was implemented to test for the mentioned
+ * scenario regardless, as references are very commonly used in programming and
+ * should therefore be extensively tested.
+ *
+ * This dummy class takes two {@link Reference} instances: It wraps and uses one
+ * of them for the method implementations needed by the {@link Reference}
+ * interface, except for the {@link #getPrevious()} method. The other
+ * {@link Reference} instance is the return value for the {@link #getPrevious()}
+ * method. This is necessary, as setting the previous attribute of a
+ * {@link Reference} instance directly is currently not possible.
+ *
+ * !!! IMPORTANT: This class is NOT a proper implementation of its
+ * super-types. The sole purpose of this class is to be used as a parameter for
+ * {@code IR.setNext(...)} and {@code IR.setTarget(...)} in tests !!!
+ *
+ * @author Alp Torac Genc
+ */
+public class DummyClassImplAndReference extends ClassImpl implements Reference {
+ private Reference innerRef;
+ private Reference prev;
+
+ /**
+ * Constructs an instance.
+ *
+ * @param prev The return value of {@code this.}{@link #getPrevious()}
+ * @param innerRef The {@link Reference} instance, to whom the calls to methods
+ * required by the {@link Reference} interface will be
+ * delegated, except for {@link #getPrevious()}.
+ */
+ public DummyClassImplAndReference(Reference prev, Reference innerRef) {
+ this.prev = prev;
+ this.innerRef = innerRef;
+ }
+
+ @Override
+ public Type getAlternativeType() {
+ return innerRef.getAlternativeType();
+ }
+
+ @Override
+ public long getArrayDimension() {
+ return innerRef.getArrayDimension();
+ }
+
+ @Override
+ public Type getOneType(boolean arg0) {
+ return innerRef.getOneType(arg0);
+ }
+
+ @Override
+ public TypeReference getOneTypeReference(boolean arg0) {
+ return innerRef.getOneTypeReference(arg0);
+ }
+
+ @Override
+ public Type getType() {
+ return innerRef.getType();
+ }
+
+ @Override
+ public EList getTypeArguments() {
+ return innerRef.getTypeArguments();
+ }
+
+ @Override
+ public EList getActualTargets() {
+ return innerRef.getActualTargets();
+ }
+
+ @Override
+ public EList getArraySelectors() {
+ return innerRef.getArraySelectors();
+ }
+
+ @Override
+ public Reference getNext() {
+ return innerRef.getNext();
+ }
+
+ /**
+ * @return The parameter prev that was passed to the constructor.
+ * @see {@link DummyClassImplAndReference#DummyClassDecorator(Reference, Reference)}
+ */
+ @Override
+ public Reference getPrevious() {
+ return prev;
+ }
+
+ @Override
+ public Type getReferencedType() {
+ return innerRef.getReferencedType();
+ }
+
+ @Override
+ public TypeReference getReferencedTypeReference() {
+ return innerRef.getReferencedTypeReference();
+ }
+
+ @Override
+ public void setNext(Reference arg0) {
+ innerRef.setNext(arg0);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java
new file mode 100644
index 0000000000..3216f97d8b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java
@@ -0,0 +1,290 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.complextests;
+
+import org.eclipse.emf.ecore.EObject;
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.references.IdentifierReference;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser;
+import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IdentifierReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser;
+
+/**
+ * Contains tests for similarity checking {@link IdentifierReference} instances.
+ * These tests cover cases, which are not addressed in other, simpler tests.
+ *
+ * @author Alp Torac Genc
+ */
+@Disabled("Disabled till null pointer exceptions are fixed")
+public class IdentifierReferenceContainerTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+ /**
+ * Realises the functionality of
+ * {@code JaMoPPElementUtil.getFirstContainerNotOfGivenType(...)}
+ *
+ * Implementation of that method is copied into this method, since it cannot be
+ * accessed in the current project setup.
+ */
+ protected EObject getFirstEligibleContainer(IdentifierReference ref) {
+ var currentContainer = ref.eContainer();
+
+ while (currentContainer != null
+ && (currentContainer instanceof Expression || currentContainer instanceof ArraySelector)) {
+ currentContainer = currentContainer.eContainer();
+ }
+
+ if (!(currentContainer instanceof Expression) && !(currentContainer instanceof ArraySelector)) {
+ return currentContainer;
+ }
+
+ return null;
+ }
+
+ /**
+ * Conditions here were copied from the
+ * {@code ReferencesSimilaritySwitch.caseIdentifierReference(...)} for the sake
+ * of testing.
+ *
+ * This method is used to determine, whether similarity checking will be
+ * performed on the containers of the target attribute of the given references.
+ * Since reaching the said state requires an advanced setup, it is important to
+ * know if it actually is reached.
+ *
+ * @return Whether the similarity of {@code refX.getTarget().eContainer()} will
+ * be computed, where X = {1, 2}.
+ */
+ protected boolean isTargetContainerSimilarityCheckReached(IdentifierReference ref1, IdentifierReference ref2) {
+ var ref1Container = this.getFirstEligibleContainer(ref1);
+ var ref2Container = this.getFirstEligibleContainer(ref2);
+
+ var target1 = ref1.getTarget();
+ var target2 = ref2.getTarget();
+
+ EObject target1Container = null;
+ if (target1 != null) {
+ target1Container = target1.eContainer();
+ }
+
+ EObject target2Container = null;
+ if (target2 != null) {
+ target2Container = target2.eContainer();
+ }
+
+ return target1Container != ref1Container && target2Container != ref2Container &&
+
+ // refX cannot be null and there is currently no EObject implementor that can be
+ // the target of an IdentifierReference IR and have IR as its container.
+ // Currently impossible to break the following conditions with actual EObject
+ // implementors
+ target1Container != ref1 && target2Container != ref2;
+ }
+
+ /**
+ * Nests an {@link ExpressionStatement} es instance within an
+ * {@link ExplicitConstructorCall} ecc instance and sets ref's container to ecc.
+ *
+ *
+ * Can be used to add a container to ref (as in {@code ref.eContainer()}).
+ *
+ * Note: ref's eligible container {@code this.getFirstEligibleContainer(ref)}
+ * will be es. This is ensured by assertions.
+ */
+ protected void initialiseIdentifierReference(IdentifierReference ref) {
+ var insInit = new ExplicitConstructorCallInitialiser();
+ var ecc = insInit.instantiate();
+ Assertions.assertTrue(insInit.addArgument(ecc, ref));
+
+ var esInit = new ExpressionStatementInitialiser();
+ var es = esInit.instantiate();
+ Assertions.assertTrue(esInit.setExpression(es, ecc));
+
+ Assertions.assertEquals(ref.eContainer(), ecc);
+ Assertions.assertEquals(this.getFirstEligibleContainer(ref), es);
+ }
+
+ /**
+ * Checks whether similarity checking works as intended as far as comparing the
+ * containers of both targets is concerned. Note that the said target containers
+ * will only be compared, if
+ * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)}
+ * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via
+ * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method considers only the currently possible scenarios, where
+ * actual {@link EObject} implementors are used throughout the entire test.
+ */
+ @Test
+ public void test_AllRealisticCases() {
+ var targetName = "cls1";
+ var targetWCon1 = this.createMinimalClassifierWithCU(new ClassInitialiser(), targetName, "cu1");
+ var targetWCon2 = this.createMinimalClassifierWithCU(new ClassInitialiser(), targetName, "cu2");
+ var targetWOCon = this.createMinimalClass(targetName);
+
+ // Ensure that the containers are set correctly
+ Assertions.assertNotNull(targetWCon1.eContainer());
+ Assertions.assertNotNull(targetWCon2.eContainer());
+ Assertions.assertFalse(this.getActualEquality(targetWCon1.eContainer(), targetWCon2.eContainer()));
+ Assertions.assertNull(targetWOCon.eContainer());
+
+ var objInit = new IdentifierReferenceInitialiser();
+
+ var objWCon = objInit.instantiate();
+ this.initialiseIdentifierReference(objWCon);
+
+ var objWOCon = objInit.instantiate();
+
+ var targetArr = new ReferenceableElement[] { targetWCon1, targetWCon2, targetWOCon };
+ var objArr = new IdentifierReference[] { objWCon, objWOCon };
+
+ var targetCloneArr = new ReferenceableElement[targetArr.length];
+ var objCloneArr = new IdentifierReference[objArr.length];
+
+ // Make sure that the clones also have containers, if the
+ // original object had one.
+
+ for (int i = 0; i < targetArr.length; i++) {
+ targetCloneArr[i] = this.cloneEObjWithContainers(targetArr[i]);
+ Assertions.assertTrue(this.getActualEquality(targetArr[i], targetCloneArr[i]));
+ }
+
+ for (int i = 0; i < objArr.length; i++) {
+ objCloneArr[i] = this.cloneEObjWithContainers(objArr[i]);
+ Assertions.assertTrue(this.getActualEquality(objArr[i], objCloneArr[i]));
+ }
+
+ // Test for all possible realistic container situations of identifier reference
+ // instances and that of their target
+ for (var targetOne : targetArr) {
+ for (var targetTwo : targetCloneArr) {
+ for (var objOne : objArr) {
+ for (var objTwo : objCloneArr) {
+ Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo));
+ Assertions.assertTrue(objInit.setTarget(objOne, targetOne));
+ Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo));
+
+ var expectedResult = !this.isTargetContainerSimilarityCheckReached(objOne, objTwo)
+ || this.isSimilar(targetOne.eContainer(), targetTwo.eContainer());
+
+ this.testSimilarity(objOne, objTwo, expectedResult);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks whether similarity checking works as intended as far as comparing the
+ * containers of both targets is concerned. Note that the said target containers
+ * will only be compared, if
+ * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)}
+ * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via
+ * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method tackles the case, where two {@link IdentifierReference}
+ * instances IR_1 and IR_2 each have their target as their next:
+ * {@code IR_i.getTarget() == IR_i.getNext()}
+ *
+ * Currently, this case is not realistic.
+ */
+ @Test
+ public void test_TargetEqualsNext_InBothRefs() {
+ var objInit = new IdentifierReferenceInitialiser();
+ var objOne = objInit.instantiate();
+
+ var objTwo = objInit.instantiate();
+
+ var targetOne = new DummyClassImplAndReference(objOne, new StringReferenceInitialiser().instantiate());
+ var targetTwo = new DummyClassImplAndReference(objTwo, new StringReferenceInitialiser().instantiate());
+
+ Assertions.assertTrue(objInit.setTarget(objOne, targetOne));
+ Assertions.assertTrue(objInit.setNext(objOne, (DummyClassImplAndReference) targetOne));
+
+ Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo));
+ Assertions.assertTrue(objInit.setNext(objTwo, (DummyClassImplAndReference) targetTwo));
+
+ /*
+ * Make sure that:
+ *
+ * targetOne.eContainer() != objOne.eContainer() && targetTwo.eContainer() !=
+ * objTwo.eContainer() && targetOne.eContainer() == objOne &&
+ * targetTwo.eContainer() == objTwo
+ */
+ Assertions.assertNull(objOne.eContainer());
+ Assertions.assertNull(objTwo.eContainer());
+ Assertions.assertEquals(targetOne.eContainer(), objOne);
+ Assertions.assertEquals(targetTwo.eContainer(), objTwo);
+ Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo));
+ Assertions.assertFalse(this.isTargetContainerSimilarityCheckReached(objOne, objTwo));
+
+ // Swap parameter positions to make sure that the symmetry of similarity
+ // checking is asserted
+ Assertions.assertTrue(this.isSimilar(objOne, objTwo));
+ Assertions.assertTrue(this.isSimilar(objTwo, objOne));
+ }
+
+ /**
+ * Checks whether similarity checking works as intended as far as comparing the
+ * containers of both targets is concerned. Note that the said target containers
+ * will only be compared, if
+ * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)}
+ * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via
+ * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method tackles the case, where one {@link IdentifierReference}
+ * instance IR_1 has its target as its next:
+ * {@code IR_1.getTarget() == IR_1.getNext()}. In this case, IR_2 only has its
+ * target set: {@code IR_2.getTarget() != null && IR_2.getNext() == null}
+ *
+ * Currently, this case is not realistic.
+ */
+ @Test
+ public void test_TargetEqualsNext_InOneRef() {
+ var objInit = new IdentifierReferenceInitialiser();
+
+ var objOne = objInit.instantiate();
+ var objTwo = objInit.instantiate();
+
+ var targetOne = new DummyClassImplAndReference(objOne, new StringReferenceInitialiser().instantiate());
+ var targetTwo = new DummyClassImplAndReference(objTwo, new StringReferenceInitialiser().instantiate());
+
+ Assertions.assertTrue(objInit.setTarget(objOne, targetOne));
+ Assertions.assertTrue(objInit.setNext(objOne, (DummyClassImplAndReference) targetOne));
+
+ // Only set targetTwo as target in objTwo and not also as next, since that will
+ // make objTwo its container
+ Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo));
+
+ /*
+ * Make sure that:
+ *
+ * targetOne.eContainer() != objOne.eContainer() && targetTwo.eContainer() !=
+ * objTwo.eContainer() && targetOne.eContainer() == objOne &&
+ * targetTwo.eContainer() != objTwo
+ */
+ Assertions.assertNull(objOne.eContainer());
+ Assertions.assertNull(objTwo.eContainer());
+ Assertions.assertEquals(targetOne.eContainer(), objOne);
+ Assertions.assertNotEquals(targetTwo.eContainer(), objTwo);
+ Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo));
+ Assertions.assertFalse(this.isTargetContainerSimilarityCheckReached(objOne, objTwo));
+
+ // Swap parameter positions to make sure that the symmetry of similarity
+ // checking is asserted
+ // objX.getNext() matters for similarity checking
+ Assertions.assertFalse(this.isSimilar(objOne, objTwo));
+ Assertions.assertFalse(this.isSimilar(objTwo, objOne));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java
new file mode 100644
index 0000000000..8c7bbfd202
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java
@@ -0,0 +1,159 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.complextests;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.emftext.language.java.members.MembersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters;
+import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser;
+
+/**
+ * Tests whether {@link MemberContainer} implementors' similarity is computed as
+ * expected, if they contain different types of {@link Member} instances.
+ * {@link Member} instances are added as members to {@link MemberContainer}s in
+ * some tests and as default members in tests in others.
+ *
+ * There are differences between this test class and the
+ * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests.MemberContainerTest}.
+ * This test class checks the similarity of 2 {@link MemberContainer} instances
+ * of the same type but with varying {@link Member} instances. The latter only
+ * tests the similarity of {@link MemberContainer} instances of the same type
+ * with the same {@link Member} instances.
+ *
+ * This test class is overshadowed by neither
+ * {@link cipm.consistency.fitests.similarity.jamopp.unittests.impltests} nor
+ * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests},
+ * because the type of the {@link MemberContainer} containing a certain
+ * {@link Member} can indirectly influence the similarity checking result of
+ * both {@link MemberContainer} instances and {@link Member} instances (via
+ * qualified name differences for instance).
+ *
+ * @author Alp Torac Genc
+ */
+public class MemberInContainerTest extends AbstractJaMoPPSimilarityTest {
+ /**
+ * @return A list of all initialisers that implement {@link IMemberInitialiser}.
+ * If an initialiser is adaptable, it will be adapted. Non-adaptable
+ * initialisers will be unaffected.
+ */
+ private static List getAllMemberInitInstances() {
+ var res = new ArrayList();
+ var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IMemberInitialiser.class);
+ inits.forEach((i) -> res.add(((IMemberInitialiser) i)));
+ return res;
+ }
+
+ /**
+ * @return A list of all initialisers that implement
+ * {@link IMemberContainerInitialiser}. If an initialiser is adaptable,
+ * it will be adapted. Non-adaptable initialisers will be unaffected.
+ */
+ private static List getAllMemberContainerInitInstances() {
+ var res = new ArrayList();
+ var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IMemberContainerInitialiser.class);
+ inits.forEach((i) -> res.add(((IMemberContainerInitialiser) i)));
+ return res;
+ }
+
+ /**
+ * @return Parameters for the test methods in this test class. Refer to their
+ * documentation for more information.
+ */
+ private static Stream getMemConMemPairs() {
+ var res = new ArrayList();
+
+ for (var memConInit : getAllMemberContainerInitInstances()) {
+ for (var memInit1 : getAllMemberInitInstances()) {
+ for (var memInit2 : getAllMemberInitInstances()) {
+ var displayName = memInit1.getClass().getSimpleName() + " - " + memInit2.getClass().getSimpleName()
+ + " in " + memConInit.getClass().getSimpleName();
+ res.add(Arguments.of(displayName, memConInit, memInit1, memInit2));
+ }
+ }
+ }
+
+ return res.stream();
+ }
+
+ /**
+ * Tests whether 2 {@link MemberContainer} instances of the same type are
+ * considered to be similar, if certain {@link Member} instances are added to
+ * them as ordinary members ({@code via memConInit.addMember(member)}).
+ *
+ * @param displayName The display name of the test
+ * @param memConInit The initialiser that will be used to instantiate both
+ * member containers
+ * @param memInit1 The member that will be added to the first member
+ * container instance (as ordinary member)
+ * @param memInit2 The member that will be added to the second member
+ * container instance (as ordinary member)
+ */
+ @ParameterizedTest(name = "{0}")
+ @MethodSource("getMemConMemPairs")
+ public void testMembersInContainers(String displayName, IMemberContainerInitialiser memConInit,
+ IMemberInitialiser memInit1, IMemberInitialiser memInit2) {
+ var mem1 = memInit1.instantiate();
+ var mem2 = memInit2.instantiate();
+
+ var memCon1 = memConInit.instantiate();
+ Assertions.assertTrue(memConInit.initialise(memCon1));
+ var memCon2 = memConInit.instantiate();
+ Assertions.assertTrue(memConInit.initialise(memCon2));
+
+ this.assertSimilarityResult(memCon1, memCon2, true);
+
+ Assertions.assertTrue(memConInit.addMember(memCon1, mem1));
+ Assertions.assertTrue(memConInit.addMember(memCon2, mem2));
+
+ this.assertSimilarityResult(memCon1, memCon2,
+ mem1.getClass().equals(mem2.getClass()) || (this.getExpectedSimilarityResult(memCon1.getClass(),
+ MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS)
+ && this.getExpectedSimilarityResult(memCon2.getClass(),
+ MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS)));
+ }
+
+ /**
+ * Tests whether 2 {@link MemberContainer} instances of the same type are
+ * considered to be similar, if certain {@link Member} instances are added to
+ * them as default members ({@code via memConInit.addDefaultMember(member)}).
+ *
+ * @param displayName The display name of the test
+ * @param memConInit The initialiser that will be used to instantiate both
+ * member containers
+ * @param memInit1 The member that will be added to the first member
+ * container instance (as default member)
+ * @param memInit2 The member that will be added to the second member
+ * container instance (as default member)
+ */
+ @ParameterizedTest(name = "{0}")
+ @MethodSource("getMemConMemPairs")
+ public void testDefaultMembersInContainers(String displayName, IMemberContainerInitialiser memConInit,
+ IMemberInitialiser memInit1, IMemberInitialiser memInit2) {
+ var mem1 = memInit1.instantiate();
+ var mem2 = memInit2.instantiate();
+
+ var memCon1 = memConInit.instantiate();
+ Assertions.assertTrue(memConInit.initialise(memCon1));
+ var memCon2 = memConInit.instantiate();
+ Assertions.assertTrue(memConInit.initialise(memCon2));
+
+ this.assertSimilarityResult(memCon1, memCon2, true);
+
+ Assertions.assertTrue(memConInit.addDefaultMember(memCon1, mem1));
+ Assertions.assertTrue(memConInit.addDefaultMember(memCon2, mem2));
+
+ this.assertSimilarityResult(memCon1, memCon2,
+ mem1.getClass().equals(mem2.getClass()) || (this.getExpectedSimilarityResult(memCon1.getClass(),
+ MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS)
+ && this.getExpectedSimilarityResult(memCon2.getClass(),
+ MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS)));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java
new file mode 100644
index 0000000000..aeda8611b9
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java
@@ -0,0 +1,210 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.complextests;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.emftext.language.java.statements.ExpressionStatement;
+import org.emftext.language.java.statements.LocalVariableStatement;
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.SynchronizedBlock;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.IStatementInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser;
+
+/**
+ * Tests whether similarity checking works as intended for {@link Statement}
+ * instances, which are contained in {@link StatementListContainer} instances.
+ * Since testing that requires setup effort that goes beyond simplistic tests,
+ * it is done here.
+ *
+ * Tests are parameterised over all possible combinations of
+ * {@link StatementListContainer} and {@link Statement} implementors.
+ *
+ * @author Alp Torac Genc
+ */
+public class StatementPositionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+ /**
+ * @return A list of all initialisers that implement
+ * {@link IStatementListContainerInitialiser}. If an initialiser is
+ * adaptable, it will be adapted. Non-adaptable initialisers will be
+ * unaffected.
+ */
+ private static List getAllSLCInitInstances() {
+ var res = new ArrayList();
+ var inits = new JaMoPPInitialiserParameters()
+ .getEachInitialiserOnceBySuper(IStatementListContainerInitialiser.class);
+ inits.forEach((i) -> res.add(((IStatementListContainerInitialiser) i)));
+ return res;
+ }
+
+ /**
+ * @return A list of all initialisers that implement
+ * {@link IStatementInitialiser}. If an initialiser is adaptable, it
+ * will be adapted. Non-adaptable initialisers will be unaffected.
+ */
+ private static List getAllStatementInitInstances() {
+ var res = new ArrayList();
+ var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IStatementInitialiser.class);
+ inits.forEach((i) -> res.add(((IStatementInitialiser) i)));
+ return res;
+ }
+
+ /**
+ * The return value of this method was derived from the implementation of the
+ * current similarity checker.
+ *
+ * @return Whether the position of an instance of the given class within its
+ * container matters.
+ */
+ private static Boolean doesStatementPositionMatter(Class extends Statement> cls) {
+ return ExpressionStatement.class.isAssignableFrom(cls) || LocalVariableStatement.class.isAssignableFrom(cls)
+ || SynchronizedBlock.class.isAssignableFrom(cls);
+ }
+
+ /**
+ * @return Parameters for the test methods in this test class. Refer to their
+ * documentation for more information.
+ */
+ private static Stream genTestParams() {
+ var res = new ArrayList();
+
+ for (var stInit : getAllStatementInitInstances()) {
+ for (var slcInit : getAllSLCInitInstances()) {
+ var displayName = stInit.getClass().getSimpleName() + " in " + slcInit.getClass().getSimpleName();
+
+ res.add(Arguments.of(displayName, slcInit, stInit));
+ }
+ }
+
+ return res.stream();
+ }
+
+ /**
+ * Tests if similar {@link Statement} instances contained by their respective
+ * {@link StatementListContainer} instance are similar, provided they are
+ * contained in the same order.
+ *
+ * @param displayName The display name of the test
+ * @param containerInit The initialiser that will be used to instantiate the
+ * statement list container
+ * @param containeeInit The initialiser that will be used to instantiate the
+ * statement that will be added to the constructed
+ * container
+ */
+ @ParameterizedTest(name = "{0}")
+ @MethodSource("genTestParams")
+ public void testSameStatementPosition(String displayName, IStatementListContainerInitialiser containerInit,
+ IStatementInitialiser containeeInit) {
+ var slc1 = containerInit.instantiate();
+ Assertions.assertTrue(containerInit.initialise(slc1));
+ var slc2 = containerInit.instantiate();
+ Assertions.assertTrue(containerInit.initialise(slc2));
+
+ var lv1name = "lv1";
+ var lv2name = "lv2";
+
+ // Use 3 statements to make sure that there is always a predecessor and a
+ // successor for the statement generated by containeeInit
+
+ var st11 = this.createMinimalLVS(lv1name);
+ var st12 = containeeInit.instantiate();
+ var st13 = this.createMinimalLVS(lv2name);
+
+ // Make sure that the surrounding statements are not similar
+ this.assertSimilarityResult(st11, st13, false);
+ var sts1 = new Statement[] { st11, st12, st13 };
+
+ var st21 = this.cloneEObj(st11);
+ var st22 = this.cloneEObj(st12);
+ var st23 = this.cloneEObj(st13);
+
+ // Make sure that clones of surrounding statements are not similar
+ this.assertSimilarityResult(st21, st23, false);
+ var sts2 = new Statement[] { st21, st22, st23 };
+
+ Assertions.assertTrue(containerInit.addStatements(slc1, sts1));
+ Assertions.assertTrue(containerInit.addStatements(slc2, sts2));
+
+ // Since similar statements are added in the same order, they are similar, if
+ // their position within the respective arrays is the same
+ for (int i = 0; i < sts1.length; i++) {
+ for (int j = 0; j < sts2.length; j++) {
+ var st1 = sts1[i];
+ var st2 = sts2[j];
+
+ this.assertSimilarityResult(st1, st2, i == j);
+ }
+ }
+ }
+
+ /**
+ * Tests if similar {@link Statement} instances contained by their respective
+ * {@link StatementListContainer} instance are not similar, provided their order
+ * within their container differ.
+ *
+ * @param displayName The display name of the test
+ * @param containerInit The initialiser that will be used to instantiate the
+ * statement list container
+ * @param containeeInit The initialiser that will be used to instantiate the
+ * statement that will be added to the constructed
+ * container
+ */
+ @ParameterizedTest
+ @MethodSource("genTestParams")
+ public void testDifferentStatementPosition(String displayName, IStatementListContainerInitialiser containerInit,
+ IStatementInitialiser containeeInit) {
+ var containeeCls = containeeInit.instantiate().getClass();
+
+ var slc1 = containerInit.instantiate();
+ Assertions.assertTrue(containerInit.initialise(slc1));
+ var slc2 = containerInit.instantiate();
+ Assertions.assertTrue(containerInit.initialise(slc2));
+
+ var lv1name = "lv1";
+ var lv2name = "lv2";
+
+ // Use 3 statements to make sure that there is always a predecessor and a
+ // successor for the statement generated by containeeInit
+
+ var st11 = this.createMinimalLVS(lv1name);
+ var st12 = containeeInit.instantiate();
+ var st13 = this.createMinimalLVS(lv2name);
+
+ // Make sure that the surrounding statements are not similar
+ this.assertSimilarityResult(st11, st13, false);
+ var sts1 = new Statement[] { st11, st12, st13 };
+
+ var st21 = this.cloneEObj(st11);
+ var st22 = this.cloneEObj(st12);
+ var st23 = this.cloneEObj(st13);
+
+ // Make sure that clones of surrounding statements are not similar
+ this.assertSimilarityResult(st21, st23, false);
+ var sts2 = new Statement[] { st23, st22, st21 };
+
+ Assertions.assertTrue(containerInit.addStatements(slc1, sts1));
+ Assertions.assertTrue(containerInit.addStatements(slc2, sts2));
+
+ // Since similar statements are added in the reverse order, only the statements
+ // generated by containeeInit are similar, if similarity checking ignores their
+ // positioning within their container. The order of the surrounding st variables
+ // never match and they are not similar, as asserted above.
+ for (int i = 0; i < sts1.length; i++) {
+ for (int j = 0; j < sts2.length; j++) {
+ var st1 = sts1[i];
+ var st2 = sts2[j];
+
+ this.assertSimilarityResult(st1, st2, containeeCls.isAssignableFrom(st1.getClass())
+ && containeeCls.isAssignableFrom(st2.getClass()) && !doesStatementPositionMatter(containeeCls));
+ }
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java
new file mode 100644
index 0000000000..3e96529b1e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * Contains unit tests for {@link EObject} classes/interfaces within JaMoPP. In
+ * the said tests, {@link EObject} instances are constructed programmatically
+ * and are checked for similarity.
+ *
+ * The tests within this package are meant to test more advanced cases, which
+ * are not covered in
+ * {@link cipm.consistency.fitests.similarity.jamopp.unittests.impltests} or
+ * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests}.
+ * Such cases involve multiple attributes of 2 {@link EObject} instances being
+ * different and/or more advanced test setup.
+ *
+ * TODO Add complex tests for AdditionalField (once the missing case methods are
+ * added)
+ *
+ * TODO Add complex tests for LocalVariableStatement with container Variable
+ *
+ * TODO Look for further complex test cases (once the missing case methods are
+ * added)
+ */
+package cipm.consistency.fitests.similarity.jamopp.unittests.complextests;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java
new file mode 100644
index 0000000000..8bb79fafa9
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java
@@ -0,0 +1,69 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.AdditiveExpression;
+import org.emftext.language.java.expressions.AdditiveExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.operators.AdditiveOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.AdditiveExpressionInitialiser;
+
+public class AdditiveExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected AdditiveExpression initElement(AdditiveExpressionChild[] children, AdditiveOperator[] ops) {
+ var aeInit = new AdditiveExpressionInitialiser();
+ var ae = aeInit.instantiate();
+ Assertions.assertTrue(aeInit.addChildren(ae, children));
+ Assertions.assertTrue(aeInit.addAdditiveOperators(ae, ops));
+ return ae;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null),
+ ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }, null),
+ this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ new AdditiveExpressionInitialiser(), false, ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testAdditiveOperator() {
+ this.testSimilarity(this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }),
+ this.initElement(null, new AdditiveOperator[] { this.createSubtractionOperator() }),
+ ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS);
+ }
+
+ @Test
+ public void testAdditiveOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new AdditiveOperator[] { this.createAdditionOperator(), this.createSubtractionOperator() }),
+ this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }),
+ ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS);
+ }
+
+ @Test
+ public void testAdditiveOperatorNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }),
+ new AdditiveExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java
new file mode 100644
index 0000000000..ab90efaff3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java
@@ -0,0 +1,41 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.AndExpression;
+import org.emftext.language.java.expressions.AndExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.AndExpressionInitialiser;
+
+public class AndExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected AndExpression initElement(AndExpressionChild[] children) {
+ var aeInit = new AndExpressionInitialiser();
+ var ae = aeInit.instantiate();
+ Assertions.assertTrue(aeInit.addChildren(ae, children));
+ return ae;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(2) }),
+ ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(this.initElement(
+ new AndExpressionChild[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) }),
+ this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ new AndExpressionInitialiser(), false, ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java
new file mode 100644
index 0000000000..be86e6c95a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java
@@ -0,0 +1,57 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.emftext.language.java.members.InterfaceMethod;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods;
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationAttributeSettingInitialiser;
+
+public class AnnotationAttributeSettingTest extends AbstractJaMoPPSimilarityTest implements UsesMethods, UsesAnnotationValues {
+ protected AnnotationAttributeSetting initElement(InterfaceMethod attr, AnnotationValue val) {
+ var initialiser = new AnnotationAttributeSettingInitialiser();
+ AnnotationAttributeSetting result = initialiser.instantiate();
+ Assertions.assertTrue(initialiser.setAttribute(result, attr));
+ Assertions.assertTrue(initialiser.setValue(result, val));
+
+ return result;
+ }
+
+ @Test
+ public void testAttribute() {
+ var objOne = this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im1Name"), null);
+ var objTwo = this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im2Name"), null);
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testAttributeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im1Name"), null),
+ new AnnotationAttributeSettingInitialiser(), false,
+ AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE);
+ }
+
+ @Test
+ public void testValue() {
+ var objOne = this.initElement(null, this.createNullLiteral());
+ var objTwo = this.initElement(null, this.createMinimalSR("val"));
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createNullLiteral()),
+ new AnnotationAttributeSettingInitialiser(), false,
+ AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java
new file mode 100644
index 0000000000..1a56c4e71a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java
@@ -0,0 +1,57 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.annotations.AnnotationParameter;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.emftext.language.java.classifiers.Classifier;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationParameters;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationInstanceInitialiser;
+
+public class AnnotationInstanceTest extends AbstractJaMoPPSimilarityTest
+ implements UsesConcreteClassifiers, UsesAnnotationParameters {
+
+ protected AnnotationInstance initElement(Classifier annotation, AnnotationParameter annoParam) {
+ var initialiser = new AnnotationInstanceInitialiser();
+ AnnotationInstance ai = initialiser.instantiate();
+ Assertions.assertTrue(initialiser.setAnnotation(ai, annotation));
+ Assertions.assertTrue(initialiser.setParameter(ai, annoParam));
+ return ai;
+ }
+
+ @Test
+ public void testAnnotation() {
+ var objOne = this.initElement(this.createMinimalClass("cls1"), null);
+ var objTwo = this.initElement(this.createMinimalClass("cls2"), null);
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__ANNOTATION);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testAnnotationNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1"), null),
+ new AnnotationInstanceInitialiser(), false,
+ AnnotationsPackage.Literals.ANNOTATION_INSTANCE__ANNOTATION);
+ }
+
+ @Test
+ public void testParameter() {
+ var objOne = this.initElement(null, this.createSingleNullAnnoParam());
+ var objTwo = this.initElement(null, this.createSingleStrAnnoParam("val"));
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testParameterNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createSingleNullAnnoParam()),
+ new AnnotationInstanceInitialiser(), false, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java
new file mode 100644
index 0000000000..acc71ebe39
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java
@@ -0,0 +1,46 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationParameterList;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationAttributeSettings;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationParameters;
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationParameterListInitialiser;
+
+public class AnnotationParameterListTest extends AbstractJaMoPPSimilarityTest
+ implements UsesAnnotationParameters, UsesAnnotationAttributeSettings {
+ protected AnnotationParameterList initElement(AnnotationAttributeSetting[] annoAttrSettingsArr) {
+ var aplInit = new AnnotationParameterListInitialiser();
+ var apl = aplInit.instantiate();
+ Assertions.assertTrue(aplInit.addSettings(apl, annoAttrSettingsArr));
+ return apl;
+ }
+
+ @Test
+ public void testSetting() {
+ var objOne = this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() });
+ var objTwo = this.initElement(new AnnotationAttributeSetting[] { this.createNullAAS() });
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS);
+ }
+
+ @Test
+ public void testSettingSize() {
+ var objOne = this
+ .initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS(), this.createNullAAS() });
+ var objTwo = this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() });
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS);
+ }
+
+ @Test
+ public void testSettingNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() }),
+ new AnnotationParameterListInitialiser(), false,
+ AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java
new file mode 100644
index 0000000000..06df7b9e96
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.arrays.ArrayInitializationValue;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.emftext.language.java.arrays.ArrayInitializer;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.arrays.ArrayInitializerInitialiser;
+
+public class ArrayInitializerTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ArrayInitializer initElement(ArrayInitializationValue[] initVals) {
+ var aiInit = new ArrayInitializerInitialiser();
+ var ai = aiInit.instantiate();
+ Assertions.assertTrue(aiInit.addInitialValues(ai, initVals));
+ return ai;
+ }
+
+ @Test
+ public void testInitialValues() {
+ var objOne = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) });
+ var objTwo = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(2) });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES);
+ }
+
+ @Test
+ public void testInitialValuesSize() {
+ var objOne = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) });
+ var objTwo = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES);
+ }
+
+ @Test
+ public void testInitialValuesNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) }),
+ new ArrayInitializerInitialiser(), false, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java
new file mode 100644
index 0000000000..84eaf8f740
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.arrays.ArrayInstantiationBySize;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.emftext.language.java.expressions.Expression;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.arrays.ArrayInstantiationBySizeInitialiser;
+
+public class ArrayInstantiationBySizeTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ArrayInstantiationBySize initElement(Expression[] sizes) {
+ var aibsInit = new ArrayInstantiationBySizeInitialiser();
+ var aibs = aibsInit.instantiate();
+ Assertions.assertTrue(aibsInit.addSizes(aibs, sizes));
+ return aibs;
+ }
+
+ @Test
+ public void testSize() {
+ var objOne = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) });
+ var objTwo = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(2) });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES);
+ }
+
+ @Test
+ public void testSizeSize() {
+ var objOne = this.initElement(
+ new Expression[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) });
+ var objTwo = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES);
+ }
+
+ @Test
+ public void testSizeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) }),
+ new ArrayInstantiationBySizeInitialiser(), false,
+ ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java
new file mode 100644
index 0000000000..416f85893b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.emftext.language.java.expressions.Expression;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.arrays.ArraySelectorInitialiser;
+
+public class ArraySelectorTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ArraySelector initElement(Expression pos) {
+ var asInit = new ArraySelectorInitialiser();
+ var as = asInit.instantiate();
+ Assertions.assertTrue(asInit.setPosition(as, pos));
+ return as;
+ }
+
+ @Test
+ public void testPosition() {
+ var objOne = this.initElement(this.createDecimalIntegerLiteral(1));
+ var objTwo = this.initElement(this.createDecimalIntegerLiteral(2));
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_SELECTOR__POSITION);
+ }
+
+ @Test
+ public void testPositionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)),
+ new ArraySelectorInitialiser(), false, ArraysPackage.Literals.ARRAY_SELECTOR__POSITION);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java
new file mode 100644
index 0000000000..4f3c999d97
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Assert;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStringReferences;
+import cipm.consistency.initialisers.jamopp.statements.AssertInitialiser;
+
+public class AssertTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesStringReferences {
+ protected Assert initElement(Expression errMsg) {
+ var asrtInit = new AssertInitialiser();
+ var asrt = asrtInit.instantiate();
+ Assertions.assertTrue(asrtInit.setErrorMessage(asrt, errMsg));
+ return asrt;
+ }
+
+ @Test
+ public void testErrorMessage() {
+ var objOne = this.initElement(this.createMinimalSR("val1"));
+ var objTwo = this.initElement(this.createMinimalSR("val2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.ASSERT__ERROR_MESSAGE);
+ }
+
+ @Test
+ public void testErrorMessageNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalSR("val1")), new AssertInitialiser(), false,
+ StatementsPackage.Literals.ASSERT__ERROR_MESSAGE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java
new file mode 100644
index 0000000000..9ab7998631
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java
@@ -0,0 +1,64 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.AssignmentExpression;
+import org.emftext.language.java.expressions.AssignmentExpressionChild;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.operators.AssignmentOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.AssignmentExpressionInitialiser;
+
+public class AssignmentExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected AssignmentExpression initElement(AssignmentOperator op, AssignmentExpressionChild child, Expression val) {
+ var aeInit = new AssignmentExpressionInitialiser();
+ var ae = aeInit.instantiate();
+ Assertions.assertTrue(aeInit.setAssignmentOperator(ae, op));
+ Assertions.assertTrue(aeInit.setChild(ae, child));
+ Assertions.assertTrue(aeInit.setValue(ae, val));
+ return ae;
+ }
+
+ @Test
+ public void testAssignmentOperator() {
+ this.testSimilarity(this.initElement(this.createAssignmentOperator(), null, null),
+ this.initElement(this.createAssignmentOrOperator(), null, null),
+ ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR);
+ }
+
+ @Test
+ public void testAssignmentOperatorNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createAssignmentOperator(), null, null),
+ new AssignmentExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR);
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1), null),
+ this.initElement(null, this.createDecimalIntegerLiteral(2), null),
+ ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1), null),
+ new AssignmentExpressionInitialiser(), false, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testValue() {
+ this.testSimilarity(this.initElement(null, null, this.createDecimalIntegerLiteral(1)),
+ this.initElement(null, null, this.createDecimalIntegerLiteral(2)),
+ ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VALUE);
+ }
+
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, null, this.createDecimalIntegerLiteral(1)),
+ new AssignmentExpressionInitialiser(), false, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java
new file mode 100644
index 0000000000..c3ff155dcb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.BinaryIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.BinaryIntegerLiteralInitialiser;
+
+public class BinaryIntegerLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected BinaryIntegerLiteral initElement(int val) {
+ var init = new BinaryIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setBinaryValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testBinaryValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.BINARY_INTEGER_LITERAL__BINARY_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testBinaryValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new BinaryIntegerLiteralInitialiser(), false,
+ LiteralsPackage.Literals.BINARY_INTEGER_LITERAL__BINARY_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java
new file mode 100644
index 0000000000..b52c393409
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.BinaryLongLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.BinaryLongLiteralInitialiser;
+
+public class BinaryLongLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected BinaryLongLiteral initElement(long val) {
+ var init = new BinaryLongLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setBinaryValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testBinaryValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.BINARY_LONG_LITERAL__BINARY_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testBinaryValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new BinaryLongLiteralInitialiser(), false,
+ LiteralsPackage.Literals.BINARY_LONG_LITERAL__BINARY_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java
new file mode 100644
index 0000000000..0c2c8dda16
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java
@@ -0,0 +1,30 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.BooleanLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.BooleanLiteralInitialiser;
+
+public class BooleanLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected BooleanLiteral initElement(boolean val) {
+ var init = new BooleanLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testValue() {
+ this.testSimilarity(this.initElement(true), this.initElement(false),
+ LiteralsPackage.Literals.BOOLEAN_LITERAL__VALUE);
+ }
+
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(true), new BooleanLiteralInitialiser(), false,
+ LiteralsPackage.Literals.BOOLEAN_LITERAL__VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java
new file mode 100644
index 0000000000..1364f0c43b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java
@@ -0,0 +1,65 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.CastExpression;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.MultiplicativeExpressionChild;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.expressions.CastExpressionInitialiser;
+
+/**
+ *
+ * General child and child are the same. Therefore testChild is left out.
+ *
+ * @author Alp Torac Genc
+ */
+public class CastExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesTypeReferences {
+ protected CastExpression initElement(TypeReference[] additionalBoundsArr, MultiplicativeExpressionChild child) {
+ var ceInit = new CastExpressionInitialiser();
+ var ce = ceInit.instantiate();
+ Assertions.assertTrue(ceInit.addAdditionalBounds(ce, additionalBoundsArr));
+ Assertions.assertTrue(ceInit.setChild(ce, child));
+ return ce;
+ }
+
+ @Test
+ public void testAdditionalBound() {
+ this.testSimilarity(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null),
+ this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }, null),
+ ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS);
+ }
+
+ @Test
+ public void testAdditionalBoundSize() {
+ this.testSimilarity(
+ this.initElement(
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") },
+ null),
+ this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null),
+ ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS);
+ }
+
+ @Test
+ public void testAdditionalBoundNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null),
+ new CastExpressionInitialiser(), false, ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS);
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1)),
+ this.initElement(null, this.createDecimalIntegerLiteral(2)),
+ ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1)),
+ new CastExpressionInitialiser(), false, ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java
new file mode 100644
index 0000000000..735c0d3f7e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.statements.CatchBlock;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters;
+import cipm.consistency.initialisers.jamopp.statements.CatchBlockInitialiser;
+
+public class CatchBlockTest extends AbstractJaMoPPSimilarityTest implements UsesParameters {
+ protected CatchBlock initElement(OrdinaryParameter param) {
+ var cbInit = new CatchBlockInitialiser();
+ var cb = cbInit.instantiate();
+ Assertions.assertTrue(cbInit.setParameter(cb, param));
+ return cb;
+ }
+
+ @Test
+ public void testParameter() {
+ var objOne = this.initElement(this.createMinimalOrdParamWithClsTarget("param1", "cls1"));
+ var objTwo = this.initElement(this.createMinimalOrdParamWithClsTarget("param2", "cls2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CATCH_BLOCK__PARAMETER);
+ }
+
+ @Test
+ public void testParameterNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalOrdParamWithClsTarget("param1", "cls1")),
+ new CatchBlockInitialiser(), false, StatementsPackage.Literals.CATCH_BLOCK__PARAMETER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java
new file mode 100644
index 0000000000..1f8a2fc19b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.parameters.CatchParameter;
+import org.emftext.language.java.parameters.ParametersPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.parameters.CatchParameterInitialiser;
+
+public class CatchParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected CatchParameter initElement(TypeReference[] trefs) {
+ var cpInit = new CatchParameterInitialiser();
+ var cp = cpInit.instantiate();
+ Assertions.assertTrue(cpInit.addTypeReferences(cp, trefs));
+ return cp;
+ }
+
+ @Test
+ public void testTypeReference() {
+ var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES);
+ }
+
+ @Test
+ public void testTypeReferenceSize() {
+ var objOne = this.initElement(
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES);
+ }
+
+ @Test
+ public void testTypeReferenceNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ new CatchParameterInitialiser(), false, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java
new file mode 100644
index 0000000000..1f62bce873
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.CharacterLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.CharacterLiteralInitialiser;
+
+public class CharacterLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected CharacterLiteral initElement(String val) {
+ var init = new CharacterLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testValue() {
+ this.testSimilarity(this.initElement("a"), this.initElement("b"),
+ LiteralsPackage.Literals.CHARACTER_LITERAL__VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement("a"), new CharacterLiteralInitialiser(), false,
+ LiteralsPackage.Literals.CHARACTER_LITERAL__VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java
new file mode 100644
index 0000000000..2f146c20c3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java
@@ -0,0 +1,49 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser;
+
+import org.emftext.language.java.classifiers.Class;
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class ClassTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected Class initElement(TypeReference defExt, TypeReference ext) {
+ var clsInit = new ClassInitialiser();
+ var cls = clsInit.instantiate();
+ Assertions.assertTrue(clsInit.setDefaultExtends(cls, defExt));
+ Assertions.assertTrue(clsInit.setExtends(cls, ext));
+ return cls;
+ }
+
+ @Test
+ public void testDefaultExtends() {
+ var objOne = this.initElement(this.createMinimalClsRef("cls1"), null);
+ var objTwo = this.initElement(this.createMinimalClsRef("cls2"), null);
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS);
+ }
+
+ @Test
+ public void testDefaultExtendsNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1"), null), new ClassInitialiser(),
+ false, ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS);
+ }
+
+ @Test
+ public void testExtends() {
+ var objOne = this.initElement(null, this.createMinimalClsRef("cls1"));
+ var objTwo = this.initElement(null, this.createMinimalClsRef("cls2"));
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CLASS__EXTENDS);
+ }
+
+ @Test
+ public void testExtendsNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalClsRef("cls1")), new ClassInitialiser(),
+ false, ClassifiersPackage.Literals.CLASS__EXTENDS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java
new file mode 100644
index 0000000000..e6bfab535e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser;
+
+public class ClassifierReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+ protected ClassifierReference initElement(Classifier target) {
+ var init = new ClassifierReferenceInitialiser();
+ var res = init.instantiate();
+
+ Assertions.assertTrue(init.setTarget(res, target));
+ return res;
+ }
+
+ @Test
+ public void testTarget() {
+ var objOne = this.initElement(this.createMinimalClass("cls1"));
+ var objTwo = this.initElement(this.createMinimalClass("cls2"));
+
+ this.testSimilarity(objOne, objTwo, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+
+ @Test
+ public void testTargetNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1")),
+ new ClassifierReferenceInitialiser(), false, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java
new file mode 100644
index 0000000000..a128f86a59
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java
@@ -0,0 +1,46 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.containers.CompilationUnit;
+import org.emftext.language.java.containers.ContainersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser;
+
+public class CompilationUnitTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+ protected CompilationUnit initElement(ConcreteClassifier[] classifiers) {
+ var cuInit = new CompilationUnitInitialiser();
+ var cu = cuInit.instantiate();
+ Assertions.assertTrue(cuInit.setName(cu, this.getDefaultName()));
+ Assertions.assertTrue(cuInit.addClassifiers(cu, classifiers));
+ return cu;
+ }
+
+ @Test
+ public void testClassifier() {
+ var objOne = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") });
+ var objTwo = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS);
+ }
+
+ @Test
+ public void testClassifierSize() {
+ var objOne = this.initElement(
+ new ConcreteClassifier[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") });
+ var objTwo = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testClassifierNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") }),
+ new CompilationUnitInitialiser(), false, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java
new file mode 100644
index 0000000000..5b7f17b494
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.statements.Condition;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.Statement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.ConditionInitialiser;
+
+public class ConditionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+ protected Condition initElement(Statement elseSt) {
+ var conInit = new ConditionInitialiser();
+ var con = conInit.instantiate();
+ Assertions.assertTrue(conInit.setElseStatement(con, elseSt));
+ return con;
+ }
+
+ @Test
+ public void testElseStatement() {
+ var objOne = this.initElement(this.createMinimalTrivialAssert());
+ var objTwo = this.initElement(this.createMinimalNullReturn());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CONDITION__ELSE_STATEMENT);
+ }
+
+ @Test
+ public void testElseStatementNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalTrivialAssert()), new ConditionInitialiser(),
+ false, StatementsPackage.Literals.CONDITION__ELSE_STATEMENT);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java
new file mode 100644
index 0000000000..9738bbc480
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ConditionalAndExpression;
+import org.emftext.language.java.expressions.ConditionalAndExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ConditionalAndExpressionInitialiser;
+
+public class ConditionalAndExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ConditionalAndExpression initElement(ConditionalAndExpressionChild[] children) {
+ var caeInit = new ConditionalAndExpressionInitialiser();
+ var cae = caeInit.instantiate();
+ Assertions.assertTrue(caeInit.addChildren(cae, children));
+ return cae;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(2) }),
+ ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }),
+ this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ new ConditionalAndExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java
new file mode 100644
index 0000000000..fa3b203970
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java
@@ -0,0 +1,82 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.AssignmentExpressionChild;
+import org.emftext.language.java.expressions.ConditionalExpression;
+import org.emftext.language.java.expressions.ConditionalExpressionChild;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ConditionalExpressionInitialiser;
+
+public class ConditionalExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ConditionalExpression initElement(ConditionalExpressionChild child, AssignmentExpressionChild exprChild,
+ Expression exprIf, Expression generalExprElse) {
+ var ceInit = new ConditionalExpressionInitialiser();
+ var ce = ceInit.instantiate();
+ Assertions.assertTrue(ceInit.setChild(ce, child));
+ Assertions.assertTrue(ceInit.setExpressionChild(ce, exprChild));
+ Assertions.assertTrue(ceInit.setExpressionIf(ce, exprIf));
+ Assertions.assertTrue(ceInit.setGeneralExpressionElse(ce, generalExprElse));
+ return ce;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null, null, null),
+ this.initElement(this.createDecimalIntegerLiteral(2), null, null, null),
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null, null, null),
+ new ConditionalExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testExpressionChild() {
+ this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1), null, null),
+ this.initElement(null, this.createDecimalIntegerLiteral(2), null, null),
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testExpressionChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1), null, null),
+ new ConditionalExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testExpressionIf() {
+ this.testSimilarity(this.initElement(null, null, this.createDecimalIntegerLiteral(1), null),
+ this.initElement(null, null, this.createDecimalIntegerLiteral(2), null),
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF);
+ }
+
+ @Test
+ public void testExpressionIfNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, null, this.createDecimalIntegerLiteral(1), null),
+ new ConditionalExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF);
+ }
+
+ @Test
+ public void testGeneralExpressionElse() {
+ this.testSimilarity(this.initElement(null, null, null, this.createDecimalIntegerLiteral(1)),
+ this.initElement(null, null, null, this.createDecimalIntegerLiteral(2)),
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE);
+ }
+
+ @Test
+ public void testGeneralExpressionElseNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, null, null, this.createDecimalIntegerLiteral(1)),
+ new ConditionalExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java
new file mode 100644
index 0000000000..9380110268
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ConditionalOrExpression;
+import org.emftext.language.java.expressions.ConditionalOrExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ConditionalOrExpressionInitialiser;
+
+public class ConditionalOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ConditionalOrExpression initElement(ConditionalOrExpressionChild[] children) {
+ var coeInit = new ConditionalOrExpressionInitialiser();
+ var coe = coeInit.instantiate();
+ Assertions.assertTrue(coeInit.addChildren(coe, children));
+ return coe;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }),
+ ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }),
+ this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ new ConditionalOrExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java
new file mode 100644
index 0000000000..7615db97f5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java
@@ -0,0 +1,30 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.DecimalDoubleLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.DecimalDoubleLiteralInitialiser;
+
+public class DecimalDoubleLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected DecimalDoubleLiteral initElement(double val) {
+ var init = new DecimalDoubleLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setDecimalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testDecimalValue() {
+ this.testSimilarity(this.initElement(1.5d), this.initElement(2.5d),
+ LiteralsPackage.Literals.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE);
+ }
+
+ @Test
+ public void testDecimalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1.5d), new DecimalDoubleLiteralInitialiser(), false,
+ LiteralsPackage.Literals.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java
new file mode 100644
index 0000000000..54a325706e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java
@@ -0,0 +1,30 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.DecimalFloatLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.DecimalFloatLiteralInitialiser;
+
+public class DecimalFloatLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected DecimalFloatLiteral initElement(float val) {
+ var init = new DecimalFloatLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setDecimalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testDecimalValue() {
+ this.testSimilarity(this.initElement(1.5f), this.initElement(2.5f),
+ LiteralsPackage.Literals.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE);
+ }
+
+ @Test
+ public void testDecimalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1.5f), new DecimalFloatLiteralInitialiser(), false,
+ LiteralsPackage.Literals.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java
new file mode 100644
index 0000000000..26346982d7
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.DecimalIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.DecimalIntegerLiteralInitialiser;
+
+public class DecimalIntegerLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected DecimalIntegerLiteral initElement(int val) {
+ var init = new DecimalIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setDecimalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testDecimalValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testDecimalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new DecimalIntegerLiteralInitialiser(), false,
+ LiteralsPackage.Literals.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java
new file mode 100644
index 0000000000..e557d615f4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.DecimalLongLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.DecimalLongLiteralInitialiser;
+
+public class DecimalLongLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected DecimalLongLiteral initElement(long val) {
+ var init = new DecimalLongLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setDecimalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testDecimalValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.DECIMAL_LONG_LITERAL__DECIMAL_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testDecimalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new DecimalLongLiteralInitialiser(), false,
+ LiteralsPackage.Literals.DECIMAL_LONG_LITERAL__DECIMAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java
new file mode 100644
index 0000000000..cc4ec6487f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+import org.emftext.language.java.members.EnumConstant;
+import org.emftext.language.java.members.MembersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnonymousClasses;
+import cipm.consistency.initialisers.jamopp.members.EnumConstantInitialiser;
+
+public class EnumConstantTest extends AbstractJaMoPPSimilarityTest implements UsesAnonymousClasses {
+ protected EnumConstant initElement(AnonymousClass anonymousCls) {
+ var ecInit = new EnumConstantInitialiser();
+ var ec = ecInit.instantiate();
+ Assertions.assertTrue(ecInit.setAnonymousClass(ec, anonymousCls));
+ return ec;
+ }
+
+ @Test
+ public void testAnonymousClass() {
+ var objOne = this.initElement(this.createMinimalAnonymousClassWithMethod("met1"));
+ var objTwo = this.initElement(this.createMinimalAnonymousClassWithMethod("met2"));
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS);
+ }
+
+ @Test
+ public void testAnonymousClassNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalAnonymousClassWithMethod("met1")),
+ new EnumConstantInitialiser(), false, MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java
new file mode 100644
index 0000000000..62b498b806
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.Enumeration;
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.members.EnumConstant;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesEnumConstants;
+import cipm.consistency.initialisers.jamopp.classifiers.EnumerationInitialiser;
+
+public class EnumerationTest extends AbstractJaMoPPSimilarityTest implements UsesEnumConstants {
+ protected Enumeration initElement(EnumConstant[] consts) {
+ var enmInit = new EnumerationInitialiser();
+ var enm = enmInit.instantiate();
+ Assertions.assertTrue(enmInit.addConstants(enm, consts));
+ return enm;
+ }
+
+ @Test
+ public void testConstant() {
+ var objOne = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") });
+ var objTwo = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst2") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS);
+ }
+
+ @Test
+ public void testConstantSize() {
+ var objOne = this.initElement(
+ new EnumConstant[] { this.createMinimalEnumConstant("cst1"), this.createMinimalEnumConstant("cst2") });
+ var objTwo = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS);
+ }
+
+ @Test
+ public void testConstantNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") }),
+ new EnumerationInitialiser(), false, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java
new file mode 100644
index 0000000000..d3477bd5fc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java
@@ -0,0 +1,69 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.EqualityExpression;
+import org.emftext.language.java.expressions.EqualityExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.operators.EqualityOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.EqualityExpressionInitialiser;
+
+public class EqualityExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected EqualityExpression initElement(EqualityExpressionChild[] children, EqualityOperator[] ops) {
+ var eeInit = new EqualityExpressionInitialiser();
+ var ee = eeInit.instantiate();
+ Assertions.assertTrue(eeInit.addChildren(ee, children));
+ Assertions.assertTrue(eeInit.addEqualityOperators(ee, ops));
+ return ee;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null),
+ ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }, null),
+ this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ new EqualityExpressionInitialiser(), false, ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testEqualityOperator() {
+ this.testSimilarity(this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }),
+ this.initElement(null, new EqualityOperator[] { this.createNotEqualOperator() }),
+ ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS);
+ }
+
+ @Test
+ public void testEqualityOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new EqualityOperator[] { this.createEqualityOperator(), this.createNotEqualOperator() }),
+ this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }),
+ ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS);
+ }
+
+ @Test
+ public void testEqualityOperatorNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }),
+ new EqualityExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java
new file mode 100644
index 0000000000..b4ed99eb10
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExclusiveOrExpression;
+import org.emftext.language.java.expressions.ExclusiveOrExpressionChild;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ExclusiveOrExpressionInitialiser;
+
+public class ExclusiveOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ExclusiveOrExpression initElement(ExclusiveOrExpressionChild[] children) {
+ var eoeInit = new ExclusiveOrExpressionInitialiser();
+ var eoe = eoeInit.instantiate();
+ Assertions.assertTrue(eoeInit.addChildren(eoe, children));
+ return eoe;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }),
+ ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }),
+ this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ new ExclusiveOrExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java
new file mode 100644
index 0000000000..363323a090
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.instantiations.ExplicitConstructorCall;
+import org.emftext.language.java.instantiations.InstantiationsPackage;
+import org.emftext.language.java.literals.Self;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser;
+
+public class ExplicitConstructorCallTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ExplicitConstructorCall initElement(Self callTarget) {
+ var eccInit = new ExplicitConstructorCallInitialiser();
+ var ecc = eccInit.instantiate();
+ Assertions.assertTrue(eccInit.setCallTarget(ecc, callTarget));
+ return ecc;
+ }
+
+ @Test
+ public void testCallTarget() {
+ var objOne = this.initElement(this.createThis());
+ var objTwo = this.initElement(this.createSuper());
+
+ this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET);
+ }
+
+ @Test
+ public void testCallTargetNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createThis()), new ExplicitConstructorCallInitialiser(),
+ false, InstantiationsPackage.Literals.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java
new file mode 100644
index 0000000000..dfa641c081
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java
@@ -0,0 +1,42 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionList;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ExpressionListInitialiser;
+
+public class ExpressionListTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ExpressionList initElement(Expression[] exprs) {
+ var elInit = new ExpressionListInitialiser();
+ var el = elInit.instantiate();
+ Assertions.assertTrue(elInit.addExpressions(el, exprs));
+ return el;
+ }
+
+ @Test
+ public void testExpression() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() });
+
+ this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS);
+ }
+
+ @Test
+ public void testExpressionSize() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+
+ this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS);
+ }
+
+ @Test
+ public void testExpressionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }),
+ new ExpressionListInitialiser(), false, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java
new file mode 100644
index 0000000000..9dd802137c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.ExpressionStatement;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser;
+
+public class ExpressionStatementTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ExpressionStatement initElement(Expression expr) {
+ var esInit = new ExpressionStatementInitialiser();
+ var es = esInit.instantiate();
+ Assertions.assertTrue(esInit.setExpression(es, expr));
+ return es;
+ }
+
+ @Test
+ public void testExpression() {
+ var objOne = this.initElement(this.createMinimalFalseEE());
+ var objTwo = this.initElement(this.createMinimalTrueNEE());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.EXPRESSION_STATEMENT__EXPRESSION);
+ }
+
+ @Test
+ public void testExpressionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE()),
+ new ExpressionStatementInitialiser(), false,
+ StatementsPackage.Literals.EXPRESSION_STATEMENT__EXPRESSION);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java
new file mode 100644
index 0000000000..c44b19b3ce
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.generics.ExtendsTypeArgument;
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.generics.ExtendsTypeArgumentInitialiser;
+
+public class ExtendsTypeArgumentTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected ExtendsTypeArgument initElement(TypeReference extType) {
+ var etaInit = new ExtendsTypeArgumentInitialiser();
+ var eta = etaInit.instantiate();
+ Assertions.assertTrue(etaInit.setExtendType(eta, extType));
+ return eta;
+ }
+
+ @Test
+ public void testExtendType() {
+ var objOne = this.initElement(this.createMinimalClsRef("cls1"));
+ var objTwo = this.initElement(this.createMinimalClsRef("cls2"));
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPE);
+ }
+
+ @Test
+ public void testExtendTypeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1")),
+ new ExtendsTypeArgumentInitialiser(), false,
+ GenericsPackage.Literals.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java
new file mode 100644
index 0000000000..76d376c75b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.members.AdditionalField;
+import org.emftext.language.java.members.Field;
+import org.emftext.language.java.members.MembersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAdditionalFields;
+import cipm.consistency.initialisers.jamopp.members.FieldInitialiser;
+
+public class FieldTest extends AbstractJaMoPPSimilarityTest implements UsesAdditionalFields {
+ protected Field initElement(AdditionalField[] additionalFields) {
+ var fieldInit = new FieldInitialiser();
+ var field = fieldInit.instantiate();
+ Assertions.assertTrue(fieldInit.addAdditionalFields(field, additionalFields));
+ return field;
+ }
+
+ @Test
+ public void testAdditionalField() {
+ var objOne = this.initElement(new AdditionalField[] { this.createMinimalAF("af1") });
+ var objTwo = this.initElement(new AdditionalField[] { this.createMinimalAF("af2") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS);
+ }
+
+ @Test
+ public void testAdditionalFieldSize() {
+ var objOne = this
+ .initElement(new AdditionalField[] { this.createMinimalAF("af1"), this.createMinimalAF("af2") });
+ var objTwo = this.initElement(new AdditionalField[] { this.createMinimalAF("af1") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS);
+ }
+
+ @Test
+ public void testAdditionalFieldNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new AdditionalField[] { this.createMinimalAF("af1") }),
+ new FieldInitialiser(), false, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java
new file mode 100644
index 0000000000..ce50a366e4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java
@@ -0,0 +1,51 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.statements.ForEachLoop;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters;
+import cipm.consistency.initialisers.jamopp.statements.ForEachLoopInitialiser;
+
+public class ForEachLoopTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesParameters {
+ protected ForEachLoop initElement(Expression col, OrdinaryParameter next) {
+ var felInit = new ForEachLoopInitialiser();
+ var fel = felInit.instantiate();
+ Assertions.assertTrue(felInit.setCollection(fel, col));
+ Assertions.assertTrue(felInit.setNext(fel, next));
+ return fel;
+ }
+
+ @Test
+ public void testCollection() {
+ var objOne = this.initElement(this.createMinimalFalseEE(), null);
+ var objTwo = this.initElement(this.createMinimalTrueNEE(), null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION);
+ }
+
+ @Test
+ public void testCollectionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE(), null), new ForEachLoopInitialiser(),
+ false, StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION);
+ }
+
+ @Test
+ public void testNext() {
+ var objOne = this.initElement(null, this.createMinimalOrdParamWithClsTarget("param1", "cls1"));
+ var objTwo = this.initElement(null, this.createMinimalOrdParamWithClsTarget("param2", "cls2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_EACH_LOOP__NEXT);
+ }
+
+ @Test
+ public void testNextNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalOrdParamWithClsTarget("param1", "cls1")),
+ new ForEachLoopInitialiser(), false, StatementsPackage.Literals.FOR_EACH_LOOP__NEXT);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java
new file mode 100644
index 0000000000..4efe176127
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java
@@ -0,0 +1,59 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.ForLoop;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.ForLoopInitializer;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.ForLoopInitialiser;
+
+public class ForLoopTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ForLoop initElement(ForLoopInitializer flInit, Expression[] updateExprs) {
+ var init = new ForLoopInitialiser();
+ var fl = init.instantiate();
+ Assertions.assertTrue(init.setInit(fl, flInit));
+ Assertions.assertTrue(init.addUpdates(fl, updateExprs));
+ return fl;
+ }
+
+ @Test
+ public void testInit() {
+ var objOne = this.initElement(this.createExprList(), null);
+ var objTwo = this.initElement(this.createExprList(this.createMinimalFalseEE()), null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__INIT);
+ }
+
+ @Test
+ public void testInitNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createExprList(), null), new ForLoopInitialiser(), false,
+ StatementsPackage.Literals.FOR_LOOP__INIT);
+ }
+
+ @Test
+ public void testUpdate() {
+ var objOne = this.initElement(null, new Expression[] { this.createMinimalFalseEE() });
+ var objTwo = this.initElement(null, new Expression[] { this.createMinimalTrueNEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__UPDATES);
+ }
+
+ @Test
+ public void testUpdateSize() {
+ var objOne = this.initElement(null,
+ new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() });
+ var objTwo = this.initElement(null, new Expression[] { this.createMinimalFalseEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__UPDATES);
+ }
+
+ @Test
+ public void testUpdateNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new Expression[] { this.createMinimalFalseEE() }),
+ new ForLoopInitialiser(), false, StatementsPackage.Literals.FOR_LOOP__UPDATES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java
new file mode 100644
index 0000000000..ba873160ed
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java
@@ -0,0 +1,30 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.HexDoubleLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.HexDoubleLiteralInitialiser;
+
+public class HexDoubleLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected HexDoubleLiteral initElement(double val) {
+ var init = new HexDoubleLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setHexValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testHexValue() {
+ this.testSimilarity(this.initElement(1.5d), this.initElement(2.5d),
+ LiteralsPackage.Literals.HEX_DOUBLE_LITERAL__HEX_VALUE);
+ }
+
+ @Test
+ public void testHexValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1.5d), new HexDoubleLiteralInitialiser(), false,
+ LiteralsPackage.Literals.HEX_DOUBLE_LITERAL__HEX_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java
new file mode 100644
index 0000000000..8b6c3a13f0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java
@@ -0,0 +1,30 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.HexFloatLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.HexFloatLiteralInitialiser;
+
+public class HexFloatLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected HexFloatLiteral initElement(float val) {
+ var init = new HexFloatLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setHexValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testHexValue() {
+ this.testSimilarity(this.initElement(1.5f), this.initElement(2.5f),
+ LiteralsPackage.Literals.HEX_FLOAT_LITERAL__HEX_VALUE);
+ }
+
+ @Test
+ public void testHexValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1.5f), new HexFloatLiteralInitialiser(), false,
+ LiteralsPackage.Literals.HEX_FLOAT_LITERAL__HEX_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java
new file mode 100644
index 0000000000..66db7bfe4f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.HexIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.HexIntegerLiteralInitialiser;
+
+public class HexIntegerLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected HexIntegerLiteral initElement(int val) {
+ var init = new HexIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setHexValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testHexValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.HEX_INTEGER_LITERAL__HEX_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testHexValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new HexIntegerLiteralInitialiser(), false,
+ LiteralsPackage.Literals.HEX_INTEGER_LITERAL__HEX_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java
new file mode 100644
index 0000000000..9223bf9fee
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.HexLongLiteral;
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.HexLongLiteralInitialiser;
+
+public class HexLongLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected HexLongLiteral initElement(long val) {
+ var init = new HexLongLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setHexValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testHexValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.HEX_LONG_LITERAL__HEX_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testHexValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new HexLongLiteralInitialiser(), false,
+ LiteralsPackage.Literals.HEX_LONG_LITERAL__HEX_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java
new file mode 100644
index 0000000000..715c058143
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.InclusiveOrExpression;
+import org.emftext.language.java.expressions.InclusiveOrExpressionChild;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.InclusiveOrExpressionInitialiser;
+
+public class InclusiveOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected InclusiveOrExpression initElement(InclusiveOrExpressionChild[] children) {
+ var ioeInit = new InclusiveOrExpressionInitialiser();
+ var ioe = ioeInit.instantiate();
+ Assertions.assertTrue(ioeInit.addChildren(ioe, children));
+ return ioe;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }),
+ ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }),
+ this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }),
+ new InclusiveOrExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java
new file mode 100644
index 0000000000..e0c50fc548
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.InferableType;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.types.InferableTypeInitialiser;
+
+public class InferableTypeTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+ protected InferableType initElement(Classifier target) {
+ var init = new InferableTypeInitialiser();
+ var res = init.instantiate();
+
+ Assertions.assertTrue(init.setTarget(res, target));
+ return res;
+ }
+
+ @Test
+ public void testTarget() {
+ var objOne = this.initElement(this.createMinimalClass("cls1"));
+ var objTwo = this.initElement(this.createMinimalClass("cls2"));
+
+ this.testSimilarity(objOne, objTwo, InferableType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+
+ @Test
+ public void testTargetNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1")), new InferableTypeInitialiser(),
+ false, InferableType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java
new file mode 100644
index 0000000000..c900b36c5f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.InstanceOfExpression;
+import org.emftext.language.java.expressions.InstanceOfExpressionChild;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.InstanceOfExpressionInitialiser;
+
+public class InstanceOfExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected InstanceOfExpression initElement(InstanceOfExpressionChild child) {
+ var ioeInit = new InstanceOfExpressionInitialiser();
+ var ioe = ioeInit.instantiate();
+ Assertions.assertTrue(ioeInit.setChild(ioe, child));
+ return ioe;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1)),
+ this.initElement(this.createDecimalIntegerLiteral(2)),
+ ExpressionsPackage.Literals.INSTANCE_OF_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)),
+ new InstanceOfExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.INSTANCE_OF_EXPRESSION__CHILD);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java
new file mode 100644
index 0000000000..94d7900d69
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java
@@ -0,0 +1,38 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.members.InterfaceMethod;
+import org.emftext.language.java.members.MembersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames;
+import cipm.consistency.initialisers.jamopp.members.InterfaceMethodInitialiser;
+
+public class InterfaceMethodTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationValues, UsesNames {
+ protected InterfaceMethod initElement(AnnotationValue defVal) {
+ var imInit = new InterfaceMethodInitialiser();
+ var im = imInit.instantiate();
+ Assertions.assertTrue(imInit.setName(im, this.getDefaultName()));
+ Assertions.assertTrue(imInit.setDefaultValue(im, defVal));
+ return im;
+ }
+
+ @Test
+ public void testDefaultValue() {
+ var objOne = this.initElement(this.createNullLiteral());
+ var objTwo = this.initElement(this.createMinimalSR("strval"));
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testDefaultValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createNullLiteral()), new InterfaceMethodInitialiser(),
+ false, MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java
new file mode 100644
index 0000000000..b453924f23
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java
@@ -0,0 +1,67 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.Interface;
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.classifiers.InterfaceInitialiser;
+
+public class InterfaceTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected Interface initElement(TypeReference[] defExts, TypeReference[] exts) {
+ var intfcInit = new InterfaceInitialiser();
+ var intfc = intfcInit.instantiate();
+ Assertions.assertTrue(intfcInit.addDefaultExtends(intfc, defExts));
+ Assertions.assertTrue(intfcInit.addExtends(intfc, exts));
+ return intfc;
+ }
+
+ @Test
+ public void testDefaultExtends() {
+ var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null);
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }, null);
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS);
+ }
+
+ @Test
+ public void testDefaultExtendsSize() {
+ var objOne = this.initElement(
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }, null);
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null);
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS);
+ }
+
+ @Test
+ public void testDefaultExtendsNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null),
+ new InterfaceInitialiser(), false, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS);
+ }
+
+ @Test
+ public void testExtends() {
+ var objOne = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__EXTENDS);
+ }
+
+ @Test
+ public void testExtendsSize() {
+ var objOne = this.initElement(null,
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__EXTENDS);
+ }
+
+ @Test
+ public void testExtendsNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ new InterfaceInitialiser(), false, ClassifiersPackage.Literals.INTERFACE__EXTENDS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java
new file mode 100644
index 0000000000..e4ea4541dd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java
@@ -0,0 +1,51 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.LambdaBody;
+import org.emftext.language.java.expressions.LambdaExpression;
+import org.emftext.language.java.expressions.LambdaParameters;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLambdaParameters;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.expressions.LambdaExpressionInitialiser;
+
+public class LambdaExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements, UsesLambdaParameters {
+ protected LambdaExpression initElement(LambdaBody body, LambdaParameters param) {
+ var init = new LambdaExpressionInitialiser();
+ LambdaExpression result = init.instantiate();
+ Assertions.assertTrue(init.setBody(result, body));
+ Assertions.assertTrue(init.setParameters(result, param));
+ return result;
+ }
+
+ @Test
+ public void testBody() {
+ var objOne = this.initElement(this.createMinimalBlockWithNullReturn(), null);
+ var objTwo = this.initElement(this.createMinimalBlockWithTrivialAssert(), null);
+
+ this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY);
+ }
+
+ @Test
+ public void testBodyNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalBlockWithNullReturn(), null),
+ new LambdaExpressionInitialiser(), false, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY);
+ }
+
+ @Test
+ public void testParameters() {
+ var objOne = this.initElement(null, this.createMinimalETLP("p1", "c1"));
+ var objTwo = this.initElement(null, this.createMinimalETLP("p2", "c2"));
+
+ this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS);
+ }
+
+ @Test
+ public void testParametersNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalETLP("p1", "c1")),
+ new LambdaExpressionInitialiser(), false, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java
new file mode 100644
index 0000000000..d0cdee6d59
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.statements.LocalVariableStatement;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.variables.LocalVariable;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLocalVariables;
+import cipm.consistency.initialisers.jamopp.statements.LocalVariableStatementInitialiser;
+
+public class LocalVariableStatementTest extends AbstractJaMoPPSimilarityTest implements UsesLocalVariables {
+ protected LocalVariableStatement initElement(LocalVariable var) {
+ var lvsInit = new LocalVariableStatementInitialiser();
+ var lvs = lvsInit.instantiate();
+ Assertions.assertTrue(lvsInit.setVariable(lvs, var));
+ return lvs;
+ }
+
+ @Test
+ public void testVariable() {
+ var objOne = this.initElement(this.createMinimalLV("lv1"));
+ var objTwo = this.initElement(this.createMinimalLV("lv2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.LOCAL_VARIABLE_STATEMENT__VARIABLE);
+ }
+
+ @Test
+ public void testVariableNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalLV("lv1")),
+ new LocalVariableStatementInitialiser(), false,
+ StatementsPackage.Literals.LOCAL_VARIABLE_STATEMENT__VARIABLE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java
new file mode 100644
index 0000000000..904c276ff7
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java
@@ -0,0 +1,48 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.variables.AdditionalLocalVariable;
+import org.emftext.language.java.variables.LocalVariable;
+import org.emftext.language.java.variables.VariablesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAdditionalLocalVariables;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames;
+import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser;
+
+public class LocalVariableTest extends AbstractJaMoPPSimilarityTest implements UsesAdditionalLocalVariables, UsesNames {
+ protected LocalVariable initElement(AdditionalLocalVariable[] alvs) {
+ var lvInit = new LocalVariableInitialiser();
+ var lv = lvInit.instantiate();
+ Assertions.assertTrue(lvInit.setName(lv, this.getDefaultName()));
+ Assertions.assertTrue(lvInit.addAdditionalLocalVariables(lv, alvs));
+ return lv;
+ }
+
+ @Test
+ public void testLocalVariable() {
+ var objOne = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") });
+ var objTwo = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv2") });
+
+ this.testSimilarity(objOne, objTwo, VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES);
+ }
+
+ @Test
+ public void testLocalVariableSize() {
+ var objOne = this.initElement(
+ new AdditionalLocalVariable[] { this.createMinimalALV("alv1"), this.createMinimalALV("alv2") });
+ var objTwo = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") });
+
+ this.testSimilarity(objOne, objTwo, VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testLocalVariableNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") }),
+ new LocalVariableInitialiser(), false,
+ VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java
new file mode 100644
index 0000000000..4aca5da0ff
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.modules.ModuleReference;
+import org.emftext.language.java.modules.ModulesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModules;
+import cipm.consistency.initialisers.jamopp.modules.ModuleReferenceInitialiser;
+
+public class ModuleReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesModules {
+ protected ModuleReference initElement(Module target) {
+ var mrInit = new ModuleReferenceInitialiser();
+ var mr = mrInit.instantiate();
+ Assertions.assertTrue(mrInit.setTarget(mr, target));
+ return mr;
+ }
+
+ @Test
+ public void testTarget() {
+ var objOne = this.initElement(this.createMinimalModule("mod1"));
+ var objTwo = this.initElement(this.createMinimalModule("mod2"));
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.MODULE_REFERENCE__TARGET);
+ }
+
+ @Test
+ public void testTargetNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalModule("mod1")),
+ new ModuleReferenceInitialiser(), false, ModulesPackage.Literals.MODULE_REFERENCE__TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java
new file mode 100644
index 0000000000..e83435c641
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java
@@ -0,0 +1,100 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.containers.ContainersPackage;
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.modules.ModuleDirective;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleDirectives;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames;
+import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.OpenInitialiser;
+
+public class ModuleTest extends AbstractJaMoPPSimilarityTest implements UsesModuleDirectives, UsesNames {
+ protected Module initElement(Package[] pacs, ModuleDirective[] targets, boolean isOpen) {
+ var initialiser = new ModuleInitialiser();
+ Module result = initialiser.instantiate();
+
+ Assertions.assertTrue(initialiser.setName(result, this.getDefaultName()));
+ Assertions.assertTrue(initialiser.addPackages(result, pacs));
+ Assertions.assertTrue(initialiser.addTargets(result, targets));
+
+ if (isOpen) {
+ Assertions.assertTrue(initialiser.setOpen(result, new OpenInitialiser().instantiate()));
+ }
+
+ return result;
+ }
+
+ @Test
+ public void testOpen() {
+ var objOne = this.initElement(null, null, true);
+ var objTwo = this.initElement(null, null, false);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__OPEN);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testOpenNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, null, true), new ModuleInitialiser(), false,
+ ContainersPackage.Literals.MODULE__OPEN);
+ }
+
+ @Test
+ public void testPackages() {
+ var objOne = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false);
+ var objTwo = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns2" }) }, null, false);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__PACKAGES);
+ }
+
+ @Test
+ public void testPackagesSize() {
+ var objOne = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }),
+ this.createMinimalPackage(new String[] { "ns2" }) }, null, false);
+ var objTwo = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__PACKAGES);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testPackagesNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false),
+ new ModuleInitialiser(), false, ContainersPackage.Literals.MODULE__PACKAGES);
+ }
+
+ @Test
+ public void testTargets() {
+ var objOne = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) },
+ false);
+ var objTwo = this.initElement(null, new ModuleDirective[] { this.createMinimalOMD(new String[] { "ns1" }) },
+ false);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__TARGET);
+ }
+
+ @Test
+ public void testTargetsSize() {
+ var objOne = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }),
+ this.createMinimalEMD(new String[] { "ns2" }) }, false);
+ var objTwo = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) },
+ false);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__TARGET);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testTargetsNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) }, false),
+ new ModuleInitialiser(), false, ContainersPackage.Literals.MODULE__TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java
new file mode 100644
index 0000000000..0b2e36fb52
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java
@@ -0,0 +1,72 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.MultiplicativeExpression;
+import org.emftext.language.java.expressions.MultiplicativeExpressionChild;
+import org.emftext.language.java.operators.MultiplicativeOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.MultiplicativeExpressionInitialiser;
+
+public class MultiplicativeExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected MultiplicativeExpression initElement(MultiplicativeExpressionChild[] children,
+ MultiplicativeOperator[] ops) {
+ var meInit = new MultiplicativeExpressionInitialiser();
+ var me = meInit.instantiate();
+ Assertions.assertTrue(meInit.addChildren(me, children));
+ Assertions.assertTrue(meInit.addMultiplicativeOperators(me, ops));
+ return me;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null),
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }, null),
+ this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ new MultiplicativeExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testMultiplicativeOperator() {
+ this.testSimilarity(this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }),
+ this.initElement(null, new MultiplicativeOperator[] { this.createMultiplicationOperator() }),
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS);
+ }
+
+ @Test
+ public void testMultiplicativeOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new MultiplicativeOperator[] { this.createDivisionOperator(), this.createMultiplicationOperator() }),
+ this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }),
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS);
+ }
+
+ @Test
+ public void testMultiplicativeOperatorNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }),
+ new MultiplicativeExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java
new file mode 100644
index 0000000000..5244f0481f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java
@@ -0,0 +1,66 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.NamespaceClassifierReference;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.types.NamespaceClassifierReferenceInitialiser;
+
+public class NamespaceClassifierReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected NamespaceClassifierReference initElement(Classifier target, ClassifierReference[] clsRefs) {
+ var ncrInit = new NamespaceClassifierReferenceInitialiser();
+ var ncr = ncrInit.instantiate();
+ Assertions.assertTrue(ncrInit.setTarget(ncr, target));
+ Assertions.assertTrue(ncrInit.addClassifierReferences(ncr, clsRefs));
+ return ncr;
+ }
+
+ @Test
+ public void testTarget() {
+ var objOne = this.initElement(this.createMinimalClassWithCU("cls1"), null);
+ var objTwo = this.initElement(this.createMinimalClassWithCU("cls2"), null);
+
+ this.testSimilarity(objOne, objTwo, NamespaceClassifierReference.class,
+ TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+
+ @Test
+ public void testTargetNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClassWithCU("cls1"), null),
+ new ClassifierReferenceInitialiser(), false, NamespaceClassifierReference.class,
+ TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+
+ @Test
+ public void testClassifierReference() {
+ var objOne = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo,
+ TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES);
+ }
+
+ @Test
+ public void testClassifierReferenceSize() {
+ var objOne = this.initElement(null,
+ new ClassifierReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo,
+ TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES);
+ }
+
+ @Test
+ public void testClassifierReferenceNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") }),
+ new NamespaceClassifierReferenceInitialiser(), false,
+ TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java
new file mode 100644
index 0000000000..c416bbdb65
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.NestedExpression;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.NestedExpressionInitialiser;
+
+public class NestedExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected NestedExpression initElement(Expression expr) {
+ var init = new NestedExpressionInitialiser();
+ var result = init.instantiate();
+ Assertions.assertTrue(init.setExpression(result, expr));
+ return result;
+ }
+
+ @Test
+ public void testExpression() {
+ var objOne = this.initElement(this.createMinimalFalseEE());
+ var objTwo = this.initElement(this.createMinimalTrueEE());
+
+ this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.NESTED_EXPRESSION__EXPRESSION);
+ }
+
+ @Test
+ public void testExpressionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE()), new NestedExpressionInitialiser(),
+ false, ExpressionsPackage.Literals.NESTED_EXPRESSION__EXPRESSION);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java
new file mode 100644
index 0000000000..aa3e29cea0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+import org.emftext.language.java.instantiations.NewConstructorCall;
+import org.emftext.language.java.instantiations.InstantiationsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnonymousClasses;
+import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser;
+import cipm.consistency.initialisers.jamopp.initadapters.NewConstructorCallInitialiserAdapter;
+import cipm.consistency.initialisers.jamopp.instantiations.NewConstructorCallInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser;
+
+public class NewConstructorCallTest extends AbstractJaMoPPSimilarityTest implements UsesAnonymousClasses {
+ protected NewConstructorCall initElement(AnonymousClass anonymousCls) {
+ var nccInit = new NewConstructorCallInitialiser();
+ nccInit.addAdaptingStrategy(
+ new NewConstructorCallInitialiserAdapter(new ClassifierReferenceInitialiser(), new ClassInitialiser()));
+ var ncc = nccInit.instantiate();
+ Assertions.assertTrue(nccInit.initialise(ncc));
+ Assertions.assertTrue(nccInit.setAnonymousClass(ncc, anonymousCls));
+ return ncc;
+ }
+
+ @Test
+ public void testAnonymousClass() {
+ var objOne = this.initElement(this.createMinimalAnonymousClassWithMethod("met1"));
+ var objTwo = this.initElement(this.createMinimalAnonymousClassWithMethod("met2"));
+
+ this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testAnonymousClassNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalAnonymousClassWithMethod("met1")),
+ new NewConstructorCallInitialiser(), false,
+ InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java
new file mode 100644
index 0000000000..bb2d2166fc
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.NormalSwitchCase;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.NormalSwitchCaseInitialiser;
+
+public class NormalSwitchCaseTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected NormalSwitchCase initElement(Expression[] additionalConds) {
+ var nscInit = new NormalSwitchCaseInitialiser();
+ var nsc = nscInit.instantiate();
+ Assertions.assertTrue(nscInit.addAdditionalConditions(nsc, additionalConds));
+ return nsc;
+ }
+
+ @Test
+ public void testAdditionalCondition() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS);
+ }
+
+ @Test
+ public void testAdditionalConditionSize() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS);
+ }
+
+ @Test
+ public void testAdditionalConditionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }),
+ new NormalSwitchCaseInitialiser(), false,
+ StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java
new file mode 100644
index 0000000000..be5e5f9caf
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java
@@ -0,0 +1,43 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.NormalSwitchRule;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.NormalSwitchRuleInitialiser;
+
+public class NormalSwitchRuleTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected NormalSwitchRule initElement(Expression[] additionalConds) {
+ var nsrInit = new NormalSwitchRuleInitialiser();
+ var nsr = nsrInit.instantiate();
+ Assertions.assertTrue(nsrInit.addAdditionalConditions(nsr, additionalConds));
+ return nsr;
+ }
+
+ @Test
+ public void testAdditionalCondition() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS);
+ }
+
+ @Test
+ public void testAdditionalConditionSize() {
+ var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() });
+ var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() });
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS);
+ }
+
+ @Test
+ public void testAdditionalConditionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }),
+ new NormalSwitchRuleInitialiser(), false,
+ StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java
new file mode 100644
index 0000000000..f2612abe72
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.emftext.language.java.literals.OctalIntegerLiteral;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.OctalIntegerLiteralInitialiser;
+
+public class OctalIntegerLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected OctalIntegerLiteral initElement(int val) {
+ var init = new OctalIntegerLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setOctalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testOctalValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.OCTAL_INTEGER_LITERAL__OCTAL_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testOctalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new OctalIntegerLiteralInitialiser(), false,
+ LiteralsPackage.Literals.OCTAL_INTEGER_LITERAL__OCTAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java
new file mode 100644
index 0000000000..e43928e890
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.LiteralsPackage;
+import org.emftext.language.java.literals.OctalLongLiteral;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.literals.OctalLongLiteralInitialiser;
+
+public class OctalLongLiteralTest extends AbstractJaMoPPSimilarityTest {
+ protected OctalLongLiteral initElement(long val) {
+ var init = new OctalLongLiteralInitialiser();
+ var lit = init.instantiate();
+ Assertions.assertTrue(init.setOctalValue(lit, val));
+ return lit;
+ }
+
+ @Test
+ public void testOctalValue() {
+ this.testSimilarity(this.initElement(1), this.initElement(2),
+ LiteralsPackage.Literals.OCTAL_LONG_LITERAL__OCTAL_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testOctalValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(1), new OctalLongLiteralInitialiser(), false,
+ LiteralsPackage.Literals.OCTAL_LONG_LITERAL__OCTAL_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java
new file mode 100644
index 0000000000..d01ac1c74a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java
@@ -0,0 +1,62 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.containers.ContainersPackage;
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModules;
+import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser;
+
+public class PackageTest extends AbstractJaMoPPSimilarityTest implements UsesModules, UsesConcreteClassifiers {
+ protected Package initElement(Module mod, ConcreteClassifier[] clss) {
+ var initialiser = new PackageInitialiser();
+ Package pac = initialiser.instantiate();
+ Assertions.assertTrue(initialiser.setModule(pac, mod));
+ Assertions.assertTrue(initialiser.addClassifiers(pac, clss));
+
+ return pac;
+ }
+
+ @Test
+ public void testModule() {
+ var objOne = this.initElement(this.createMinimalModule("mod1"), null);
+ var objTwo = this.initElement(this.createMinimalModule("mod2"), null);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__MODULE);
+ }
+
+ @Test
+ public void testModuleNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalModule("mod1"), null), new PackageInitialiser(),
+ false, ContainersPackage.Literals.PACKAGE__MODULE);
+ }
+
+ @Test
+ public void testClassifiers() {
+ var objOne = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") });
+ var objTwo = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__CLASSIFIERS);
+ }
+
+ @Test
+ public void testClassifiersSize() {
+ var objOne = this.initElement(null,
+ new ConcreteClassifier[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") });
+ var objTwo = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__CLASSIFIERS);
+ }
+
+ @Test
+ public void testClassifiersNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") }),
+ new PackageInitialiser(), false, ContainersPackage.Literals.PACKAGE__CLASSIFIERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java
new file mode 100644
index 0000000000..22459a5f83
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java
@@ -0,0 +1,50 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.MethodReferenceExpressionChild;
+import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression;
+import org.emftext.language.java.references.Reference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.PrimaryExpressionReferenceExpressionInitialiser;
+
+public class PrimaryExpressionReferenceExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected PrimaryExpressionReferenceExpression initElement(MethodReferenceExpressionChild child, Reference metRef) {
+ var pereInit = new PrimaryExpressionReferenceExpressionInitialiser();
+ var pere = pereInit.instantiate();
+ Assertions.assertTrue(pereInit.setChild(pere, child));
+ Assertions.assertTrue(pereInit.setMethodReference(pere, metRef));
+ return pere;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null),
+ this.initElement(this.createDecimalIntegerLiteral(2), null),
+ ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null),
+ new PrimaryExpressionReferenceExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testMethodReference() {
+ this.testSimilarity(this.initElement(null, this.createMinimalSR("str1")),
+ this.initElement(null, this.createMinimalSR("str2")),
+ ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE);
+ }
+
+ @Test
+ public void testMethodReferenceNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalSR("str1")),
+ new PrimaryExpressionReferenceExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java
new file mode 100644
index 0000000000..8956442bbb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java
@@ -0,0 +1,36 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.references.PrimitiveTypeReference;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.emftext.language.java.types.PrimitiveType;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.references.PrimitiveTypeReferenceInitialiser;
+import cipm.consistency.initialisers.jamopp.types.BooleanInitialiser;
+import cipm.consistency.initialisers.jamopp.types.IntInitialiser;
+
+public class PrimitiveTypeReferenceTest extends AbstractJaMoPPSimilarityTest {
+ protected PrimitiveTypeReference initElement(PrimitiveType pType) {
+ var ptInit = new PrimitiveTypeReferenceInitialiser();
+ var pt = ptInit.instantiate();
+ Assertions.assertTrue(ptInit.setPrimitiveType(pt, pType));
+ return pt;
+ }
+
+ @Test
+ public void testPrimitiveType() {
+ var objOne = this.initElement(new BooleanInitialiser().instantiate());
+ var objTwo = this.initElement(new IntInitialiser().instantiate());
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE);
+ }
+
+ @Test
+ public void testPrimitiveTypeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new BooleanInitialiser().instantiate()),
+ new PrimitiveTypeReferenceInitialiser(), false,
+ ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java
new file mode 100644
index 0000000000..950e47cbdb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.modules.ProvidesModuleDirective;
+import org.emftext.language.java.modules.ModulesPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.modules.ProvidesModuleDirectiveInitialiser;
+
+public class ProvidesModuleDirectiveTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected ProvidesModuleDirective initElement(TypeReference[] serviceProviders) {
+ var pmdInit = new ProvidesModuleDirectiveInitialiser();
+ var pmd = pmdInit.instantiate();
+ Assertions.assertTrue(pmdInit.addServiceProviders(pmd, serviceProviders));
+ return pmd;
+ }
+
+ @Test
+ public void testServiceProvider() {
+ var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS);
+ }
+
+ @Test
+ public void testServiceProviderSize() {
+ var objOne = this.initElement(
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS);
+ }
+
+ @Test
+ public void testServiceProviderNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ new ProvidesModuleDirectiveInitialiser(), false,
+ ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java
new file mode 100644
index 0000000000..f3d4de9d6a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java
@@ -0,0 +1,52 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.parameters.ReceiverParameter;
+import org.emftext.language.java.literals.This;
+import org.emftext.language.java.parameters.ParametersPackage;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.parameters.ReceiverParameterInitialiser;
+
+public class ReceiverParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences, UsesLiterals {
+ protected ReceiverParameter initElement(This thisRef, TypeReference otRef) {
+ var rpInit = new ReceiverParameterInitialiser();
+ var rp = rpInit.instantiate();
+ Assertions.assertTrue(rpInit.setThisReference(rp, thisRef));
+ Assertions.assertTrue(rpInit.setOuterTypeReference(rp, otRef));
+ return rp;
+ }
+
+ @Test
+ public void testThisTypeReference() {
+ var objOne = this.initElement(this.createThis(), null);
+ var objTwo = this.initElement(null, null);
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE);
+ }
+
+ @Test
+ public void testThisTypeReferenceNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createThis(), null), new ReceiverParameterInitialiser(),
+ false, ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE);
+ }
+
+ @Test
+ public void testOuterTypeReference() {
+ var objOne = this.initElement(null, this.createMinimalClsRef("cls1"));
+ var objTwo = this.initElement(null, this.createMinimalClsRef("cls2"));
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE);
+ }
+
+ @Test
+ public void testOuterTypeReferenceNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalClsRef("cls1")),
+ new ReceiverParameterInitialiser(), false,
+ ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java
new file mode 100644
index 0000000000..1eabdd4ead
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java
@@ -0,0 +1,70 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.RelationExpression;
+import org.emftext.language.java.expressions.RelationExpressionChild;
+import org.emftext.language.java.operators.RelationOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.RelationExpressionInitialiser;
+
+public class RelationExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected RelationExpression initElement(RelationExpressionChild[] children, RelationOperator[] ops) {
+ var reInit = new RelationExpressionInitialiser();
+ var re = reInit.instantiate();
+ Assertions.assertTrue(reInit.addChildren(re, children));
+ Assertions.assertTrue(reInit.addRelationOperators(re, ops));
+ return re;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(
+ this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null),
+ ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }, null),
+ this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ new RelationExpressionInitialiser(), false, ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testRelationOperator() {
+ this.testSimilarity(this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }),
+ this.initElement(null, new RelationOperator[] { this.createLessThanOperator() }),
+ ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS);
+ }
+
+ @Test
+ public void testRelationOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new RelationOperator[] { this.createGreaterThanOperator(), this.createLessThanOperator() }),
+ this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }),
+ ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS);
+ }
+
+ @Test
+ public void testRelationOperatorNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }),
+ new RelationExpressionInitialiser(), false,
+ ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java
new file mode 100644
index 0000000000..0a1a4ef925
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java
@@ -0,0 +1,54 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.modifiers.ModuleRequiresModifier;
+import org.emftext.language.java.modules.ModuleReference;
+import org.emftext.language.java.modules.ModulesPackage;
+import org.emftext.language.java.modules.RequiresModuleDirective;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleReferences;
+import cipm.consistency.initialisers.jamopp.modules.RequiresModuleDirectiveInitialiser;
+
+public class RequiresModuleDirectiveTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals, UsesModuleReferences {
+ protected RequiresModuleDirective initElement(ModuleRequiresModifier modif, ModuleReference reqMod) {
+ var rmdInit = new RequiresModuleDirectiveInitialiser();
+ var rmd = rmdInit.instantiate();
+ Assertions.assertTrue(rmdInit.setModifier(rmd, modif));
+ Assertions.assertTrue(rmdInit.setRequiredModule(rmd, reqMod));
+ return rmd;
+ }
+
+ @Test
+ public void testModifier() {
+ var objOne = this.initElement(this.createStatic(), null);
+ var objTwo = this.initElement(this.createTransitive(), null);
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER);
+ }
+
+ @Test
+ public void testModifierNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createStatic(), null),
+ new RequiresModuleDirectiveInitialiser(), false,
+ ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER);
+ }
+
+ @Test
+ public void testRequiredModule() {
+ var objOne = this.initElement(null, this.createMinimalMR("mod1", new String[] { "ns1", "ns2" }));
+ var objTwo = this.initElement(null, this.createMinimalMR("mod2", new String[] { "ns3", "ns4" }));
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__REQUIRED_MODULE);
+ }
+
+ @Test
+ public void testRequiredModuleNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, this.createMinimalMR("mod1", new String[] { "ns1", "ns2" })),
+ new RequiresModuleDirectiveInitialiser(), false,
+ ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__REQUIRED_MODULE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java
new file mode 100644
index 0000000000..c0a41c57cb
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Return;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.ReturnInitialiser;
+
+public class ReturnTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected Return initElement(Expression retVal) {
+ var retInit = new ReturnInitialiser();
+ var ret = retInit.instantiate();
+ Assertions.assertTrue(retInit.setReturnValue(ret, retVal));
+ return ret;
+ }
+
+ @Test
+ public void testReturnValue() {
+ var objOne = this.initElement(this.createDecimalIntegerLiteral(1));
+ var objTwo = this.initElement(this.createMinimalFalseEE());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.RETURN__RETURN_VALUE);
+ }
+
+ @Test
+ public void testReturnValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), new ReturnInitialiser(),
+ false, StatementsPackage.Literals.RETURN__RETURN_VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java
new file mode 100644
index 0000000000..4d9f60f461
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.literals.Self;
+import org.emftext.language.java.references.SelfReference;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.initialisers.jamopp.references.SelfReferenceInitialiser;
+
+public class SelfReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals {
+ protected SelfReference initElement(Self self) {
+ var srInit = new SelfReferenceInitialiser();
+ var sr = srInit.instantiate();
+ Assertions.assertTrue(srInit.setSelf(sr, self));
+ return sr;
+ }
+
+ @Test
+ public void testSelf() {
+ var objOne = this.initElement(this.createThis());
+ var objTwo = this.initElement(this.createSuper());
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.SELF_REFERENCE__SELF);
+ }
+
+ @Test
+ public void testSelfNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createThis()), new SelfReferenceInitialiser(), false,
+ ReferencesPackage.Literals.SELF_REFERENCE__SELF);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java
new file mode 100644
index 0000000000..4caa0c8003
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java
@@ -0,0 +1,67 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.ShiftExpression;
+import org.emftext.language.java.expressions.ShiftExpressionChild;
+import org.emftext.language.java.operators.ShiftOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.ShiftExpressionInitialiser;
+
+public class ShiftExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected ShiftExpression initElement(ShiftExpressionChild[] children, ShiftOperator[] ops) {
+ var seInit = new ShiftExpressionInitialiser();
+ var se = seInit.instantiate();
+ Assertions.assertTrue(seInit.addChildren(se, children));
+ Assertions.assertTrue(seInit.addShiftOperators(se, ops));
+ return se;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null),
+ ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildSize() {
+ this.testSimilarity(
+ this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1),
+ this.createDecimalIntegerLiteral(2) }, null),
+ this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null),
+ new ShiftExpressionInitialiser(), false, ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN);
+ }
+
+ @Test
+ public void testShiftOperator() {
+ this.testSimilarity(this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }),
+ this.initElement(null, new ShiftOperator[] { this.createRightShiftOperator() }),
+ ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS);
+ }
+
+ @Test
+ public void testShiftOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new ShiftOperator[] { this.createLeftShiftOperator(), this.createRightShiftOperator() }),
+ this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }),
+ ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS);
+ }
+
+ @Test
+ public void testShiftOperatorNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }),
+ new ShiftExpressionInitialiser(), false, ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java
new file mode 100644
index 0000000000..409b18fb6d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.emftext.language.java.annotations.SingleAnnotationParameter;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues;
+import cipm.consistency.initialisers.jamopp.annotations.SingleAnnotationParameterInitialiser;
+
+public class SingleAnnotationParameterTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationValues {
+ protected SingleAnnotationParameter initElement(AnnotationValue val) {
+ var sapInit = new SingleAnnotationParameterInitialiser();
+ var sap = sapInit.instantiate();
+ Assertions.assertTrue(sapInit.setValue(sap, val));
+ return sap;
+ }
+
+ @Test
+ public void testValue() {
+ var objOne = this.initElement(this.createNullLiteral());
+ var objTwo = this.initElement(this.createMinimalSR("strVal"));
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE);
+ }
+
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createNullLiteral()),
+ new SingleAnnotationParameterInitialiser(), false,
+ AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java
new file mode 100644
index 0000000000..65a817b276
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.imports.ImportsPackage;
+import org.emftext.language.java.imports.StaticMemberImport;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods;
+import cipm.consistency.initialisers.jamopp.imports.StaticMemberImportInitialiser;
+
+public class StaticMemberImportTest extends AbstractJaMoPPSimilarityTest implements UsesMethods {
+ protected StaticMemberImport initElement(ReferenceableElement[] staticMems) {
+ var smiInit = new StaticMemberImportInitialiser();
+ var smi = smiInit.instantiate();
+ Assertions.assertTrue(smiInit.addStaticMembers(smi, staticMems));
+ return smi;
+ }
+
+ @Test
+ public void testStaticMember() {
+ var objOne = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") });
+ var objTwo = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met2") });
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS);
+ }
+
+ @Test
+ public void testStaticMemberSize() {
+ var objOne = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1"),
+ this.createMinimalClsMethodWithNullReturn("met2") });
+ var objTwo = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") });
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS);
+ }
+
+ @Test
+ public void testStaticMemberNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") }),
+ new StaticMemberImportInitialiser(), false,
+ ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java
new file mode 100644
index 0000000000..6cbf89a56e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.references.ReferencesPackage;
+import org.emftext.language.java.references.StringReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser;
+
+public class StringReferenceTest extends AbstractJaMoPPSimilarityTest {
+ protected StringReference initElement(String val) {
+ var srInit = new StringReferenceInitialiser();
+ var sr = srInit.instantiate();
+ Assertions.assertTrue(srInit.setValue(sr, val));
+ return sr;
+ }
+
+ @Test
+ public void testValue() {
+ var objOne = this.initElement("val1");
+ var objTwo = this.initElement("val2");
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.STRING_REFERENCE__VALUE);
+ }
+
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement("val1"), new StringReferenceInitialiser(), false,
+ ReferencesPackage.Literals.STRING_REFERENCE__VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java
new file mode 100644
index 0000000000..213b079234
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.SuperTypeArgument;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.generics.SuperTypeArgumentInitialiser;
+
+public class SuperTypeArgumentTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+ protected SuperTypeArgument initElement(TypeReference superType) {
+ var staInit = new SuperTypeArgumentInitialiser();
+ var sta = staInit.instantiate();
+ Assertions.assertTrue(staInit.setSuperType(sta, superType));
+ return sta;
+ }
+
+ @Test
+ public void testSuperType() {
+ var objOne = this.initElement(this.createMinimalClsRef("cls1"));
+ var objTwo = this.initElement(this.createMinimalClsRef("cls2"));
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.SUPER_TYPE_ARGUMENT__SUPER_TYPE);
+ }
+
+ @Test
+ public void testSuperTypeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1")),
+ new SuperTypeArgumentInitialiser(), false, GenericsPackage.Literals.SUPER_TYPE_ARGUMENT__SUPER_TYPE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java
new file mode 100644
index 0000000000..71ed5767a3
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.Switch;
+import org.emftext.language.java.statements.SwitchCase;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesSwitchCases;
+import cipm.consistency.initialisers.jamopp.statements.SwitchInitialiser;
+
+public class SwitchTest extends AbstractJaMoPPSimilarityTest implements UsesSwitchCases {
+ protected Switch initElement(SwitchCase[] cases, Expression var) {
+ var swInit = new SwitchInitialiser();
+ var sw = swInit.instantiate();
+ Assertions.assertTrue(swInit.addCases(sw, cases));
+ Assertions.assertTrue(swInit.setVariable(sw, var));
+ return sw;
+ }
+
+ @Test
+ public void testCase() {
+ var objOne = this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null);
+ var objTwo = this.initElement(new SwitchCase[] { this.createMinimalNSC() }, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__CASES);
+ }
+
+ @Test
+ public void testCaseSize() {
+ var objOne = this.initElement(new SwitchCase[] { this.createEmptyNSC(), this.createMinimalNSC() }, null);
+ var objTwo = this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__CASES);
+ }
+
+ @Test
+ public void testCaseNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null),
+ new SwitchInitialiser(), false, StatementsPackage.Literals.SWITCH__CASES);
+ }
+
+ @Test
+ public void testVariable() {
+ var objOne = this.initElement(null, this.createMinimalSR("str1"));
+ var objTwo = this.initElement(null, this.createMinimalSR("str2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__VARIABLE);
+ }
+
+ @Test
+ public void testVariableNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, this.createMinimalSR("str1")), new SwitchInitialiser(),
+ false, StatementsPackage.Literals.SWITCH__VARIABLE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java
new file mode 100644
index 0000000000..c536a82328
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java
@@ -0,0 +1,35 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.SynchronizedBlock;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.SynchronizedBlockInitialiser;
+
+public class SynchronizedBlockTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected SynchronizedBlock initElement(Expression lockProvider) {
+ var sbInit = new SynchronizedBlockInitialiser();
+ var sb = sbInit.instantiate();
+ Assertions.assertTrue(sbInit.setLockProvider(sb, lockProvider));
+ return sb;
+ }
+
+ @Test
+ public void testLockProvider() {
+ var objOne = this.initElement(this.createDecimalIntegerLiteral(1));
+ var objTwo = this.initElement(this.createDecimalIntegerLiteral(2));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SYNCHRONIZED_BLOCK__LOCK_PROVIDER);
+ }
+
+ @Test
+ public void testLockProviderNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)),
+ new SynchronizedBlockInitialiser(), false,
+ StatementsPackage.Literals.SYNCHRONIZED_BLOCK__LOCK_PROVIDER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java
new file mode 100644
index 0000000000..79eae8fd31
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java
@@ -0,0 +1,32 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.references.ReferencesPackage;
+import org.emftext.language.java.references.TextBlockReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.references.TextBlockReferenceInitialiser;
+
+public class TextBlockReferenceTest extends AbstractJaMoPPSimilarityTest {
+ protected TextBlockReference initElement(String val) {
+ var tbrInit = new TextBlockReferenceInitialiser();
+ var tbr = tbrInit.instantiate();
+ Assertions.assertTrue(tbrInit.setValue(tbr, val));
+ return tbr;
+ }
+
+ @Test
+ public void testValue() {
+ var objOne = this.initElement("val1");
+ var objTwo = this.initElement("val2");
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE);
+ }
+
+ @Test
+ public void testValueNullCheck() {
+ this.testSimilarityNullCheck(this.initElement("val1"), new TextBlockReferenceInitialiser(), false,
+ ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java
new file mode 100644
index 0000000000..ab1268f9de
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.Throw;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.ThrowInitialiser;
+
+public class ThrowTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected Throw initElement(Expression throwable) {
+ var thInit = new ThrowInitialiser();
+ var th = thInit.instantiate();
+ Assertions.assertTrue(thInit.setThrowable(th, throwable));
+ return th;
+ }
+
+ @Test
+ public void testThrowable() {
+ var objOne = this.initElement(this.createMinimalSR("str1"));
+ var objTwo = this.initElement(this.createMinimalSR("str2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.THROW__THROWABLE);
+ }
+
+ @Test
+ public void testThrowableNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createMinimalSR("str1")), new ThrowInitialiser(), false,
+ StatementsPackage.Literals.THROW__THROWABLE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java
new file mode 100644
index 0000000000..b3856f34b0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java
@@ -0,0 +1,87 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.CatchBlock;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.TryBlock;
+import org.emftext.language.java.variables.Resource;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesCatchBlocks;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLocalVariables;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.TryBlockInitialiser;
+
+public class TryBlockTest extends AbstractJaMoPPSimilarityTest implements UsesCatchBlocks, UsesStatements, UsesLocalVariables {
+ protected TryBlock initElement(Resource[] ress, CatchBlock[] catchBlocks, Block finallyBlock) {
+ var tbInit = new TryBlockInitialiser();
+ var tb = tbInit.instantiate();
+ Assertions.assertTrue(tbInit.addResources(tb, ress));
+ Assertions.assertTrue(tbInit.addCatchBlocks(tb, catchBlocks));
+ Assertions.assertTrue(tbInit.setFinallyBlock(tb, finallyBlock));
+ return tb;
+ }
+
+ @Test
+ public void testResource() {
+ var objOne = this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null);
+ var objTwo = this.initElement(new Resource[] { this.createMinimalLV("lv2") }, null, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__RESOURCES);
+ }
+
+ @Test
+ public void testResourceSize() {
+ var objOne = this.initElement(new Resource[] { this.createMinimalLV("lv1"), this.createMinimalLV("lv2") }, null,
+ null);
+ var objTwo = this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__RESOURCES);
+ }
+
+ @Test
+ public void testResourceNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null),
+ new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__RESOURCES);
+ }
+
+ @Test
+ public void testCatchBlock() {
+ var objOne = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null);
+ var objTwo = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p2", "t2") }, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS);
+ }
+
+ @Test
+ public void testCatchBlockSize() {
+ var objOne = this.initElement(null,
+ new CatchBlock[] { this.createMinimalCB("p1", "t1"), this.createMinimalCB("p2", "t2") }, null);
+ var objTwo = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null);
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS);
+ }
+
+ @Test
+ public void testCatchBlockNullCheck() {
+ this.testSimilarityNullCheck(
+ this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null),
+ new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS);
+ }
+
+ @Test
+ public void testFinallyBlock() {
+ var objOne = this.initElement(null, null, this.createMinimalBlockWithNullReturn());
+ var objTwo = this.initElement(null, null, this.createMinimalBlockWithTrivialAssert());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK);
+ }
+
+ @Test
+ public void testFinallyBlockNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, null, this.createMinimalBlockWithNullReturn()),
+ new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java
new file mode 100644
index 0000000000..bb606d4bc9
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.TypeParameter;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.generics.TypeParameterInitialiser;
+
+public class TypeParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences, UsesNames {
+ protected TypeParameter initElement(TypeReference[] extTypes) {
+ var tpInit = new TypeParameterInitialiser();
+ var tp = tpInit.instantiate();
+ Assertions.assertTrue(tpInit.setName(tp, this.getDefaultName()));
+ Assertions.assertTrue(tpInit.addExtendTypes(tp, extTypes));
+ return tp;
+ }
+
+ @Test
+ public void testExtendType() {
+ var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES);
+ }
+
+ @Test
+ public void testExtendTypeSize() {
+ var objOne = this.initElement(
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @Test
+ public void testExtendTypeNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ new TypeParameterInitialiser(), false, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java
new file mode 100644
index 0000000000..518103f6aa
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java
@@ -0,0 +1,57 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.UnaryExpression;
+import org.emftext.language.java.expressions.UnaryExpressionChild;
+import org.emftext.language.java.operators.UnaryOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.UnaryExpressionInitialiser;
+
+public class UnaryExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected UnaryExpression initElement(UnaryExpressionChild child, UnaryOperator[] ops) {
+ var ueInit = new UnaryExpressionInitialiser();
+ var ue = ueInit.instantiate();
+ Assertions.assertTrue(ueInit.setChild(ue, child));
+ Assertions.assertTrue(ueInit.addOperators(ue, ops));
+ return ue;
+ }
+
+ @Test
+ public void testChild() {
+ this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null),
+ this.initElement(this.createDecimalIntegerLiteral(2), null),
+ ExpressionsPackage.Literals.UNARY_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testChildNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null),
+ new UnaryExpressionInitialiser(), false, ExpressionsPackage.Literals.UNARY_EXPRESSION__CHILD);
+ }
+
+ @Test
+ public void testOperator() {
+ this.testSimilarity(this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }),
+ this.initElement(null, new UnaryOperator[] { this.createSubtractionOperator() }),
+ ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS);
+ }
+
+ @Test
+ public void testOperatorSize() {
+ this.testSimilarity(
+ this.initElement(null,
+ new UnaryOperator[] { this.createAdditionOperator(), this.createSubtractionOperator() }),
+ this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }),
+ ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS);
+ }
+
+ @Test
+ public void testOperatorNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }),
+ new UnaryExpressionInitialiser(), false, ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java
new file mode 100644
index 0000000000..41a2058ba5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java
@@ -0,0 +1,34 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.emftext.language.java.statements.YieldStatement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.YieldStatementInitialiser;
+
+public class YieldStatementTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+ protected YieldStatement initElement(Expression yieldExpr) {
+ var ysInit = new YieldStatementInitialiser();
+ var ys = ysInit.instantiate();
+ Assertions.assertTrue(ysInit.setYieldExpression(ys, yieldExpr));
+ return ys;
+ }
+
+ @Test
+ public void testYieldExpression() {
+ var objOne = this.initElement(this.createDecimalIntegerLiteral(1));
+ var objTwo = this.initElement(this.createDecimalIntegerLiteral(2));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION);
+ }
+
+ @Test
+ public void testYieldExpressionNullCheck() {
+ this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)),
+ new YieldStatementInitialiser(), false, StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java
new file mode 100644
index 0000000000..a6ecf6918f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java
@@ -0,0 +1,22 @@
+/**
+ * Contains unit tests for {@link EObject} types, which have a concrete
+ * implementation in form of a non-abstract class in the {@link Commentable}
+ * type hierarchy. In the said tests, {@link EObject} instances are constructed
+ * programmatically and are checked for similarity.
+ *
+ * The tests within this package are meant to be minimal and only to test
+ * similarity checking with respect to individual attributes of {@link EObject}
+ * instances, in an isolated fashion. This means, each test performs similarity
+ * checking on 2 {@link EObject} instances, whose attributes are equal except
+ * for one of them. This way, one can pinpoint basic similarity checking errors
+ * regarding certain attributes of certain {@link EObject} implementors.
+ *
+ * It is highly recommended to make the construction of the "main"
+ * {@link EObject} instances as obvious and visible as possible, as their
+ * construction can get complicated and not knowing all the construction steps
+ * can lead to tests not fulfilling their goal.
+ *
+ * See {@link cipm.consistency.fitests.similarity.jamopp.unittests} to find out
+ * more about what test methods do.
+ */
+package cipm.consistency.fitests.similarity.jamopp.unittests.impltests;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java
new file mode 100644
index 0000000000..ec9a99136b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java
@@ -0,0 +1,79 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.containers.Package;
+
+import org.emftext.language.java.modules.AccessProvidingModuleDirective;
+import org.emftext.language.java.modules.ModuleReference;
+import org.emftext.language.java.modules.ModulesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleReferences;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackages;
+import cipm.consistency.initialisers.jamopp.modules.IAccessProvidingModuleDirectiveInitialiser;
+
+public class AccessProvidingModuleDirectiveTest extends AbstractJaMoPPSimilarityTest
+ implements UsesModuleReferences, UsesPackages {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IAccessProvidingModuleDirectiveInitialiser.class);
+ }
+
+ protected AccessProvidingModuleDirective initElement(IAccessProvidingModuleDirectiveInitialiser init,
+ ModuleReference[] modRefs, Package accessablePac) {
+ var result = init.instantiate();
+ Assertions.assertTrue(init.addModules(result, modRefs));
+ Assertions.assertTrue(init.setAccessablePackage(result, accessablePac));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModule(IAccessProvidingModuleDirectiveInitialiser init) {
+ var objOne = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null);
+ var objTwo = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod2") }, null);
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModuleSize(IAccessProvidingModuleDirectiveInitialiser init) {
+ var objOne = this.initElement(init,
+ new ModuleReference[] { this.createMinimalMR("mod1"), this.createMinimalMR("mod2") }, null);
+ var objTwo = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null);
+
+ this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModuleNullCheck(IAccessProvidingModuleDirectiveInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null), init, false,
+ ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testAccessablePackage(IAccessProvidingModuleDirectiveInitialiser init) {
+ var objOne = this.initElement(init, null, this.createMinimalPackage(new String[] { "ns1", "ns2" }));
+ var objTwo = this.initElement(init, null, this.createMinimalPackage(new String[] { "ns3", "ns4" }));
+
+ this.testSimilarity(objOne, objTwo,
+ ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testAccessablePackageNullCheck(IAccessProvidingModuleDirectiveInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, null, this.createMinimalPackage(new String[] { "ns1", "ns2" })), init, false,
+ ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java
new file mode 100644
index 0000000000..3a8a3b1458
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java
@@ -0,0 +1,173 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.modifiers.ModifiersPackage;
+import org.emftext.language.java.modifiers.AnnotableAndModifiable;
+import org.emftext.language.java.modifiers.Modifier;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationInstances;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+
+public class AnnotableAndModifiableTest extends AbstractJaMoPPSimilarityTest
+ implements UsesAnnotationInstances, UsesModifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IAnnotableAndModifiableInitialiser.class);
+ }
+
+ protected AnnotableAndModifiable initElement(IAnnotableAndModifiableInitialiser init, Modifier[] modifs,
+ AnnotationInstance[] ais) {
+
+ var result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addModifiers(result, modifs));
+ Assertions.assertTrue(init.addAnnotationInstances(result, ais));
+
+ return result;
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testModifier(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null);
+ var objTwo = this.initElement(init, new Modifier[] { this.createVolatile(), this.createProtected() }, null);
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testModifierSize(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null);
+ var objTwo = this.initElement(init, new Modifier[] { this.createAbstract() }, null);
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testModifierNullCheck(IAnnotableAndModifiableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null), init,
+ true, ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testAnnotationInstance(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") });
+ var objTwo = this.initElement(init, null,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns2" }, "anno2") });
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testAnnotationInstanceSize(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") });
+ var objTwo = this.initElement(init, null,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1"),
+ this.createMinimalAI(new String[] { "ns2" }, "anno2") });
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testAnnotationInstanceNullCheck(IAnnotableAndModifiableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, null,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }),
+ init, true, ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testPrivate(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makePrivate(objOne);
+
+ var objTwo = this.initElement(init, null, null);
+ init.makePublic(objTwo);
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testPrivateNullCheck(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makePrivate(objOne);
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testProtected(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makeProtected(objOne);
+
+ var objTwo = this.initElement(init, null, null);
+ init.makePublic(objTwo);
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testProtectedNullCheck(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makeProtected(objOne);
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testPublic(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makePublic(objOne);
+
+ var objTwo = this.initElement(init, null, null);
+ init.makePrivate(objTwo);
+
+ this.testSimilarity(objOne, objTwo,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest()
+ @MethodSource("provideArguments")
+ public void testPublicNullCheck(IAnnotableAndModifiableInitialiser init) {
+ var objOne = this.initElement(init, null, null);
+ init.makePublic(objOne);
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java
new file mode 100644
index 0000000000..cd3cca4972
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java
@@ -0,0 +1,63 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.annotations.Annotable;
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.annotations.AnnotationsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationInstances;
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+public class AnnotableTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationInstances {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IAnnotableInitialiser.class);
+ }
+
+ protected Annotable initElement(IAnnotableInitialiser init, AnnotationInstance[] annotations) {
+ Annotable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addAnnotations(result, annotations));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testAnnotation(IAnnotableInitialiser init) {
+ var objOne = this.initElement(init,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") });
+ var objTwo = this.initElement(init,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns2" }, "anno2") });
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testAnnotationSize(IAnnotableInitialiser init) {
+ var objOne = this.initElement(init,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1"),
+ this.createMinimalAI(new String[] { "ns2" }, "anno2") });
+ var objTwo = this.initElement(init,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") });
+
+ this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testAnnotationNullCheck(IAnnotableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init,
+ new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }),
+ init, true, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java
new file mode 100644
index 0000000000..edd05ce1db
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java
@@ -0,0 +1,60 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.references.Argumentable;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser;
+
+public class ArgumentableTest extends AbstractJaMoPPSimilarityTest
+ implements UsesConcreteClassifiers, UsesExpressions, UsesLiterals {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IArgumentableInitialiser.class);
+ }
+
+ protected Argumentable initElement(IArgumentableInitialiser init, Expression[] args) {
+ var result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addArguments(result, args));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArguments(IArgumentableInitialiser init) {
+ var objOne = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) });
+ var objTwo = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(0) });
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArgumentsSize(IArgumentableInitialiser init) {
+ var objOne = this.initElement(init,
+ new Expression[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) });
+ var objTwo = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) });
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArgumentsNullCheck(IArgumentableInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) }),
+ init, true, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java
new file mode 100644
index 0000000000..01443c0a60
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java
@@ -0,0 +1,48 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.arrays.ArrayInitializer;
+import org.emftext.language.java.arrays.ArrayInstantiationByValues;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArrayInitializers;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.initialisers.jamopp.arrays.IArrayInstantiationByValuesInitialiser;
+
+public class ArrayInstantiationByValuesTest extends AbstractJaMoPPSimilarityTest
+ implements UsesArrayInitializers, UsesLiterals {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IArrayInstantiationByValuesInitialiser.class);
+ }
+
+ protected ArrayInstantiationByValues initElement(IArrayInstantiationByValuesInitialiser init,
+ ArrayInitializer arrInit) {
+ ArrayInstantiationByValues result = init.instantiate();
+ Assertions.assertTrue(init.setArrayInitializer(result, arrInit));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayInitialiser(IArrayInstantiationByValuesInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(0)));
+ var objTwo = this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(1)));
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayInitialiserNullCheck(IArrayInstantiationByValuesInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(0))), init,
+ false, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java
new file mode 100644
index 0000000000..cb0e53cb7f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java
@@ -0,0 +1,94 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.arrays.ArrayDimension;
+import org.emftext.language.java.arrays.ArrayTypeable;
+import org.emftext.language.java.arrays.ArraysPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArrayDimensions;
+import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser;
+
+public class ArrayTypeableTest extends AbstractJaMoPPSimilarityTest implements UsesArrayDimensions {
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IArrayTypeableInitialiser.class);
+ }
+
+ protected ArrayTypeable initElement(IArrayTypeableInitialiser init, ArrayDimension[] arrDimsBefore,
+ ArrayDimension[] arrDimsAfter) {
+ ArrayTypeable result = init.instantiate();
+ Assertions.assertTrue(init.addArrayDimensionsBefore(result, arrDimsBefore));
+ Assertions.assertTrue(init.addArrayDimensionsAfter(result, arrDimsAfter));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsBefore(IArrayTypeableInitialiser init) {
+ var objOne = this.initElement(init,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null);
+ var objTwo = this.initElement(init,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns2" }, "ai2") }, null);
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsBeforeSize(IArrayTypeableInitialiser init) {
+ var objOne = this.initElement(init,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1"),
+ this.createArrayDimension(new String[] { "ns2" }, "ai2") },
+ null);
+ var objTwo = this.initElement(init,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null);
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsBeforeNullCheck(IArrayTypeableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null),
+ init, false, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsAfter(IArrayTypeableInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") });
+ var objTwo = this.initElement(init, null,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns2" }, "ai2") });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsAfterSize(IArrayTypeableInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1"),
+ this.createArrayDimension(new String[] { "ns2" }, "ai2") });
+ var objTwo = this.initElement(init, null,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") });
+
+ this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArrayDimensionsAfterNullCheck(IArrayTypeableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, null,
+ new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }),
+ init, false, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java
new file mode 100644
index 0000000000..0cb9ff2978
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.BlockContainer;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser;
+
+public class BlockContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IBlockContainerInitialiser.class);
+ }
+
+ protected BlockContainer initElement(IBlockContainerInitialiser init, Block bl) {
+ BlockContainer result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setBlock(result, bl));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testBlock(IBlockContainerInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalBlockWithNullReturn());
+ var objTwo = this.initElement(init, this.createMinimalBlockWithTrivialAssert());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testBlockNullCheck(IBlockContainerInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalBlockWithNullReturn()), init, true,
+ StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java
new file mode 100644
index 0000000000..120029d3d2
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.generics.CallTypeArgumentable;
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.TypeArgument;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeArguments;
+import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser;
+
+public class CallTypeArgumentableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeArguments {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ICallTypeArgumentableInitialiser.class);
+ }
+
+ protected CallTypeArgumentable initElement(ICallTypeArgumentableInitialiser init, TypeArgument[] callTypeArgs) {
+ CallTypeArgumentable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addCallTypeArguments(result, callTypeArgs));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testCallTypeArguments(ICallTypeArgumentableInitialiser init) {
+ var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") });
+ var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalSuperTAWithCls("cls2") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testCallTypeArgumentsSize(ICallTypeArgumentableInitialiser init) {
+ var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1"),
+ this.createMinimalExtendsTAWithCls("cls2") });
+ var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testCallTypeArgumentsNullCheck(ICallTypeArgumentableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }), init, true,
+ GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java
new file mode 100644
index 0000000000..42e5372cfe
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java
@@ -0,0 +1,119 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.ImportsPackage;
+import org.emftext.language.java.imports.PackageImport;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackageImports;
+import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser;
+
+/**
+ * Classifier has no modifiable attributes on its own.
+ *
+ * @author Alp Torac Genc
+ */
+public class ClassifierTest extends AbstractJaMoPPSimilarityTest implements UsesImports, UsesPackageImports {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IClassifierInitialiser.class);
+ }
+
+ protected Classifier initElement(IClassifierInitialiser init, Import[] imps, PackageImport[] pImps) {
+
+ var result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+
+ // If there are no imports to add, add(Package)Imports will return true
+ Assertions.assertEquals(init.canAddImports(result) || imps == null, init.addImports(result, imps));
+ Assertions.assertEquals(init.canAddPackageImports(result) || pImps == null,
+ init.addPackageImports(result, pImps));
+
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImports(IClassifierInitialiser init) {
+ var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null);
+ var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls2") }, null);
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne) && !init.canAddImports(objTwo)));
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImportsSize(IClassifierInitialiser init) {
+ var objOne = this.initElement(init,
+ new Import[] { this.createMinimalClsImport("cls1"), this.createMinimalClsImport("cls2") }, null);
+ var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null);
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne) && !init.canAddImports(objTwo)));
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImportsNullCheck(IClassifierInitialiser init) {
+ var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null);
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne)));
+ }
+
+ /**
+ * Package import differences do not break similarity
+ */
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testPackageImports(IClassifierInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) });
+ var objTwo = this.initElement(init, null,
+ new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns3", "ns4" }) });
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne) && !init.canAddImports(objTwo)));
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testPackageImportsSize(IClassifierInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }),
+ this.createMinimalPackageImport(new String[] { "ns3", "ns4" }) });
+ var objTwo = this.initElement(init, null,
+ new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) });
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne) && !init.canAddImports(objTwo)));
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testPackageImportsNullCheck(IClassifierInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) });
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue()
+ || (!init.canAddImports(objOne)));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java
new file mode 100644
index 0000000000..4ab95840ee
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import org.emftext.language.java.containers.Package;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackages;
+import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser;
+
+public class ConcreteClassifierTest extends AbstractJaMoPPSimilarityTest implements UsesPackages {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IConcreteClassifierInitialiser.class);
+ }
+
+ protected ConcreteClassifier initElement(IConcreteClassifierInitialiser init, Package pac) {
+
+ ConcreteClassifier result = init.instantiate();
+ Assertions.assertTrue(init.setPackage(result, pac));
+
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testPackage(IConcreteClassifierInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalPackage("pOneNS", 2));
+ var objTwo = this.initElement(init, this.createMinimalPackage("pTwoNS", 2));
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testPackageNullCheck(IConcreteClassifierInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalPackage("pOneNS", 2)), init, false,
+ ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java
new file mode 100644
index 0000000000..1f82dd7edd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Conditional;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.statements.IConditionalInitialiser;
+
+public class ConditionalTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IConditionalInitialiser.class);
+ }
+
+ protected Conditional initElement(IConditionalInitialiser init, Expression cond) {
+ Conditional result = init.instantiate();
+ Assertions.assertTrue(init.setCondition(result, cond));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testCondition(IConditionalInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalTrueEE());
+ var objTwo = this.initElement(init, this.createMinimalTrueNEE());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CONDITIONAL__CONDITION);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testConditionNullCheck(IConditionalInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalTrueEE()), init, false,
+ StatementsPackage.Literals.CONDITIONAL__CONDITION);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java
new file mode 100644
index 0000000000..e5a09db934
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java
@@ -0,0 +1,96 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.references.ElementReference;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.references.IElementReferenceInitialiser;
+
+public class ElementReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IElementReferenceInitialiser.class);
+ }
+
+ protected ElementReference initElement(IElementReferenceInitialiser init, ReferenceableElement target,
+ ReferenceableElement cTarget) {
+ ElementReference result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setTarget(result, target));
+ Assertions.assertTrue(init.setContainedTarget(result, cTarget));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTarget(IElementReferenceInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls1"), null);
+ var objTwo = this.initElement(init, this.createMinimalClass("cls2"), null);
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNullCheck(IElementReferenceInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1"), null), init, false,
+ ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET);
+ }
+
+ /**
+ * Makes sure that not providing a container for the created element reference
+ * does not result in an exception.
+ */
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNoException(IElementReferenceInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls1"), null);
+ var objTwo = this.initElement(init, this.createMinimalClass("cls2"), null);
+
+ Assertions.assertDoesNotThrow(
+ () -> this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET));
+ }
+
+ /**
+ * Makes sure that not providing a container for the created element reference
+ * does not result in an exception, if it is compared to an uninitialised
+ * element reference.
+ */
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNoExceptionNullCheck(IElementReferenceInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls1"), null);
+ var objTwo = init.instantiate();
+
+ Assertions.assertDoesNotThrow(
+ () -> this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET));
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testContainedTarget(IElementReferenceInitialiser init) {
+ var objOne = this.initElement(init, null, this.createMinimalClass("cls1"));
+ var objTwo = this.initElement(init, null, this.createMinimalClass("cls2"));
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testContainedTargetNullCheck(IElementReferenceInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, null, this.createMinimalClass("cls1")), init, false,
+ ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java
new file mode 100644
index 0000000000..bc6fba636c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java
@@ -0,0 +1,59 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.members.ExceptionThrower;
+import org.emftext.language.java.members.MembersPackage;
+import org.emftext.language.java.types.NamespaceClassifierReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.members.IExceptionThrowerInitialiser;
+
+public class ExceptionThrowerTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IExceptionThrowerInitialiser.class);
+ }
+
+ protected ExceptionThrower initElement(IExceptionThrowerInitialiser init,
+ NamespaceClassifierReference[] exceptions) {
+ ExceptionThrower result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addExceptions(result, exceptions));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testExceptions(IExceptionThrowerInitialiser init) {
+ var objOne = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") });
+ var objTwo = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls2") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testExceptionsSize(IExceptionThrowerInitialiser init) {
+ var objOne = this.initElement(init,
+ new NamespaceClassifierReference[] { this.createMinimalCNR("cls1"), this.createMinimalCNR("cls2") });
+ var objTwo = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testExceptionsNullCheck(IExceptionThrowerInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") }), init,
+ true, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java
new file mode 100644
index 0000000000..96577bb0cd
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java
@@ -0,0 +1,54 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.ClassifiersPackage;
+import org.emftext.language.java.classifiers.Implementor;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.classifiers.IImplementorInitialiser;
+
+public class ImplementorTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IImplementorInitialiser.class);
+ }
+
+ protected Implementor initElement(IImplementorInitialiser init, TypeReference[] impls) {
+ Implementor result = init.instantiate();
+ Assertions.assertTrue(init.addImplements(result, impls));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImplements(IImplementorInitialiser init) {
+ var objOne = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImplementsSize(IImplementorInitialiser init) {
+ var objOne = this.initElement(init,
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImplementsNullCheck(IImplementorInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ init, false, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java
new file mode 100644
index 0000000000..194a5f69c5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.ImportsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports;
+import cipm.consistency.initialisers.jamopp.imports.IImportInitialiser;
+
+public class ImportTest extends AbstractJaMoPPSimilarityTest implements UsesImports {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IImportInitialiser.class);
+ }
+
+ protected Import initElement(IImportInitialiser init, ConcreteClassifier cls) {
+ Import result = init.instantiate();
+ Assertions.assertTrue(init.setClassifier(result, cls));
+
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testClassifier(IImportInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls1Name"));
+ var objTwo = this.initElement(init, this.createMinimalClass("cls2Name"));
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORT__CLASSIFIER);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testClassifierNullCheck(IImportInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1Name")), init, false,
+ ImportsPackage.Literals.IMPORT__CLASSIFIER);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java
new file mode 100644
index 0000000000..8bc94d955c
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.ImportingElement;
+import org.emftext.language.java.imports.ImportsPackage;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImportingElements;
+import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser;
+
+public class ImportingElementTest extends AbstractJaMoPPSimilarityTest implements UsesImportingElements {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IImportingElementInitialiser.class);
+ }
+
+ protected ImportingElement initElement(IImportingElementInitialiser init, Import[] imps) {
+ ImportingElement result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addImports(result, imps));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImports(IImportingElementInitialiser init) {
+ var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") });
+ var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls2") });
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImportsSize(IImportingElementInitialiser init) {
+ var objOne = this.initElement(init,
+ new Import[] { this.createMinimalClsImport("cls1"), this.createMinimalClsImport("cls2") });
+ var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") });
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testImportsNullCheck(IImportingElementInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }), init,
+ true, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java
new file mode 100644
index 0000000000..0e7ade8281
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.instantiations.Initializable;
+import org.emftext.language.java.instantiations.InstantiationsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals;
+import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser;
+
+public class InitializableTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IInitializableInitialiser.class);
+ }
+
+ protected Initializable initElement(IInitializableInitialiser init, Expression initVal) {
+ Initializable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setInitialValue(result, initVal));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testInitialValue(IInitializableInitialiser init) {
+ var objOne = this.initElement(init, this.createDecimalIntegerLiteral(5));
+ var objTwo = this.initElement(init, this.createBooleanLiteral(false));
+
+ this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testInitialValueNullCheck(IInitializableInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createDecimalIntegerLiteral(5)), init, true,
+ InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java
new file mode 100644
index 0000000000..68338fdbe0
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java
@@ -0,0 +1,46 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.containers.ContainersPackage;
+import org.emftext.language.java.containers.JavaRoot;
+import org.emftext.language.java.containers.Origin;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.containers.IJavaRootInitialiser;
+
+public class JavaRootTest extends AbstractJaMoPPSimilarityTest {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IJavaRootInitialiser.class);
+ }
+
+ protected JavaRoot initElement(IJavaRootInitialiser init, Origin origin) {
+ JavaRoot result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setOrigin(result, origin));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testOrigin(IJavaRootInitialiser init) {
+ var objOne = this.initElement(init, Origin.BINDING);
+ var objTwo = this.initElement(init, Origin.CLASS);
+
+ this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.JAVA_ROOT__ORIGIN);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testOriginNullCheck(IJavaRootInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, Origin.BINDING), init, true,
+ ContainersPackage.Literals.JAVA_ROOT__ORIGIN);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java
new file mode 100644
index 0000000000..f5b05df3a1
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.statements.Jump;
+import org.emftext.language.java.statements.JumpLabel;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.IJumpInitialiser;
+
+public class JumpTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IJumpInitialiser.class);
+ }
+
+ protected Jump initElement(IJumpInitialiser init, JumpLabel jl) {
+ Jump result = init.instantiate();
+ Assertions.assertTrue(init.setTarget(result, jl));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTarget(IJumpInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalJLToNullReturn("jl1"));
+ var objTwo = this.initElement(init, this.createMinimalJLToTrivialAssert("jl2"));
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.JUMP__TARGET);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNullCheck(IJumpInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalJLToNullReturn("jl1")), init, false,
+ StatementsPackage.Literals.JUMP__TARGET);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java
new file mode 100644
index 0000000000..92f518317d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java
@@ -0,0 +1,84 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.members.Member;
+import org.emftext.language.java.members.MemberContainer;
+import org.emftext.language.java.members.MembersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesFields;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods;
+import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser;
+
+public class MemberContainerTest extends AbstractJaMoPPSimilarityTest
+ implements UsesMethods, UsesFields, UsesConcreteClassifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IMemberContainerInitialiser.class);
+ }
+
+ protected MemberContainer initElement(IMemberContainerInitialiser init, Member[] members, Member[] defMembers) {
+ MemberContainer result = init.instantiate();
+ Assertions.assertTrue(init.addMembers(result, members));
+ Assertions.assertTrue(init.addDefaultMembers(result, defMembers));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testMember(IMemberContainerInitialiser init) {
+ var objOne = this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null);
+ var objTwo = this.initElement(init, new Member[] { this.createMinimalClass("cls2") }, null);
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testMemberSize(IMemberContainerInitialiser init) {
+ var objOne = this.initElement(init,
+ new Member[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") }, null);
+ var objTwo = this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null);
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testMemberNullCheck(IMemberContainerInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null),
+ init, false, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testDefaultMember(IMemberContainerInitialiser init) {
+ var objOne = this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") });
+ var objTwo = this.initElement(init, null, new Member[] { this.createMinimalClass("cls2") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testDefaultMemberSize(IMemberContainerInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new Member[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") });
+ var objTwo = this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") });
+
+ this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testDefaultMemberNullCheck(IMemberContainerInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") }),
+ init, false, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java
new file mode 100644
index 0000000000..da87ad34af
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java
@@ -0,0 +1,55 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.modifiers.Modifiable;
+import org.emftext.language.java.modifiers.Modifier;
+import org.emftext.language.java.modifiers.ModifiersPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers;
+import cipm.consistency.initialisers.jamopp.modifiers.IModifiableInitialiser;
+
+public class ModifiableTest extends AbstractJaMoPPSimilarityTest implements UsesModifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IModifiableInitialiser.class);
+ }
+
+ protected Modifiable initElement(IModifiableInitialiser init, Modifier[] modifs) {
+ Modifiable result = init.instantiate();
+ Assertions.assertTrue(init.addModifiers(result, modifs));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModifier(IModifiableInitialiser init) {
+ var objOne = this.initElement(init, new Modifier[] { this.createFinal() });
+ var objTwo = this.initElement(init, new Modifier[] { this.createAbstract() });
+
+ this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModifierSize(IModifiableInitialiser init) {
+ var objOne = this.initElement(init, new Modifier[] { this.createFinal(), this.createAbstract() });
+ var objTwo = this.initElement(init, new Modifier[] { this.createFinal() });
+
+ this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testModifierNullCheck(IModifiableInitialiser init) {
+ var objOne = this.initElement(init, new Modifier[] { this.createFinal() });
+ var objTwo = init.instantiate();
+
+ this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java
new file mode 100644
index 0000000000..bbdd5e57d5
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.commons.CommonsPackage;
+import org.emftext.language.java.commons.NamedElement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+
+public class NamedElementTest extends AbstractJaMoPPSimilarityTest {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(INamedElementInitialiser.class);
+ }
+
+ protected NamedElement initElement(INamedElementInitialiser init, String name) {
+ NamedElement result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertEquals(init.canSetName(result) || name == null, init.setName(result, name));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testName(INamedElementInitialiser init) {
+ var objOne = this.initElement(init, "name11");
+ var objTwo = this.initElement(init, "name22");
+
+ this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMED_ELEMENT__NAME);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNameNullCheck(INamedElementInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, "name11"), init, false,
+ CommonsPackage.Literals.NAMED_ELEMENT__NAME);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java
new file mode 100644
index 0000000000..2dd5b3c402
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java
@@ -0,0 +1,69 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.commons.CommonsPackage;
+import org.emftext.language.java.commons.NamespaceAwareElement;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public class NamespaceAwareElementTest extends AbstractJaMoPPSimilarityTest {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(INamespaceAwareElementInitialiser.class);
+ }
+
+ private final String[] nss1 = new String[] { "ns11", "ns12", "ns13" };
+ private final String[] nss2 = new String[] { "ns21", "ns22", "ns23" };
+
+ protected NamespaceAwareElement initElement(INamespaceAwareElementInitialiser init, String[] nss) {
+ NamespaceAwareElement result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addNamespaces(result, nss));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNamespace(INamespaceAwareElementInitialiser init) {
+ var objOne = this.initElement(init, nss1);
+ var objTwo = this.initElement(init, nss2);
+
+ this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES);
+ }
+
+ /**
+ * Tests whether longer namespaces with the same prefix are different.
+ */
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNamespaceScope(INamespaceAwareElementInitialiser init) {
+ for (int i = 0; i < nss1.length; i++) {
+ var newNss = new String[i];
+
+ for (int j = 0; j < i; j++) {
+ newNss[j] = nss1[j];
+ }
+
+ var objOne = this.initElement(init, newNss);
+ var objTwo = this.initElement(init, nss1);
+
+ this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES);
+ }
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNamespaceNullCheck(INamespaceAwareElementInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, nss1), init, true,
+ CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES);
+ }
+
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java
new file mode 100644
index 0000000000..5b48773226
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.parameters.Parameter;
+import org.emftext.language.java.parameters.ParametersPackage;
+import org.emftext.language.java.parameters.Parametrizable;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters;
+import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser;
+
+public class ParametrizableTest extends AbstractJaMoPPSimilarityTest implements UsesParameters {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IParametrizableInitialiser.class);
+ }
+
+ protected Parametrizable initElement(IParametrizableInitialiser init, Parameter[] params) {
+ Parametrizable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addParameters(result, params));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testParameters(IParametrizableInitialiser init) {
+ var objOne = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") });
+ var objTwo = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p2", "t2") });
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testParametersSize(IParametrizableInitialiser init) {
+ var objOne = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1"),
+ this.createMinimalOrdParamWithClsTarget("p2", "t2") });
+ var objTwo = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") });
+
+ this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testParametersNullCheck(IParametrizableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") }), init,
+ true, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java
new file mode 100644
index 0000000000..ca9f172937
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.PrimitiveType;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.types.IPrimitiveTypeInitialiser;
+
+public class PrimitiveTypeTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IPrimitiveTypeInitialiser.class);
+ }
+
+ protected PrimitiveType initElement(IPrimitiveTypeInitialiser init, Classifier target) {
+ var res = init.instantiate();
+
+ Assertions.assertFalse(init.setTarget(res, target));
+ return res;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTarget(IPrimitiveTypeInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls"));
+ var objTwo = init.instantiate();
+
+ this.testSimilarity(objOne, objTwo, PrimitiveType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNullCheck(IPrimitiveTypeInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1")), init, false,
+ PrimitiveType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java
new file mode 100644
index 0000000000..71d234cfb4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java
@@ -0,0 +1,76 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.references.Reference;
+import org.emftext.language.java.references.ReferencesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArraySelectors;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesReferences;
+import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser;
+
+public class ReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesReferences, UsesArraySelectors {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IReferenceInitialiser.class);
+ }
+
+ protected Reference initElement(IReferenceInitialiser init, Reference next, ArraySelector[] arrSels) {
+ Reference ref = init.instantiate();
+ Assertions.assertTrue(init.initialise(ref));
+ Assertions.assertTrue(init.setNext(ref, next));
+ Assertions.assertTrue(init.addArraySelectors(ref, arrSels));
+ return ref;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNext(IReferenceInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalSR("str1"), null);
+ var objTwo = this.initElement(init, this.createMinimalSR("str2"), null);
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__NEXT);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testNextNullCheck(IReferenceInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalSR("str1"), null), init, true,
+ ReferencesPackage.Literals.REFERENCE__NEXT);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArraySelector(IReferenceInitialiser init) {
+ var objOne = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) });
+ var objTwo = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(1) });
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArraySelectorSize(IReferenceInitialiser init) {
+ var objOne = this.initElement(init, null,
+ new ArraySelector[] { this.createMinimalAS(0), this.createMinimalAS(1) });
+ var objTwo = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) });
+
+ this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testArraySelectorNullCheck(IReferenceInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) }),
+ init, true, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java
new file mode 100644
index 0000000000..a4c08f8c1e
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.StatementContainer;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.IStatementContainerInitialiser;
+
+public class StatementContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IStatementContainerInitialiser.class);
+ }
+
+ protected StatementContainer initElement(IStatementContainerInitialiser init, Statement st) {
+ StatementContainer result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setStatement(result, st));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatement(IStatementContainerInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalNullReturn());
+ var objTwo = this.initElement(init, this.createMinimalTrivialAssert());
+
+ this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatementNullCheck(IStatementContainerInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalNullReturn()), init, true,
+ StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java
new file mode 100644
index 0000000000..413bd7719a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java
@@ -0,0 +1,71 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.StatementListContainer;
+import org.emftext.language.java.statements.StatementsPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements;
+import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser;
+
+/**
+ * {@link StatementListContainer} has no attributes itself.
+ *
+ * @author Alp Torac Genc
+ */
+public class StatementListContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IStatementListContainerInitialiser.class);
+ }
+
+ protected StatementListContainer initElement(IStatementListContainerInitialiser init, Statement[] sts) {
+
+ StatementListContainer result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertEquals(init.canContainStatements(result), init.addStatements(result, sts));
+
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatements(IStatementListContainerInitialiser init) {
+ var objOne = this.initElement(init, new Statement[] { this.createMinimalNullReturn() });
+ var objTwo = this.initElement(init, new Statement[] { this.createMinimalTrivialAssert() });
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue()
+ || (!init.canContainStatements(objOne) && !init.canContainStatements(objTwo)));
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatementsSize(IStatementListContainerInitialiser init) {
+ var objOne = this.initElement(init,
+ new Statement[] { this.createMinimalTrivialAssert(), this.createMinimalNullReturn() });
+ var objTwo = this.initElement(init, new Statement[] { this.createMinimalTrivialAssert() });
+
+ this.testSimilarity(objOne, objTwo,
+ this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue()
+ || (!init.canContainStatements(objOne) && !init.canContainStatements(objTwo)));
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatementsNullCheck(IStatementListContainerInitialiser init) {
+ var objOne = this.initElement(init, new Statement[] { this.createMinimalNullReturn() });
+
+ this.testSimilarityNullCheck(objOne, init, true,
+ this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue()
+ || (!init.canContainStatements(objOne)));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java
new file mode 100644
index 0000000000..80022646a2
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java
@@ -0,0 +1,45 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.imports.ImportsPackage;
+import org.emftext.language.java.imports.StaticImport;
+import org.emftext.language.java.modifiers.Static;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers;
+import cipm.consistency.initialisers.jamopp.imports.IStaticImportInitialiser;
+
+public class StaticImportTest extends AbstractJaMoPPSimilarityTest implements UsesImports, UsesModifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IStaticImportInitialiser.class);
+ }
+
+ protected StaticImport initElement(IStaticImportInitialiser init, Static st) {
+ StaticImport result = init.instantiate();
+ Assertions.assertTrue(init.setStatic(result, st));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStatic(IStaticImportInitialiser init) {
+ var objOne = this.initElement(init, this.createStatic());
+ var objTwo = this.initElement(init, null);
+
+ this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_IMPORT__STATIC);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testStaticNullCheck(IStaticImportInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createStatic()), init, false,
+ ImportsPackage.Literals.STATIC_IMPORT__STATIC);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java
new file mode 100644
index 0000000000..81534d07a4
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.TypeArgument;
+import org.emftext.language.java.generics.TypeArgumentable;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeArguments;
+import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser;
+
+public class TypeArgumentableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeArguments {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypeArgumentableInitialiser.class);
+ }
+
+ protected TypeArgumentable initElement(ITypeArgumentableInitialiser init, TypeArgument[] typeArgs) {
+ TypeArgumentable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addTypeArguments(result, typeArgs));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeArgument(ITypeArgumentableInitialiser init) {
+ var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") });
+ var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalSuperTAWithCls("cls2") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeArgumentSize(ITypeArgumentableInitialiser init) {
+ var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1"),
+ this.createMinimalSuperTAWithCls("cls2") });
+ var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeArgumentNullCheck(ITypeArgumentableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }), init, true,
+ GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java
new file mode 100644
index 0000000000..f9ce191efe
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java
@@ -0,0 +1,58 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.generics.GenericsPackage;
+import org.emftext.language.java.generics.TypeParameter;
+import org.emftext.language.java.generics.TypeParametrizable;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeParameters;
+import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser;
+
+public class TypeParametrizableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeParameters {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypeParametrizableInitialiser.class);
+ }
+
+ protected TypeParametrizable initElement(ITypeParametrizableInitialiser init, TypeParameter[] tParams) {
+ TypeParametrizable result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addTypeParameters(result, tParams));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeParameters(ITypeParametrizableInitialiser init) {
+ var objOne = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") });
+ var objTwo = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeParametersSize(ITypeParametrizableInitialiser init) {
+ var objOne = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1"),
+ this.createMinimalTypeParamWithClsRef("cls2") });
+ var objTwo = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeParametersNullCheck(ITypeParametrizableInitialiser init) {
+ this.testSimilarityNullCheck(
+ this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") }), init,
+ true, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java
new file mode 100644
index 0000000000..67dec062a7
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java
@@ -0,0 +1,39 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.TypeReference;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers;
+import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser;
+
+public class TypeReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(ITypeReferenceInitialiser.class);
+ }
+
+ protected TypeReference initElement(ITypeReferenceInitialiser init, Classifier target) {
+ var res = init.instantiate();
+
+ Assertions.assertEquals(init.canSetTargetTo(res, target), init.setTarget(res, target));
+ return res;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTargetNullCheck(ITypeReferenceInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClass("cls"));
+ var objTwo = init.instantiate();
+
+ // No expected result, because TypeReference does not have the "target"
+ // attribute, yet some of its implementors do.
+ Assertions.assertDoesNotThrow(() -> this.isSimilar(objOne, objTwo));
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java
new file mode 100644
index 0000000000..2cf6e2c85f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java
@@ -0,0 +1,57 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.types.TypeReference;
+import org.emftext.language.java.types.TypedElementExtension;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementExtensionInitialiser;
+
+public class TypedElementExtensionTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypedElementExtensionInitialiser.class);
+ }
+
+ protected TypedElementExtension initElement(ITypedElementExtensionInitialiser init, TypeReference[] actualTargets) {
+ TypedElementExtension result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.addActualTargets(result, actualTargets));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testActualTarget(ITypedElementExtensionInitialiser init) {
+ var objOne = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") });
+ var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls2") });
+
+ this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testActualTargets(ITypedElementExtensionInitialiser init) {
+ var objOne = this.initElement(init,
+ new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") });
+ var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") });
+
+ this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testActualTargetNullCheck(ITypedElementExtensionInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }),
+ init, true, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java
new file mode 100644
index 0000000000..e0308f3d46
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java
@@ -0,0 +1,47 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.types.TypeReference;
+import org.emftext.language.java.types.TypedElement;
+import org.emftext.language.java.types.TypesPackage;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public class TypedElementTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypedElementInitialiser.class);
+ }
+
+ protected TypedElement initElement(ITypedElementInitialiser init, TypeReference tRef) {
+ TypedElement result = init.instantiate();
+ Assertions.assertTrue(init.initialise(result));
+ Assertions.assertTrue(init.setTypeReference(result, tRef));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeReference(ITypedElementInitialiser init) {
+ var objOne = this.initElement(init, this.createMinimalClsRef("cls1"));
+ var objTwo = this.initElement(init, this.createMinimalClsRef("cls2"));
+
+ this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE);
+ }
+
+ @Disabled("Disabled till null pointer exceptions are fixed")
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testTypeReferenceNullCheck(ITypedElementInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClsRef("cls1")), init, true,
+ TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java
new file mode 100644
index 0000000000..3be70dbd0b
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java
@@ -0,0 +1,61 @@
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
+
+import java.util.stream.Stream;
+
+import org.emftext.language.java.expressions.ExpressionsPackage;
+import org.emftext.language.java.expressions.UnaryModificationExpression;
+import org.emftext.language.java.expressions.UnaryModificationExpressionChild;
+import org.emftext.language.java.operators.UnaryModificationOperator;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions;
+import cipm.consistency.initialisers.jamopp.expressions.IUnaryModificationExpressionInitialiser;
+
+public class UnaryModificationExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions {
+
+ private static Stream provideArguments() {
+ return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IUnaryModificationExpressionInitialiser.class);
+ }
+
+ protected UnaryModificationExpression initElement(IUnaryModificationExpressionInitialiser init,
+ UnaryModificationExpressionChild child, UnaryModificationOperator op) {
+ UnaryModificationExpression result = init.instantiate();
+ Assertions.assertTrue(init.setChild(result, child));
+ Assertions.assertTrue(init.setOperator(result, op));
+ return result;
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testChild(IUnaryModificationExpressionInitialiser init) {
+ this.testSimilarity(this.initElement(init, this.createDecimalIntegerLiteral(1), null),
+ this.initElement(init, this.createDecimalIntegerLiteral(2), null),
+ ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testChildNullCheck(IUnaryModificationExpressionInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, this.createDecimalIntegerLiteral(1), null), init, false,
+ ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testOperator(IUnaryModificationExpressionInitialiser init) {
+ this.testSimilarity(this.initElement(init, null, this.createPlusPlusOperator()),
+ this.initElement(init, null, this.createMinusMinusOperator()),
+ ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR);
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideArguments")
+ public void testOperatorNullCheck(IUnaryModificationExpressionInitialiser init) {
+ this.testSimilarityNullCheck(this.initElement(init, null, this.createPlusPlusOperator()), init, false,
+ ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR);
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java
new file mode 100644
index 0000000000..2b80519070
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java
@@ -0,0 +1,34 @@
+/**
+ * Contains unit tests for {@link EObject} types, which are extended by other
+ * EObject types within the {@link Commentable} type hierarchy. In the said
+ * tests, {@link EObject} instances are constructed programmatically and are
+ * checked for similarity.
+ *
+ * Since such types within the {@link Commentable} type hierarchy can have
+ * multiple sub-types, all tests should be parameterised over initialisers.
+ * Those initialisers may have to be adapted, if there are sub-types, which
+ * require additional setup steps to be "valid". Parameterising such tests help
+ * spare test code, as sub-types all need their mutual attributes to be tested.
+ *
+ *
+ * The tests within this package are meant to be minimal and only to test
+ * similarity checking with respect to individual attributes of {@link EObject}
+ * instances, in an isolated fashion. This means, each test performs similarity
+ * checking on 2 {@link EObject} instances, whose attributes are equal except
+ * for one of them. This way, one can pinpoint basic similarity checking errors
+ * regarding certain attributes of certain {@link EObject} implementors.
+ *
+ * It is highly recommended to make the construction of the "main"
+ * {@link EObject} instances as obvious and visible as possible, as their
+ * construction can get complicated and not knowing all the construction steps
+ * can lead to tests not fulfilling their goal. Furthermore, it is also
+ * important to adapt the initialisers, rather than using instanceof/if-blocks
+ * to define type-specific behaviour. Should certain sub-types diverge from
+ * their super type so much that they are incompatible with parameterised tests,
+ * it is suggested to instead define special unit tests for the said
+ * sub-types.
+ *
+ * See {@link cipm.consistency.fitests.similarity.jamopp.unittests} to find out
+ * more about what test methods do.
+ */
+package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java
new file mode 100644
index 0000000000..8752dcd7c2
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java
@@ -0,0 +1,41 @@
+/**
+ * Contains interfaces that can be implemented by tests, where initialisers are
+ * used to instantiate {@link EObject} implementors present in JaMoPP. Each
+ * initialiser in this package offers default methods that help encapsulate the
+ * creation of such EObject instances, which are needed in tests.
+ *
+ * It is recommended to only use the interfaces in this package to instantiate
+ * EObject instances that are needed to setup the "main" EObject instances under
+ * test (i.e. instances used in similarity checking methods). The creation of
+ * the "main" EObject instances should be done within the corresponding test
+ * class explicitly via initialisers, in order to avoid implicit steps as much
+ * as possible.
+ *
+ * While adding further interfaces to this package, it is suggested to check the
+ * existing interfaces and to extend them, if possible. Doing so will help keep
+ * consistency across test cases.
+ *
+ * The sub-packages of this package contain unit tests for EObject
+ * classes/interfaces using initialisers. For each attribute X of EObject
+ * implementor/interface EO, there are currently up to 3 test categories. Let
+ * eo1 and eo2 be instances of type EO, then test categories do the following:
+ *
+ * - testX: Performs similarity checking on eo1 and eo2, whose
+ * attributes are all equal except for X, and checks the result.
+ *
- testXSize: Same as testX, where X's value is an array and the
+ * corresponding arrays in eo1 and eo2 contain different amounts of elements: X
+ * of one eo contains 2 elements elem1 and elem2 (elem1 and elem2 are NOT
+ * similar), whereas the X of other eo only contains elem1. These test methods
+ * make sure that array-valued attributes are compared accordingly.
+ *
- testXNullCheck: Same as testX, where eo1's X attribute is set and
+ * eo2's X attribute is not. These test methods ensure that no exceptions are
+ * thrown while performing similarity checking on EObject instances that are not
+ * initialised properly.
+ *
+ * Note that multiple similarity checks are performed in each test, in order
+ * to ensure that similarity checking is symmetric and that similarity checking
+ * yields the same result, if the EObject instances are cloned. Refer to the
+ * documentation of the similarity checking methods concrete test methods use
+ * for more information.
+ */
+package cipm.consistency.fitests.similarity.jamopp.unittests;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java
new file mode 100644
index 0000000000..a00994bc76
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java
@@ -0,0 +1,129 @@
+package cipm.consistency.fitests.similarity.jamopp.utiltests;
+
+import java.io.File;
+import java.nio.file.Paths;
+import java.util.Collection;
+import java.util.List;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest;
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.jamopp.IJaMoPPUtilityTest;
+
+/**
+ * A test class, whose tests can be used to make sure no initialiser interfaces,
+ * concrete initialisers or initialiser tests are missing.
+ *
+ * @author Alp Torac Genc
+ */
+public class UtilityTests extends AbstractJaMoPPSimilarityTest implements IJaMoPPUtilityTest {
+ /**
+ * Points at the parent package. Used by discovering methods in this class.
+ */
+ private static final File root = new File(Paths
+ .get(new File("").toPath().toString(), "src", UtilityTests.class.getPackageName()
+ .substring(0, UtilityTests.class.getPackageName().lastIndexOf(".")).replace(".", File.separator))
+ .toAbsolutePath().toUri());
+
+ /**
+ * The suffix used in tests.
+ */
+ private static final String testSuffix = "Test";
+
+ /**
+ * @return The name of the test corresponding to cls.
+ */
+ public String getTestName(Class> cls) {
+ return cls.getSimpleName() + testSuffix;
+ }
+
+ /**
+ * @return A list of all files under {@link #root}.
+ */
+ public Collection getAllFiles() {
+ return this.getAllFiles(root);
+ }
+
+ /**
+ * Checks if all necessary concrete initialisers can be accessed under the used
+ * initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser types. The missing
+ * types can be found in the assertion message.
+ */
+ @Test
+ public void testAllConcreteInitialisersRegistered() {
+ var clss = this.getAllConcreteInitialiserCandidates();
+ var registeredInits = this.getUsedInitialiserPackage().getAllInitialiserInstances();
+
+ var matches = List.of(
+ clss.stream().filter((cls) -> registeredInits.stream().anyMatch((init) -> init.isInitialiserFor(cls)))
+ .toArray(Class>[]::new));
+
+ this.getLogger().info(matches.size() + " out of " + clss.size() + " concrete initialisers are registered");
+
+ if (matches.size() != clss.size()) {
+ Assertions.fail("Concrete initialisers not registered: "
+ + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls))));
+ }
+ }
+
+ /**
+ * Checks if all necessary initialiser interface types can be accessed under the
+ * used initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser interface types. The
+ * missing types can be found in the assertion message.
+ */
+ @Test
+ public void testAllInitialiserInterfacesRegistered() {
+ var clss = this.getAllInitialiserCandidates();
+ var registeredInits = this.getUsedInitialiserPackage().getAllInitialiserInterfaceTypes();
+
+ var matches = List.of(clss.stream()
+ .filter((cls) -> registeredInits.stream()
+ .anyMatch((init) -> this.getInitialiserInterfaceName(cls).equals(init.getSimpleName())))
+ .toArray(Class>[]::new));
+
+ this.getLogger().info(matches.size() + " out of " + clss.size() + " initialiser interfaces are registered");
+
+ if (matches.size() != clss.size()) {
+ Assertions.fail("Initialiser interfaces not registered: "
+ + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls))));
+ }
+ }
+
+ /**
+ * Checks if all classes in the need of an initialiser, which have their own
+ * methods that modify them (the methods they do not get from inheritance), have
+ * their corresponding test file.
+ *
+ * In short, checks if all necessary initialiser test files are present.
+ *
+ * Prints the number of required test files that are actually present.
+ * Information on the missing test files can be found in the assertion message.
+ *
+ *
+ * Only checks whether there are corresponding test files. Does not check
+ * the unit tests they implement.
+ */
+ @Test
+ public void testAllInterfaceTestsPresent() {
+ var intfcs = this.getAllInitialiserCandidates();
+ var allFiles = this.getAllFiles();
+
+ var matches = List.of(intfcs.stream()
+ .filter((c) -> !IInitialiser.declaresModificationMethods(this.getInitialiserInterfaceFor(c))
+ || allFiles.stream().anyMatch((tf) -> fileNameEquals(tf, getTestName(c))))
+ .toArray(Class>[]::new));
+
+ this.getLogger().info(matches.size() + " out of " + intfcs.size() + " interfaces are covered by tests");
+
+ if (matches.size() != intfcs.size()) {
+ Assertions.fail("Tests missing for: "
+ + this.clsStreamToString(intfcs.stream().filter((e) -> !matches.contains(e))));
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java
new file mode 100644
index 0000000000..7f61f646ce
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains "meta-tests" that check whether other tests are setup properly,
+ * rather than testing similarity checking.
+ */
+package cipm.consistency.fitests.similarity.jamopp.utiltests;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java
new file mode 100644
index 0000000000..f01efa969d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java
@@ -0,0 +1,11 @@
+/**
+ * This package contains classes and interfaces that can be used to test
+ * similarity checking, regardless of which objects are compared during
+ * similarity checking.
+ *
+ * Sub-packages contain tests and utility classes that test similarity checking.
+ * They are named and structured to minimise dependencies concerning the context
+ * of similarity checking (such as {@link EObject} or JaMoPP). This way,
+ * re-using the contents of sub-packages is easier.
+ */
+package cipm.consistency.fitests.similarity;
\ No newline at end of file
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java
new file mode 100644
index 0000000000..a1ce7a9069
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java
@@ -0,0 +1,233 @@
+package cipm.consistency.fitests.similarity.params;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * An abstract class for classes to implement, which uses a {@link Map} to store
+ * mappings of (class object, attribute object) pairs to their expected
+ * similarity checking results. An attribute object denotes an attribute within
+ * a class (i.e. it serves as the identifier of the attribute), rather than the
+ * value of an attribute.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information
+ * on adding entries.
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking results.
+ *
+ * @author Alp Torac Genc
+ */
+public abstract class AbstractSimilarityValues implements ISimilarityValues {
+ /**
+ * The expected similarity checking result for cases, where there is no matching
+ * {@link SimilarityEntry} in this instance.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)}
+ */
+ private Boolean defaultSimResult = null;
+ /**
+ * Maps {@link SimilarityEntry} to their expected similarity checking result.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)}
+ */
+ private Map similarityValues;
+
+ /**
+ * Constructs an instance and initialises the internal data structure that
+ * stores expected similarity checking results.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information
+ * on adding entries.
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking results.
+ */
+ public AbstractSimilarityValues() {
+ this.similarityValues = this.initSimilarityValues();
+ }
+
+ /**
+ * @return Creates a {@link SimilarityEntry} with the given parameters.
+ */
+ protected SimilarityEntry createEntry(Class extends Object> objCls, Object attr) {
+ return new SimilarityEntry(objCls, attr);
+ }
+
+ /**
+ * First, tries to find a direct match for the given parameters (see
+ * {@link #findDirectEntry(Class, Object)}). If there is no direct match, it
+ * relaxes objCls to super types of objCls and tries to find a match again (see
+ * {@link #findParentEntry(Class, Object)}).
+ *
+ * @param objCls The interface of the Object instance
+ * @param An attribute of the Object instance, which is the subject of the
+ * current similarity check
+ * @return The corresponding {@link SimilarityEntry}
+ */
+ protected SimilarityEntry findEntry(Class extends Object> objCls, Object attr) {
+ var directMatch = this.findDirectEntry(objCls, attr);
+
+ return directMatch != null ? directMatch : this.findParentEntry(objCls, attr);
+ }
+
+ /**
+ * Tries to find a directly matching entry (i.e. an entry with objCls-attr
+ * pair). Ignores entries belonging to super-types of objCls.
+ *
+ * @param objCls The interface of the Object instance
+ * @param attr An attribute of the Object instance, which is the subject of
+ * the current similarity check
+ * @return The corresponding {@link SimilarityEntry}
+ */
+ protected SimilarityEntry findDirectEntry(Class extends Object> objCls, Object attr) {
+ return this.similarityValues.keySet().stream()
+ .filter((se) -> se.getObjectClass().equals(objCls) && se.getAttribute().equals(attr)).findFirst()
+ .orElse(null);
+ }
+
+ /**
+ * Tries to find an entry with a super-type of objCls using a depth-first
+ * recursion in the type hierarchy of objCls towards Object. If there is a
+ * direct entry (see {@link #findDirectEntry(Class, Object)}), returns it.
+ *
+ *
+ * @param objCls The interface of the Object instance
+ * @param attr An attribute of the Object instance, which is the subject of
+ * the current similarity check
+ * @return A corresponding {@link SimilarityEntry}
+ */
+ protected SimilarityEntry findParentEntry(Class extends Object> objCls, Object attr) {
+ var parents = objCls.getInterfaces();
+ SimilarityEntry result = null;
+
+ for (var p : parents) {
+ result = this.findDirectEntry(p, attr);
+ if (result != null)
+ return result;
+
+ result = this.findParentEntry(p, attr);
+ if (result != null)
+ return result;
+ }
+
+ return result;
+ }
+
+ /**
+ * @return The map that will be used by this instance to store mappings of
+ * (object class, attribute object) pairs to their expected similarity
+ * value.
+ */
+ protected Map initSimilarityValues() {
+ return new HashMap();
+ }
+
+ /**
+ * Adds the given {@link SimilarityEntry} along with its expected similarity
+ * result to this instance.
+ */
+ protected void addEntry(SimilarityEntry se, Boolean expectedSimResult) {
+ this.similarityValues.put(se, expectedSimResult);
+ }
+
+ @Override
+ public void addSimilarityEntry(Class extends Object> objCls, Object attr, Boolean expectedSimResult) {
+ this.addEntry(this.createEntry(objCls, attr), expectedSimResult);
+ }
+
+ @Override
+ public void removeSimilarityEntry(Class extends Object> objCls, Object attr) {
+ var se = this.findEntry(objCls, attr);
+
+ if (se != null)
+ this.similarityValues.remove(se);
+ }
+
+ @Override
+ public Boolean getExpectedSimilarityResult(Class extends Object> objCls, Object attr) {
+ var se = this.findEntry(objCls, attr);
+
+ return se == null ? this.getDefaultSimilarityResult() : this.similarityValues.get(se);
+ }
+
+ @Override
+ public void clear() {
+ this.similarityValues.clear();
+ }
+
+ @Override
+ public void setDefaultSimilarityResult(Boolean defSimRes) {
+ this.defaultSimResult = defSimRes;
+ }
+
+ @Override
+ public Boolean getDefaultSimilarityResult() {
+ return this.defaultSimResult;
+ }
+
+ /**
+ * Contains a class object and an attribute object of that class. An attribute
+ * object denotes an attribute within a class (i.e. it serves as the identifier
+ * of the attribute), rather than the value of an attribute.
+ *
+ * @author Alp Torac Genc
+ */
+ protected class SimilarityEntry {
+ /**
+ * The class object.
+ */
+ private final Class extends Object> objCls;
+ /**
+ * An attribute object of {@link #objCls}.
+ */
+ private final Object attr;
+
+ /**
+ * @param objCls A class object
+ * @param attr An attribute object of {@link #objCls}
+ */
+ private SimilarityEntry(Class extends Object> objCls, Object attr) {
+ this.objCls = objCls;
+ this.attr = attr;
+ }
+
+ /**
+ * @return The class object stored in this instance.
+ */
+ public Class extends Object> getObjectClass() {
+ return this.objCls;
+ }
+
+ /**
+ * @return The attribute stored in this entry.
+ */
+ public Object getAttribute() {
+ return this.attr;
+ }
+
+ /**
+ * Compares two {@link SimilarityEntry} instances based on what they store.
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+
+ if (obj == null || !(obj instanceof SimilarityEntry))
+ return false;
+
+ var castedO = (SimilarityEntry) obj;
+
+ if (this.attr == null ^ castedO.attr == null)
+ return false;
+
+ if (this.objCls == null ^ castedO.objCls == null)
+ return false;
+
+ // Covers both members being null
+ if (this.attr == castedO.attr && this.objCls == castedO.objCls)
+ return true;
+
+ return this.attr.equals(castedO.attr) && this.objCls.equals(castedO.objCls);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java
new file mode 100644
index 0000000000..edd3fbc23d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java
@@ -0,0 +1,51 @@
+package cipm.consistency.fitests.similarity.params;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserBase;
+
+/**
+ * An interface for classes that encapsulate the logic to adapt
+ * {@link IInitialiserBase} parameters for tests, so that the object instances
+ * they create conform certain requirements.
+ *
+ * Contains the means to adapt collections of {@link IInitialiser} instances and
+ * making necessary adaptations for convenience.
+ *
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+public interface IInitialiserParameterAdaptationStrategy {
+ /**
+ * Adapts the given {@link IInitialiser} instances, if they can be adapted.
+ *
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ public default void adaptInitialisers(Collection extends IInitialiser> inits) {
+ inits.forEach((i) -> this.adaptInitialiser(i));
+ }
+
+ /**
+ * Adapts the given {@link IInitialiserBase} instances.
+ *
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ public default void adaptAdaptableInitialisers(Collection extends IInitialiserBase> inits) {
+ inits.forEach((i) -> this.adaptAdaptableInitialiser(i));
+ }
+
+ /**
+ * A variant of {@link #adaptAdaptableInitialiser(IInitialiserBase)} that adapts
+ * the given {@link IInitialiser} init, if init implements
+ * {@link IInitialiserBase}.
+ */
+ public default void adaptInitialiser(IInitialiser init) {
+ if (init instanceof IInitialiserBase)
+ this.adaptAdaptableInitialiser((IInitialiserBase) init);
+ }
+
+ /**
+ * Adapts the given {@link IInitialiserBase} instance.
+ */
+ public void adaptAdaptableInitialiser(IInitialiserBase init);
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java
new file mode 100644
index 0000000000..7dbc0db60f
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java
@@ -0,0 +1,179 @@
+package cipm.consistency.fitests.similarity.params;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.function.Predicate;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserBase;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+/**
+ * An interface meant for classes that generate {@link IInitialiser} instances
+ * for tests.
+ *
+ * Implementors of this interface can be used to supply parameterised tests with
+ * {@link IInitialiser} instances.
+ */
+public interface IInitialiserParameters {
+ /**
+ * @return The {@link IInitialiserPackage} that will be used to generate
+ * initialiser parameters for tests.
+ */
+ public IInitialiserPackage getUsedInitialiserPackage();
+
+ /**
+ * @return An instance of all {@link IInitialiser}s this encompasses. The
+ * returned {@link IInitialiser}s are not adapted.
+ */
+ public default Collection getAllNonAdaptedInitialisers() {
+ return this.getUsedInitialiserPackage().getAllInitialiserInstances();
+ }
+
+ /**
+ * @return An adapted instance of all adaptable initialisers this encompasses.
+ * Adaptation logic returned by {@link #getAdaptationStrategy()} is used
+ * to adapt the generated initialiser instances. Only returns
+ * initialisers that are adapted.
+ */
+ public default Collection getAllAdaptedInitialisers() {
+ var result = new ArrayList();
+ var inits = this.getEachInitialiserOnce();
+
+ inits.forEach((init) -> {
+ if (init instanceof IInitialiserBase && ((IInitialiserBase) init).isAdapted())
+ result.add((IInitialiserBase) init);
+ });
+
+ return result;
+ }
+
+ /**
+ * Shortcut for {@link #getAllNonAdaptedInitialisers()} and
+ * {@link #getAllAdaptedInitialisers()}.
+ *
+ * Note: If a certain initialiser type is adaptable, returns one non-adapted
+ * and one adapted instance.
+ *
+ * @see {@link #getEachInitialiserOnce()}
+ */
+ public default Collection getAllInitialisers() {
+ var result = new ArrayList();
+ result.addAll(this.getAllNonAdaptedInitialisers());
+ result.addAll(this.getAllAdaptedInitialisers());
+ return result;
+ }
+
+ /**
+ * @return The {@link IInitialiserParameterAdaptationStrategy} responsible for
+ * adapting the generated initialisers for
+ * {@link #getAdaptedInitialisersBySuper(Class)}.
+ */
+ public IInitialiserParameterAdaptationStrategy getAdaptationStrategy();
+
+ /**
+ * @return All {@link IInitialiser} instances generated by
+ * {@link #getAllNonAdaptedInitialisers()} that fulfil the given
+ * predicate.
+ */
+ public default Collection getNonAdaptedInitialisersBy(Predicate pred) {
+ var result = new ArrayList();
+ this.getAllNonAdaptedInitialisers().stream().filter(pred).forEach((i) -> result.add(i));
+ return result;
+ }
+
+ /**
+ * @return All {@link IInitialiser} instances generated by
+ * {@link #getAllAdaptedInitialisers()} that fulfil the given predicate.
+ */
+ public default Collection getAdaptedInitialisersBy(Predicate pred) {
+ var result = new ArrayList();
+ this.getAllAdaptedInitialisers().stream().filter(pred).forEach((i) -> result.add(i));
+ return result;
+ }
+
+ /**
+ * @return All {@link IInitialiser} instances generated by
+ * {@link #getAllInitialisers()} that fulfil the given predicate.
+ */
+ public default Collection getAllInitialisersBy(Predicate pred) {
+ var result = new ArrayList();
+ this.getAllInitialisers().stream().filter(pred).forEach((i) -> result.add(i));
+ return result;
+ }
+
+ /**
+ * @return All {@link IInitialiser} instances generated by
+ * {@link #getAllNonAdaptedInitialisers()} that extend the given class
+ * T.
+ */
+ @SuppressWarnings("unchecked")
+ public default Collection getNonAdaptedInitialisersBySuper(Class cls) {
+ return (Collection) this.getNonAdaptedInitialisersBy((i) -> cls.isInstance(i));
+ }
+
+ /**
+ * @return Adapted versions of all {@link IInitialiser} instances generated by
+ * {@link #getAllAdaptedInitialisers()} that extend the given class T.
+ */
+ @SuppressWarnings("unchecked")
+ public default Collection getAdaptedInitialisersBySuper(Class cls) {
+ return (Collection) this.getAdaptedInitialisersBy((i) -> cls.isInstance(i));
+ }
+
+ /**
+ * @return All {@link IInitialiser} instances generated by
+ * {@link #getAllInitialisers()} that extend the given class.
+ *
+ * @see {@link #getEachInitialiserOnceBySuper(Class)}
+ */
+ @SuppressWarnings("unchecked")
+ public default Collection getAllInitialisersBySuper(Class cls) {
+ return (Collection) this.getAllInitialisersBy((i) -> cls.isInstance(i));
+ }
+
+ /**
+ * @return An instance of each {@link IInitialiser} from
+ * {@link #getAllNonAdaptedInitialisers()}. Use this method, if only one
+ * instance init of each initialiser is desired. If
+ * {@link #getAdaptationStrategy()} can adapt init, it will do so.
+ *
+ * @see {@link #getAllInitialisers()}
+ */
+ public default Collection getEachInitialiserOnce() {
+ var result = this.getAllNonAdaptedInitialisers();
+ this.adaptInitialisers(result);
+ return result;
+ }
+
+ /**
+ * @return An instance of each {@link IInitialiser} from
+ * {@link #getEachInitialiserOnce()}. Use this method, if only one
+ * instance init of each initialiser is desired. If
+ * {@link #getAdaptationStrategy()} can adapt init, it will do so.
+ *
+ * @see {@link #getAllInitialisersBySuper(Class)}
+ */
+ @SuppressWarnings("unchecked")
+ public default Collection getEachInitialiserOnceBySuper(Class cls) {
+ var result = new ArrayList();
+ this.getEachInitialiserOnce().stream().filter((init) -> cls.isInstance(init))
+ .forEach((init) -> result.add((T) init));
+
+ return result;
+ }
+
+ /**
+ * Applies the adaptation logic encapsulated by
+ * {@link IInitialiserParameterAdaptationStrategy} returned by
+ * {@link #getAdaptationStrategy()}. Non-adaptable initialisers will be
+ * unaffected.
+ */
+ public default void adaptInitialisers(Collection inits) {
+ var strat = this.getAdaptationStrategy();
+
+ if (strat != null) {
+ strat.adaptInitialisers(inits);
+ }
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java
new file mode 100644
index 0000000000..227a8b1f37
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java
@@ -0,0 +1,169 @@
+package cipm.consistency.fitests.similarity.params;
+
+/**
+ * An interface for classes that contain expected similarity checking results
+ * for (class object, attribute object) pairs. An attribute object denotes an
+ * attribute within a class, rather than the value of an attribute.
+ *
+ * Variations of {@link #addSimilarityEntry(Class, Object, Boolean)} can be used
+ * to group entries better, while adding them.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information
+ * on adding entries.
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking values.
+ *
+ * @author Alp Torac Genc
+ */
+public interface ISimilarityValues {
+ /**
+ * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)}, where
+ * objCls is extracted from attr.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking result.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)}
+ */
+ public void addSimilarityEntry(Object attr, Boolean expectedSimResult);
+
+ /**
+ * Adds the (objCls, attr) pair, along with their expected similarity checking
+ * value to this instance.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking result and which entry is chosen, if
+ * entries for super/sub-types of objCls exist.
+ *
+ * @see {@link #addSimilarityEntry(Class[], Object, Boolean)}
+ * @see {@link #addSimilarityEntry(Class[], Object[], Boolean[])}
+ */
+ public void addSimilarityEntry(Class extends Object> objCls, Object attr, Boolean expectedSimResult);
+
+ /**
+ * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)} for an array
+ * of class objects.
+ *
+ * Let
+ * {@code objClsArr = [cls1, cls2, ..., clsN], attr = a1, expectedSimResults = true}.
+ * Then this method is equivalent to:
+ *
+ * - addSimilarityEntry(cls1, a1, true)
+ *
- addSimilarityEntry(cls2, a1, true)
+ *
- ...
+ *
- addSimilarityEntry(clsN, a1, true)
+ *
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking result.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)}
+ * @see {@link #addSimilarityEntry(Class[], Object[], Boolean[])}
+ */
+ public default void addSimilarityEntry(Class>[] objClsArr, Object attr, Boolean expectedSimResult) {
+ if (objClsArr != null) {
+ for (var cls : objClsArr) {
+ this.addSimilarityEntry(cls, attr, expectedSimResult);
+ }
+ }
+ }
+
+ /**
+ * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)}.
+ *
+ * Combines objClsArr with (attrArr[i], expectedSimResults[i]) for all i:
+ *
+ * Let
+ * {@code objClsArr = [cls1, cls2, cls3], attrArr = [a1, a2], expectedSimResults = [true, false]}.
+ * Then this method is equivalent to:
+ *
+ * - addSimilarityEntry(objClsArr, a1, true)
+ *
- addSimilarityEntry(objClsArr, a2, false)
+ *
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking result.
+ *
+ * @see {@link #addSimilarityEntry(Class[], Object, Boolean)}
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)}
+ */
+ public default void addSimilarityEntry(Class>[] objClsArr, Object[] attrArr, Boolean[] expectedSimResults) {
+ if (attrArr == null || expectedSimResults == null || objClsArr == null) {
+ return;
+ }
+
+ if (attrArr.length != expectedSimResults.length) {
+ return;
+ }
+
+ for (int i = 0; i < attrArr.length; i++) {
+ var attr = attrArr[i];
+ var simRes = expectedSimResults[i];
+ this.addSimilarityEntry(objClsArr, attr, simRes);
+ }
+ }
+
+ /**
+ * Removes the (objCls, attr) pair from this instance.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information
+ * on expected similarity checking result.
+ *
+ * @see {@link #addSimilarityEntry(Class, Object, Boolean)}
+ */
+ public void removeSimilarityEntry(Class extends Object> objCls, Object attr);
+
+ /**
+ * Clears all entries stored in this instance.
+ *
+ * Resets this instance.
+ */
+ public void clear();
+
+ /**
+ * Returns the expected result of similarity checking 2 object instances of the
+ * class objCls, where both are the same, except for their attribute attr.
+ *
+ * @return Let a and b be object instances of the same class, which are the
+ * same, except for their attr attribute, then:
+ *
+ * - True: Similarity checking a and b yields true, despite them being
+ * different regarding attr.
+ *
- False: Similarity checking a and b yields false, as they have
+ * different attr.
+ *
- Null: The result of similarity checking a and b is not defined,
+ * i.e. differences in attr play no decisive role.
+ *
+ * Note: If this instance does not have the entry for (objCls, attr), it
+ * checks whether there is an entry for a parent class parObjCls (of
+ * objCls) and attr (parObjCls, attr). If there is one such entry, the
+ * expected result of similarity checking for (parObjCls, attr) is
+ * returned. If there are still no matching entries,
+ * {@link #getDefaultSimilarityResult()} is returned.
+ */
+ public Boolean getExpectedSimilarityResult(Class extends Object> objCls, Object attr);
+
+ /**
+ * A variant of {@link #getExpectedSimilarityResult(Class, Object)} that
+ * extracts objCls from attr.
+ *
+ * @see {@link #getExpectedSimilarityResult(Class, Object)}
+ */
+ public Boolean getExpectedSimilarityResult(Object attr);
+
+ /**
+ * Sets the default return value for
+ * {@link #getExpectedSimilarityResult(Class, Object)}, in cases where no
+ * entries for a given (objCls, attr) pair is found.
+ *
+ * @param defSimRes The default return value for
+ * {@link #getExpectedSimilarityResult(Class, Object)}
+ */
+ public void setDefaultSimilarityResult(Boolean defSimRes);
+
+ /**
+ * @return The default return value for
+ * {@link #getExpectedSimilarityResult(Class, Object)}
+ */
+ public Boolean getDefaultSimilarityResult();
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java
new file mode 100644
index 0000000000..17b009a49d
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java
@@ -0,0 +1,108 @@
+package cipm.consistency.fitests.similarity.params;
+
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+/**
+ * A singleton class that provides central access to
+ * {@link IInitialiserParameters} and {@link ISimilarityValues} instance
+ * required by tests.
+ *
+ * @author Alp Torac Genc
+ */
+public class InitialiserTestSettingsProvider {
+ /**
+ * The only instance of this class.
+ */
+ private static InitialiserTestSettingsProvider instance;
+
+ /**
+ * An {@link IInitialiserParameters} instance, which has the means to supply
+ * parameterised tests with initialiser instances.
+ */
+ private IInitialiserParameters params;
+
+ /**
+ * An {@link ISimilarityValues} instance, which contains expected similarity
+ * values required by similarity checking tests.
+ */
+ private ISimilarityValues simVals;
+
+ private InitialiserTestSettingsProvider() {
+ };
+
+ /**
+ * Creates an instance of this class, if there is none.
+ */
+ public static void initialise() {
+ if (instance == null)
+ instance = new InitialiserTestSettingsProvider();
+ }
+
+ /**
+ * @return The only instance of this class. If there is no such instance,
+ * creates an instance first. That will be the only instance of this
+ * class.
+ */
+ public static InitialiserTestSettingsProvider getInstance() {
+ initialise();
+ return instance;
+ }
+
+ /**
+ * @return An {@link ISimilarityValues} instance, which contains expected
+ * similarity values required by similarity checking tests.
+ */
+ public ISimilarityValues getSimilarityValues() {
+ return this.simVals;
+ }
+
+ /**
+ * @param similarityValues Sets the {@link ISimilarityValues} instance, which
+ * contains expected similarity values required by
+ * similarity checking tests.
+ */
+ public void setSimilarityValues(ISimilarityValues similarityValues) {
+ this.simVals = similarityValues;
+ }
+
+ /**
+ * @return An {@link IInitialiserParameters} instance, which has the means to
+ * supply parameterised tests with initialiser instances.
+ */
+ public IInitialiserParameters getParameters() {
+ return this.params;
+ }
+
+ /**
+ * Sets the {@link IInitialiserParameters} instance, which has the means to
+ * supply parameterised tests with initialiser instances.
+ */
+ public void setParameters(IInitialiserParameters prms) {
+ this.params = prms;
+ }
+
+ /**
+ * Change the stored {@link IInitialiserParameters} instance to change the
+ * return value.
+ *
+ * @return The {@link IInitialiserPackage} used in the stored
+ * {@link IInitialiserParameters}
+ */
+ public IInitialiserPackage getUsedInitialiserPackage() {
+ var params = this.getParameters();
+
+ if (params != null) {
+ return params.getUsedInitialiserPackage();
+ }
+
+ return null;
+ }
+
+ /**
+ * Sets everything provided by this class, except its only instance, to null.
+ */
+ public void reset() {
+ this.params = null;
+ this.simVals = null;
+ }
+}
diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java
new file mode 100644
index 0000000000..8cac95229a
--- /dev/null
+++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java
@@ -0,0 +1,14 @@
+/**
+ * Contains various utility classes/interfaces that can be used in tests that
+ * use initialisers. This includes elements that provide access to and adapt
+ * initialiser instances
+ * ({@link cipm.consistency.fitests.similarity.params.IInitialiserParameters})
+ * and elements that help bundle test results
+ * ({@link cipm.consistency.fitests.similarity.params.ISimilarityValues}).
+ *
+ *
+ * The singleton
+ * {@link cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider}
+ * can be used to configure the elements mentioned above for all tests.
+ */
+package cipm.consistency.fitests.similarity.params;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath
new file mode 100644
index 0000000000..e801ebfb46
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project
new file mode 100644
index 0000000000..7bd4543292
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project
@@ -0,0 +1,28 @@
+
+
+ cipm.consistency.initialisers
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..c9545f06a4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF b/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..3645675d6f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF
@@ -0,0 +1,36 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: cipm.consistency.initialisers
+Bundle-SymbolicName: cipm.consistency.initialisers
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: cipm.consistency.initialisers
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: junit-jupiter-api,
+ junit-jupiter-engine,
+ junit-jupiter-params,
+ org.apache.log4j,
+ org.eclipse.emf.ecore,
+ org.emftext.language.java
+Export-Package: cipm.consistency.initialisers,
+ cipm.consistency.initialisers.eobject,
+ cipm.consistency.initialisers.jamopp,
+ cipm.consistency.initialisers.jamopp.annotations,
+ cipm.consistency.initialisers.jamopp.arrays,
+ cipm.consistency.initialisers.jamopp.classifiers,
+ cipm.consistency.initialisers.jamopp.commons,
+ cipm.consistency.initialisers.jamopp.containers,
+ cipm.consistency.initialisers.jamopp.expressions,
+ cipm.consistency.initialisers.jamopp.generics,
+ cipm.consistency.initialisers.jamopp.imports,
+ cipm.consistency.initialisers.jamopp.initadapters,
+ cipm.consistency.initialisers.jamopp.instantiations,
+ cipm.consistency.initialisers.jamopp.literals,
+ cipm.consistency.initialisers.jamopp.members,
+ cipm.consistency.initialisers.jamopp.modifiers,
+ cipm.consistency.initialisers.jamopp.modules,
+ cipm.consistency.initialisers.jamopp.operators,
+ cipm.consistency.initialisers.jamopp.parameters,
+ cipm.consistency.initialisers.jamopp.references,
+ cipm.consistency.initialisers.jamopp.statements,
+ cipm.consistency.initialisers.jamopp.types,
+ cipm.consistency.initialisers.jamopp.variables
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties b/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties
new file mode 100644
index 0000000000..34d2e4d2da
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java
new file mode 100644
index 0000000000..c631057bc5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java
@@ -0,0 +1,69 @@
+package cipm.consistency.initialisers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * An abstract class for {@link IInitialiserBase} implementors, which extends
+ * them with infrastructure and concrete methods for
+ * {@link IInitialiserAdapterStrategy}.
+ *
+ * @author Alp Torac Genc
+ */
+public abstract class AbstractInitialiserBase implements IInitialiserBase {
+ /**
+ * Stores the added {@link IInitialiserAdapterStrategy} instances.
+ */
+ private Collection adaptingStrats;
+
+ /**
+ * A variant of {@link #AbstractInitialiserBase(IInitialiserAdapterStrategy[])}
+ * that takes no {@link IInitialiserAdapterStrategy} instances.
+ */
+ public AbstractInitialiserBase() {
+ this(null);
+ }
+
+ /**
+ * Constructs an instance, which is adapted by the passed
+ * {@link IInitialiserAdapterStrategy} array.
+ */
+ public AbstractInitialiserBase(IInitialiserAdapterStrategy[] adaptingStrats) {
+ this.adaptingStrats = this.createAdaptingStrategyCol();
+ this.addAdaptingStrategies(adaptingStrats);
+ }
+
+ /**
+ * @return A collection to store the added {@link IInitialiserAdapterStrategy}
+ * instances. Only creates and returns a collection instance, it still
+ * has to be assigned to relevant attributes and undergo additional
+ * setup steps (if any).
+ */
+ protected Collection createAdaptingStrategyCol() {
+ return new ArrayList();
+ }
+
+ @Override
+ public void addAdaptingStrategy(IInitialiserAdapterStrategy strat) {
+ if (strat != null)
+ this.adaptingStrats.add(strat);
+ }
+
+ @Override
+ public void removeAdaptingStrategy(IInitialiserAdapterStrategy strat) {
+ if (strat != null)
+ this.adaptingStrats.remove(strat);
+ }
+
+ @Override
+ public void cleanAdaptingStrategy() {
+ this.adaptingStrats.clear();
+ }
+
+ @Override
+ public Collection getAdaptingStrategies() {
+ var res = this.createAdaptingStrategyCol();
+ res.addAll(this.adaptingStrats);
+ return res;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java
new file mode 100644
index 0000000000..b038a1ea01
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java
@@ -0,0 +1,282 @@
+package cipm.consistency.initialisers;
+
+import java.util.function.BiFunction;
+
+/**
+ * An interface to be implemented by initialisers. Initialisers are interfaces
+ * or classes, which are meant to instantiate objects (designated objects) via
+ * {@link #instantiate()}. For intuition, their names can be used to denote what
+ * they instantiate.
+ *
+ * Initialisers can also implement (default) methods that modify their
+ * designated objects. It is suggested to have such modification methods return
+ * something that indicates whether they ran as expected. In general,
+ * modification methods DO NOT check, if the object that is being modified
+ * (modification target) is null. Attempting to use null as modification target
+ * will result in EXCEPTIONS. The reason behind this is the importance of
+ * knowing if the modification target is null, as this could hint towards faulty
+ * code.
+ *
+ * addSomething(...) methods have null checks for the passed parameters other
+ * than the modification target (i.e. modification parameters), which are used
+ * to perform modifications. By default, it is assumed that no null elements can
+ * be added to modification targets via addSomething(...). If modification
+ * parameters are null, no modification will be performed and the method will be
+ * assumed to have run as expected, since no modification was performed and
+ * failed. setSomething(...) methods, on the other hand, allow setting
+ * attributes of the modification target to null.
+ *
+ * It is recommended to separate instantiation and initialisation (modification)
+ * methods, as doing so will allow using the individual methods in sub-types.
+ * Implementing initialisers similar to their designated objects, in terms of
+ * type hierarchy and what modifications they allow from outside, may make
+ * initialisers more flexible and ease implementing them.
+ *
+ * A further suggestion is to not declare attributes in the concrete
+ * implementors, so that all functionality is present in form of methods. This
+ * alleviates having to declare unnecessary attributes in sub-types and makes
+ * overriding behaviour easier, since default methods can be overridden in
+ * interfaces. If initialisation of the designated objects is complex, consider
+ * realising it in form of initialiser adaptation strategies (see the links
+ * below). Note that calling {@link #initialise(Object)} in addition to
+ * {@link #instantiate()} is necessary for the said initialiser strategies to be
+ * used.
+ *
+ * This interface also contains some static utility methods.
+ *
+ * @author Alp Torac Genc
+ * @see {@link IInitialiserBase}
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+public interface IInitialiser {
+ /**
+ * Can be used to create a copy of this.
+ *
+ * Note that the returned initialiser will not have the initialiser
+ * adaptation strategies this initialiser has.
+ *
+ * @return A fresh instance of this initialiser's class.
+ *
+ * @see {@link IInitialiserBase}
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ public IInitialiser newInitialiser();
+
+ /**
+ * Attempts to instantiate the class this {@link IInitialiser} is designated
+ * for. Depending on the returned object, additional initialisation via
+ * {@link #initialise(Object)} may be necessary. Note that the said method must
+ * be called upon the return value, in order for the initialiser adaptation
+ * strategies to take effect.
+ *
+ * @see {@link IInitialiserBase}
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ public Object instantiate();
+
+ /**
+ * Attempts to initialise obj, so that it is "valid".
+ *
+ * It is recommended to only use this method where necessary, as it may
+ * introduce additional modifications that are not obvious from outside. The
+ * said modifications originate from initialiser adaptation strategies and they
+ * will not take effect, unless this method is called upon the object created
+ * via {@link #instantiate()}.
+ *
+ * @param obj The object that will be made valid
+ *
+ * @return Whether the initialisation of obj was successful.
+ *
+ * @see {@link IInitialiserBase}
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ public boolean initialise(Object obj);
+
+ /**
+ * Checks whether a given {@link IInitialiser} type directly declares any
+ * methods that modify given object instances. Returns false, if
+ * {@code initCls == null}.
+ */
+ public static boolean declaresModificationMethods(Class extends IInitialiser> initCls) {
+ if (initCls == null) {
+ return false;
+ }
+
+ var methods = initCls.getDeclaredMethods();
+
+ /*
+ * Instead of using a naming convention for modification methods, use the fact
+ * that modification methods take an object instance obj as a parameter, where
+ * initCls is capable of instantiating obj.
+ */
+ for (var met : methods) {
+
+ // A modification method must at least take obj as a parameter to modify it
+ if (met.getParameterCount() <= 0)
+ continue;
+
+ // One of the parameters has to have the exact type of obj
+ // initCls should thus be able to instantiate the type obj
+ for (var p : met.getParameters()) {
+ var pType = p.getType();
+ if (isInitialiserFor(initCls, pType)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * A variant of {@link #declaresModificationMethods(Class)} for
+ * {@link IInitialiser} instances.
+ *
+ * Uses the type of the given parameter init.
+ */
+ public static boolean declaresModificationMethods(IInitialiser init) {
+ return init != null && declaresModificationMethods(init.getClass());
+ }
+
+ /**
+ * An initialiser class is assumed to be able to instantiate the class objClass,
+ * if it has a method (instantiation method), whose return type is objClass and
+ * which has no parameters. Methods inherited by initCls will also be
+ * inspected.
+ *
+ * For the result to be true, initCls has to be able to instantiate
+ * exactly objClass, i.e. the return type of the instantiation
+ * method has to be exactly objClass.
+ *
+ * Methods that are generated internally by Java (synthetic methods and bridge
+ * methods) are excluded.
+ *
+ * @return True, if initCls is an initialiser type, which is meant to
+ * instantiate objects of class objClass (sub-types of objClass do not
+ * count).
+ */
+ public static boolean isInitialiserFor(Class extends IInitialiser> initCls, Class> objClass) {
+ if (initCls == null || objClass == null) {
+ return false;
+ }
+
+ /*
+ * Count inherited methods as well, in order to allow initialisers to be
+ * extended without having to explicitly declare/override their instantiation
+ * method.
+ */
+ var methods = initCls.getMethods();
+
+ for (var m : methods) {
+ /*
+ * Instead of using name checks or annotations, use the fact that the
+ * instantiation method should have the return type objClass and that it should
+ * take no parameters.
+ *
+ * Also, make sure that the inspected methods are not generated internally by
+ * Java.
+ */
+ if (!m.isBridge() && !m.isSynthetic() && m.getReturnType().equals(objClass)
+ && m.getParameters().length == 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns whether the given initialiser init instantiates objects of type
+ * objClass.
+ *
+ * For the result to be true, init has to be able to instantiate
+ * exactly objClass, i.e. the return type of the instantiation
+ * method has to be exactly objClass.
+ */
+ public static boolean isInitialiserFor(IInitialiser init, Class> objClass) {
+ return init != null && init.getInstanceClassOfInitialiser().equals(objClass);
+ }
+
+ /**
+ * Uses the return value of {@link #instantiate()} to determine the outcome.
+ * This method should not return null, as long as {@link #instantiate()} does
+ * not return null.
+ *
+ * @return The {@link Class} object of the type this initialiser instantiates,
+ * or null if {@link #instantiate()} returns null.
+ */
+ public default Class> getInstanceClassOfInitialiser() {
+ var obj = this.instantiate();
+ return obj != null ? obj.getClass() : null;
+ }
+
+ /**
+ * The dynamic variant of {@link #declaresModificationMethods(Class)}.
+ *
+ * Uses the class of this instance.
+ */
+ public default boolean declaresModificationMethods() {
+ return declaresModificationMethods(this.getClass());
+ }
+
+ /**
+ * The dynamic variant of {@link #isInitialiserFor(IInitialiser, Class)}.
+ *
+ * Uses this initialiser as the initialiser parameter.
+ */
+ public default boolean isInitialiserFor(Class> objClass) {
+ return objClass != null && isInitialiserFor(this, objClass);
+ }
+
+ /**
+ * A helper method for implementors, which provides them with a template for
+ * versions of their modification methods, which take arrays of parameters
+ * rather than singular ones, and perform multiple modifications. The purpose of
+ * this method is to help keep consistency across the said versions of the
+ * modification methods.
+ *
+ * If modificationFunction returns false for an element x of xs, the method
+ * will FAIL EARLY and return false. This means, modificationFunction WILL
+ * NOT be called for the remaining xs once it fails. Because of this, it is
+ * important to perform modifications one by one, if performing the said
+ * modifications is expected to fail for some x.
+ *
+ * This method is not intended to be used directly from outside.
+ *
+ * @param The type of the object being modified
+ * @param The parameter passed to the modification function
+ * (modificationFunction)
+ * @param obj The object being modified. {@code obj == null}
+ * will cause null pointer exceptions, if xs has at
+ * least one element.
+ * @param xs Array of parameters that will be passed to
+ * modificationFunction
+ * @param modificationFunction The modification function that will be run on
+ * obj, using xs as parameters (one
+ * modificationFunction call each x in xs)
+ *
+ * @return
+ *
+ * - True, if either:
+ *
+ * - xs is null (because no modifications were performed and nothing
+ * can fail)
+ *
- All modification method calls returned true (i.e. all
+ * modifications were successfully performed)
+ *
+ * - Otherwise false, i.e. if {@code xs != null} and a modification
+ * method call returned false.
+ *
+ */
+ public default boolean doMultipleModifications(T obj, X[] xs,
+ BiFunction modificationFunction) {
+ if (xs != null) {
+ for (var x : xs) {
+ if (!modificationFunction.apply(obj, x))
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java
new file mode 100644
index 0000000000..32df15d328
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java
@@ -0,0 +1,30 @@
+package cipm.consistency.initialisers;
+
+/**
+ * An interface for classes and interfaces to implement, which encapsulate
+ * initialisation logic for complex objects instantiated by
+ * {@link IInitialiserBase} implementors.
+ *
+ * Although it is ultimately {@link IInitialiser}'s responsibility to
+ * instantiate and initialise objects, this interface allows extracting parts of
+ * it, especially the parts that revolve around other {@link IInitialiser}s. By
+ * extracting that logic from {@link IInitialiser} implementors, dependencies to
+ * other {@link IInitialiser}s can be spared.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IInitialiserAdapterStrategy {
+ /**
+ * Applies the initialisation logic contained in this instance to the given
+ * object. Check the concrete class' documentation for more information, since
+ * the semantics of this method is tightly coupled with it.
+ *
+ * @return Whether this method did what it was supposed to do.
+ */
+ public boolean apply(IInitialiser init, Object obj);
+
+ /**
+ * @return Creates a deep clone of this instance.
+ */
+ public IInitialiserAdapterStrategy newStrategy();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java
new file mode 100644
index 0000000000..b821e99d7c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java
@@ -0,0 +1,103 @@
+package cipm.consistency.initialisers;
+
+import java.util.Collection;
+
+/**
+ * An interface meant to be implemented by {@link IInitialiser} implementors,
+ * which are supposed to be adaptable by {@link IInitialiserAdapterStrategy}
+ * instances.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IInitialiserBase extends IInitialiser {
+ /**
+ * Adds the given {@link IInitialiserAdapterStrategy} to this instance. Does not
+ * add, if {@code strat == null}.
+ */
+ public void addAdaptingStrategy(IInitialiserAdapterStrategy strat);
+
+ /**
+ * Removes the given {@link IInitialiserAdapterStrategy} from this instance.
+ * Does nothing, if {@code strat == null}.
+ */
+ public void removeAdaptingStrategy(IInitialiserAdapterStrategy strat);
+
+ /**
+ * Removes all stored {@link IInitialiserAdapterStrategy} instances from this.
+ */
+ public void cleanAdaptingStrategy();
+
+ /**
+ * @return All {@link IInitialiserAdapterStrategy} instances added to this.
+ * Returns an empty collection if there are none. Modifying the elements
+ * of the collection will modify the adaptation strategies adapting
+ * this. Modifying the returned collection itself will have no effect on
+ * this.
+ */
+ public Collection getAdaptingStrategies();
+
+ /**
+ * The variant of {@link #addAdaptingStrategy(IInitialiserAdapterStrategy)} for
+ * arrays. Does nothing if {@code strats == null}.
+ */
+ public default void addAdaptingStrategies(IInitialiserAdapterStrategy[] strats) {
+ if (strats != null) {
+ for (var i : strats) {
+ this.addAdaptingStrategy(i);
+ }
+ }
+ }
+
+ /**
+ * @return Number of {@link IInitialiserAdapterStrategy} instances that are
+ * currently adapting this.
+ */
+ public default int getAdaptingStrategyCount() {
+ return this.getAdaptingStrategies().size();
+ }
+
+ /**
+ * @return Whether any {@link IInitialiserAdapterStrategy} instances are
+ * currently adapting this.
+ */
+ public default boolean isAdapted() {
+ return !this.getAdaptingStrategies().isEmpty();
+ }
+
+ /**
+ * For the sake of clarity, only use this method, if adaptation strategies
+ * are meant to be used.
+ *
+ * {@inheritDoc}
+ *
+ * @return Whether all initialiser adaptation strategies in this were applied
+ * successfully. If there are no such strategies; returns true, since no
+ * strategy was attempted to be applied and failed.
+ *
+ * @see {@link IInitialiserAdapterStrategy}
+ */
+ @Override
+ public default boolean initialise(Object obj) {
+ boolean result = true;
+
+ for (var strat : this.getAdaptingStrategies()) {
+ result = result && strat.apply(this, obj);
+ }
+
+ return result;
+ }
+
+ /**
+ * @return A new instance of this {@link IInitialiserBase} along with clones of
+ * adaptation strategies currently adapting it.
+ */
+ public default IInitialiserBase newInitialiserWithStrategies() {
+ var newInit = (IInitialiserBase) this.newInitialiser();
+
+ // Create a new strategy for the new initialiser, so that neither the original
+ // strategy nor its copy are modified by the other one.
+ this.getAdaptingStrategies().forEach((s) -> newInit.addAdaptingStrategy(s.newStrategy()));
+
+ return newInit;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java
new file mode 100644
index 0000000000..84fcf6df64
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java
@@ -0,0 +1,176 @@
+package cipm.consistency.initialisers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * An interface meant to be implemented by classes that provide access to groups
+ * of instances, classes and interfaces that implement {@link IInitialiser}. Can
+ * be used to discover which initialisers are present and to allow centralised
+ * access to initialisers.
+ *
+ * Override {@link #getInitialiserInstances()},
+ * {@link #getInitialiserInterfaceTypes()} and {@link #getSubPackages()} to
+ * change what the implementors encompass. The default implementations of the
+ * methods only return an empty collection of their respective return type.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IInitialiserPackage {
+ /**
+ * @return A freshly created instance of each {@link IInitialiser} sub-type,
+ * which this encompasses.
+ *
+ * @see {@link #getAllInitialiserInstances()} for all such initialisers that are
+ * accessible from sub-packages as well as this.
+ */
+ public default Collection getInitialiserInstances() {
+ return this.initCol();
+ }
+
+ /**
+ * @return Class objects of {@link IInitialiser} types that are contained in
+ * this instance. Note that the returned types are not necessarily
+ * concrete, i.e. they can be interfaces and/or abstract classes.
+ *
+ * @see {@link #getAllInitialiserInterfaceTypes()} for all such initialiser
+ * types that are accessible from this.
+ */
+ public default Collection> getInitialiserInterfaceTypes() {
+ return this.initCol();
+ }
+
+ /**
+ * @return All {@link IInitialiserPackage} instances nested in this, i.e. the
+ * sub-packages of this.
+ */
+ public default Collection getSubPackages() {
+ return this.initCol();
+ }
+
+ /**
+ * Meant to be used only by {@link IInitialiserPackage} implementors.
+ *
+ * @return An empty collection that will be used to store objects of type T.
+ */
+ public default Collection initCol() {
+ return new ArrayList();
+ }
+
+ /**
+ * Meant to be used only by {@link IInitialiserPackage} implementors.
+ *
+ * A variant of {@link #initCol()} that also adds the given elems to the created
+ * collection.
+ *
+ * @return A collection containing elems.
+ */
+ public default Collection initCol(T[] elems) {
+ Collection res = this.initCol();
+
+ for (var e : elems) {
+ res.add(e);
+ }
+
+ return res;
+ }
+
+ /**
+ * Recursively discovers all nested {@link IInitialiserPackage} instances
+ * reachable from this instance.
+ *
+ * @return All {@link IInitialiserPackage} instances accessible from this.
+ *
+ * @see {@link #getSubPackages()} for initialiser packages that are contained in
+ * this directly.
+ */
+ public default Collection getAllSubPackages() {
+ var result = this.getSubPackages();
+
+ for (var pac : this.getSubPackages()) {
+ result.addAll(pac.getSubPackages());
+ }
+
+ return result;
+ }
+
+ /**
+ * Recursively discovers all nested {@link IInitialiserPackage} instances
+ * reachable from this instance.
+ *
+ * @return Freshly created {@link IInitialiser} instances for each initialiser
+ * accessible from this.
+ *
+ * @see {@link #getInitialiserInstances()} for initialiser instances that are
+ * contained in this directly.
+ */
+ public default Collection getAllInitialiserInstances() {
+ var result = this.getInitialiserInstances();
+
+ for (var pac : this.getAllSubPackages()) {
+ result.addAll(pac.getInitialiserInstances());
+ }
+
+ return result;
+ }
+
+ /**
+ * Recursively discovers all nested {@link IInitialiserPackage} instances
+ * reachable from this instance.
+ *
+ * @return All initialiser types that are accessible from this.
+ *
+ * @see {@link #getInitialiserInterfaceTypes()} for initialiser types that are
+ * contained in this directly.
+ */
+ public default Collection> getAllInitialiserInterfaceTypes() {
+ var result = this.getInitialiserInterfaceTypes();
+
+ for (var pac : this.getAllSubPackages()) {
+ result.addAll(pac.getInitialiserInterfaceTypes());
+ }
+
+ return result;
+ }
+
+ /**
+ * Recursively looks through all nested {@link IInitialiserPackage} instances
+ * for an {@link IInitialiser} type, which is capable of instantiating the given
+ * cls.
+ *
+ * @return The class object of the {@link IInitialiser} type meant to
+ * instantiate the given cls. Null, if there is no such
+ * {@link IInitialiser} reachable from this.
+ */
+ public default Class extends IInitialiser> getInitialiserInterfaceTypeFor(Class> cls) {
+ var initClss = this.getAllInitialiserInterfaceTypes();
+
+ for (var initCls : initClss) {
+ if (IInitialiser.isInitialiserFor(initCls, cls)) {
+ return initCls;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Recursively looks for an {@link IInitialiser} instance, which is capable of
+ * instantiating the given cls.
+ *
+ * @return An instance of the {@link IInitialiser} that is meant to instantiate
+ * cls. Null, if there is no such {@link IInitialiser} reachable from
+ * this.
+ */
+ public default IInitialiser getInitialiserInstanceFor(Class> cls) {
+ var init = this.getAllInitialiserInstances();
+
+ for (var i : init) {
+ if (i.isInitialiserFor(cls)) {
+ return i;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java
new file mode 100644
index 0000000000..763f0f2c00
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java
@@ -0,0 +1,101 @@
+package cipm.consistency.initialisers;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+/**
+ * An interface that contains various methods that can be used in utility tests,
+ * which ensure that all initialisers and/or tests associated with them are
+ * present. Not implemented as an abstract class, since utility tests are likely
+ * to have to inherit from an abstract test class anyway.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IInitialiserUtilityTest {
+ /**
+ * @return The {@link IInitialiserPackage} that will be used within the utility
+ * test.
+ */
+ public IInitialiserPackage getUsedInitialiserPackage();
+
+ /**
+ * @return A list of all files under the given path and its sub-directories.
+ */
+ public default Collection getAllFiles(File currentPath) {
+ var result = new ArrayList();
+
+ if (currentPath.isFile()) {
+ result.add(currentPath);
+ } else {
+ var files = currentPath.listFiles();
+ if (files != null) {
+ for (var f : files) {
+ result.addAll(this.getAllFiles(f));
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * @return Whether the given file's name (without extension) is equal to the
+ * given fileName.
+ */
+ public default boolean fileNameEquals(File file, String fileName) {
+ return file != null && file.getName().split("\\.")[0].equals(fileName);
+ }
+
+ /**
+ * @return A String representing the given stream. The provided toStringFunc
+ * will be used to transform stream elements into Strings.
+ */
+ public default String streamToString(Stream stream, Function toStringFunc) {
+ return stream.map((e) -> toStringFunc.apply(e)).reduce("", (s1, s2) -> s1 + ", " + s2).substring(2);
+ }
+
+ /**
+ * Opens a stream on the given list and delegates to
+ * {@link #clsStreamToString(Stream)}.
+ */
+ public default String clsListToString(List extends Class>> list) {
+ return this.clsStreamToString(list.stream());
+ }
+
+ /**
+ * A variant of {@link #streamToString(Stream, Function)} for Class streams.
+ *
+ * Maps stream elements (classes) to String by returning their simple name.
+ */
+ public default String clsStreamToString(Stream extends Class>> list) {
+ return this.streamToString(list, (cls) -> cls.getSimpleName());
+ }
+
+ /**
+ * @return An instance of all initialisers accessible from
+ * {@link #getUsedInitialiserPackage()}.
+ */
+ public default Collection getAllInitialiserInstances() {
+ return this.getUsedInitialiserPackage().getAllInitialiserInstances();
+ }
+
+ /**
+ * @return Types of all initialisers accessible from
+ * {@link #getUsedInitialiserPackage()}.
+ */
+ public default Collection> getAllInitialiserInterfaceTypes() {
+ return this.getUsedInitialiserPackage().getAllInitialiserInterfaceTypes();
+ }
+
+ /**
+ * @return The type of the initialiser meant to instantiate objClass, which is
+ * accessible from {@link #getUsedInitialiserPackage()}..
+ */
+ public default Class extends IInitialiser> getInitialiserInterfaceFor(Class> objClass) {
+ return this.getUsedInitialiserPackage().getInitialiserInterfaceTypeFor(objClass);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java
new file mode 100644
index 0000000000..84f03c8ace
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java
@@ -0,0 +1,42 @@
+package cipm.consistency.initialisers.eobject;
+
+import org.eclipse.emf.ecore.EObject;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+
+/**
+ * An interface for {@link IInitialiser} sub-types, whose purpose is to create
+ * and modify {@link EObject} instances.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IEObjectInitialiser extends IInitialiser {
+ /**
+ * {@inheritDoc}
+ *
+ * Note: The created instance may not be "valid" due to certain attributes
+ * not being set. Using proper {@link IInitialiserAdapter} instances on
+ * implementors can circumvent potential issues.
+ *
+ * @see {@link IInitialiserAdapter}, {@link IInitialiserAdapterStrategy}
+ */
+ @Override
+ public EObject instantiate();
+
+ @Override
+ public IEObjectInitialiser newInitialiser();
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return The instance class associated with the EClass of the return value of
+ * {@link #instantiate()}, or null if the said method returns null.
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public default Class extends EObject> getInstanceClassOfInitialiser() {
+ var obj = this.instantiate();
+ return obj != null ? (Class extends EObject>) obj.eClass().getInstanceClass() : null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java
new file mode 100644
index 0000000000..0d92727943
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java
@@ -0,0 +1,33 @@
+package cipm.consistency.initialisers.eobject;
+
+import cipm.consistency.initialisers.IInitialiserUtilityTest;
+
+/**
+ * An interface that extends {@link IInitialiserUtilityTest} with further
+ * utility methods, focusing on EObject.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IEObjectUtilityTest extends IInitialiserUtilityTest {
+ /**
+ * @return The {@link InitialiserNameHelper} instance that will be used in the
+ * other methods.
+ */
+ public default InitialiserNameHelper getInitialiserNameHelper() {
+ return new InitialiserNameHelper();
+ }
+
+ /**
+ * {@link InitialiserNameHelper#getInitialiserInterfaceName(Class)}
+ */
+ public default String getInitialiserInterfaceName(Class> cls) {
+ return this.getInitialiserNameHelper().getInitialiserInterfaceName(cls);
+ }
+
+ /**
+ * {@link InitialiserNameHelper#getConcreteInitialiserName(Class)}
+ */
+ public default String getConcreteInitialiserName(Class> ifc) {
+ return this.getInitialiserNameHelper().getConcreteInitialiserName(ifc);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java
new file mode 100644
index 0000000000..4f211dbc8f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java
@@ -0,0 +1,41 @@
+package cipm.consistency.initialisers.eobject;
+
+/**
+ * A utility class that contains information about the naming convention used
+ * within the sub-packages of this package.
+ *
+ * This class is intended to be used from tests, which ensure that all necessary
+ * initialisers are implemented and are accessible.
+ *
+ * @author Alp Torac Genc
+ */
+public class InitialiserNameHelper {
+
+ /**
+ * @return The name of the concrete initialiser corresponding to cls.
+ */
+ public String getConcreteInitialiserName(Class> cls) {
+ return cls.getSimpleName() + this.getInitialiserSuffix();
+ }
+
+ /**
+ * @return The name of the initialiser interface corresponding to cls.
+ */
+ public String getInitialiserInterfaceName(Class> cls) {
+ return getInitialiserInterfacePrefix() + cls.getSimpleName() + this.getInitialiserSuffix();
+ }
+
+ /**
+ * The prefix used in initialiser interfaces.
+ */
+ public String getInitialiserInterfacePrefix() {
+ return "I";
+ }
+
+ /**
+ * The suffix used in initialisers.
+ */
+ public String getInitialiserSuffix() {
+ return "Initialiser";
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java
new file mode 100644
index 0000000000..fff1daa7f3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains the means to extend {@link IInitialiser} for {@link EObject}
+ * implementors.
+ */
+package cipm.consistency.initialisers.eobject;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java
new file mode 100644
index 0000000000..567d02c076
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java
@@ -0,0 +1,15 @@
+package cipm.consistency.initialisers.jamopp;
+
+import cipm.consistency.initialisers.eobject.IEObjectInitialiser;
+
+/**
+ * An interface meant to be implemented by {@link IEObjectInitialiser}
+ * sub-types, whose purpose is to create {@link EObject} implementors within
+ * JaMoPP.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IJaMoPPEObjectInitialiser extends IEObjectInitialiser {
+ @Override
+ public IJaMoPPEObjectInitialiser newInitialiser();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java
new file mode 100644
index 0000000000..0fcbe86451
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java
@@ -0,0 +1,44 @@
+package cipm.consistency.initialisers.jamopp;
+
+import java.util.Collection;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+
+import cipm.consistency.initialisers.eobject.IEObjectUtilityTest;
+
+/**
+ * An interface that extends {@link IEObjectUtilityTest} with further utility
+ * methods, focusing on EObject types used within JaMoPP.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IJaMoPPUtilityTest extends IEObjectUtilityTest {
+ /**
+ * @return The {@link JaMoPPHelper} instance that will be used in other methods.
+ */
+ public default JaMoPPHelper getJaMoPPHelper() {
+ return new JaMoPPHelper();
+ }
+
+ /**
+ * {@link JaMoPPHelper#getAllPossibleTypes()}
+ */
+ public default Set> getAllPossibleJaMoPPEObjectTypes() {
+ return this.getJaMoPPHelper().getAllPossibleTypes();
+ }
+
+ /**
+ * {@link JaMoPPHelper#getAllInitialiserCandidates()}
+ */
+ public default Collection> getAllInitialiserCandidates() {
+ return this.getJaMoPPHelper().getAllInitialiserCandidates();
+ }
+
+ /**
+ * {@link JaMoPPHelper#getAllConcreteInitialiserCandidates()}
+ */
+ public default Collection> getAllConcreteInitialiserCandidates() {
+ return this.getJaMoPPHelper().getAllConcreteInitialiserCandidates();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java
new file mode 100644
index 0000000000..8d4149b6dc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java
@@ -0,0 +1,238 @@
+package cipm.consistency.initialisers.jamopp;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.emftext.language.java.JavaPackage;
+
+/**
+ * A utility class that provides information about EObjects used by JaMoPP, as
+ * well as methods to access their types. There are further methods, which map
+ * their types to the initialisers implemented in sub-packages.
+ *
+ * This class is intended to be used in tests, which ensure that all necessary
+ * initialisers are implemented and can be accessed.
+ *
+ * @author Alp Torac Genc
+ */
+public class JaMoPPHelper {
+ /**
+ * A variant of {@link #getAllClasses(Predicate)} with no given predicate.
+ */
+ public Collection> getAllClasses() {
+ return this.getAllClasses(null);
+ }
+
+ /**
+ * If the given predicate is null, does not filter the found types.
+ *
+ * @return All types accessible under the sub-packages of {@link JavaPackage} in
+ * form of {@link EClass}, whose instance class
+ * {@code eClass.getInstanceClass()} will be in the return value, which
+ * fulfill the given predicate.
+ */
+ public Collection> getAllClasses(Predicate pred) {
+ var res = new ArrayList>();
+ Predicate predToUse = pred != null ? pred : (a) -> true;
+ this.getAllEClasses().stream().filter(predToUse)
+ .forEach((eCls) -> res.add(this.getInstanceClassOfEClassifier(eCls)));
+ return res;
+ }
+
+ /**
+ * @return All {@link EClass}es accessible under the sub-packages of
+ * {@link JavaPackage}.
+ */
+ public Collection getAllEClasses() {
+ var res = new ArrayList();
+ var ePacs = JavaPackage.eINSTANCE.getESubpackages();
+ ePacs.forEach((pac) -> pac.getEClassifiers().stream().filter((eClsf) -> eClsf instanceof EClass)
+ .forEach((c) -> res.add((EClass) c)));
+ return res;
+ }
+
+ protected Class extends EObject> getInstanceClassOfEObject(T obj) {
+ return this.getInstanceClassOfEClassifier(obj.eClass());
+ }
+
+ @SuppressWarnings("unchecked")
+ protected Class extends EObject> getInstanceClassOfEClassifier(EClassifier eClsfier) {
+ return (Class extends EObject>) eClsfier.getInstanceClass();
+ }
+
+ /**
+ * Finds the {@link EClass} corresponding to the given cls, whose instance class
+ * is equal to cls: {@code eCls.getInstanceClass().equals(cls)}.
+ *
+ * @param cls The type of the Java element, whose {@link EClass} will be
+ * returned, if cls is the type of a Java element.
+ *
+ * @return The {@link EClass} corresponding to the class represented by cls.
+ * Null, if no such {@link EClass} is found under {@link JavaPackage}.
+ */
+ public EClass getEClassForJavaElement(Class extends EObject> cls) {
+ var ePacs = JavaPackage.eINSTANCE.getESubpackages();
+ for (var ePac : ePacs) {
+ var eClss = ePac.getEClassifiers();
+ for (var eCls : eClss) {
+ if (eCls.getInstanceClass().equals(cls)) {
+ return (EClass) eCls;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Finds the {@link EClass} corresponding to the given cls, whose instance
+ * class' concrete type is equal to cls.
+ *
+ * @param cls The type of the concrete implementation of the Java element, whose
+ * corresponding {@link EClass} will be returned.
+ *
+ * @return The {@link EClass} corresponding to the interface type of cls. Null,
+ * if no such {@link EClass} is found under {@link JavaPackage}. Note
+ * that the returned {@link EClass} will be from the interface of cls.
+ * This means, if cls represents the type xImpl, the returned
+ * {@link EClass} will belong to x.
+ */
+ public EClass getEClassForJavaElementImpl(Class extends EObject> cls) {
+ var interfaceType = this.getInterfaceTypeForJavaElementImpl(cls);
+ if (interfaceType != null) {
+ return this.getEClassForJavaElement(interfaceType);
+ }
+ return null;
+ }
+
+ /**
+ * The interface {@code I} of the implementation of a Java element type
+ * {@code T} within JaMoPP is directly implemented by it and also contains its
+ * name, i.e.:
+ *
+ * T extends I directly and the simple name of T contains the simple name of I.
+ * T can neither be an interface nor abstract.
+ *
+ * @param The type of the passed parameter. Used to allow making assumptions
+ * on the return value.
+ * @param cls The type of an implementation of a Java element within JaMoPP.
+ * @return The interface of cls matching the description from above, if it
+ * exists. Otherwise null.
+ */
+ @SuppressWarnings("unchecked")
+ public Class extends EObject> getInterfaceTypeForJavaElementImpl(Class cls) {
+ if (cls.isInterface() || Modifier.isAbstract(cls.getModifiers())) {
+ return null;
+ }
+
+ var directIfcs = cls.getInterfaces();
+ for (var ifc : directIfcs) {
+ if (cls.getSimpleName().contains(ifc.getSimpleName())) {
+ return (Class extends EObject>) ifc;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @return Types of concrete implementations and interfaces of all Java-Model
+ * elements.
+ */
+ public Set> getAllPossibleTypes() {
+ return this.getAllPossibleTypes(JavaPackage.eINSTANCE.getESubpackages());
+ }
+
+ /**
+ * Recursively discovers sub-packages of cPac (including cPac) for
+ * {@link EClassifier}s contained within, aggregates the types represented by
+ * the EClassifiers as a Set and returns the Set.
+ *
+ * @param cPac The package, which is the start point of the discovery.
+ * @return All types represented by EClassifiers contained in cPac and its
+ * sub-packages. Includes types of interfaces as well as concrete
+ * implementation classes.
+ */
+ public Set> getAllPossibleTypes(EPackage cPac) {
+ var clss = cPac.getEClassifiers();
+ var subPacs = cPac.getESubpackages();
+
+ var foundClss = new HashSet>();
+
+ if (clss != null) {
+ for (var cls : clss) {
+ foundClss.add(this.getInstanceClassOfEClassifier(cls));
+
+ /*
+ * Although cls is technically of type EClassifier, it also implements EClass
+ */
+ if (cls instanceof EClass) {
+ var castedCls = (EClass) cls;
+
+ /*
+ * Add the concrete implementation class, if cls represents a concrete class
+ */
+ if (!castedCls.isAbstract()) {
+ foundClss.add(cPac.getEFactoryInstance().create(castedCls).getClass());
+ }
+ }
+ }
+ }
+
+ if (subPacs != null) {
+ foundClss.addAll(this.getAllPossibleTypes(subPacs));
+ }
+
+ return foundClss;
+ }
+
+ /**
+ * @return All types represented by {@link EClassifiers} contained in pacs and
+ * their sub-packages. Includes types of interfaces as well as concrete
+ * implementation classes.
+ * @see {@link #getAllPossibleTypes(EPackage)}}
+ */
+ public Set> getAllPossibleTypes(Collection pacs) {
+ var foundClss = new HashSet>();
+
+ for (var pac : pacs) {
+ foundClss.addAll(this.getAllPossibleTypes(pac));
+ }
+
+ return foundClss;
+ }
+
+ /**
+ * Used to determine which EObject implementors should have an initialiser
+ * interface.
+ *
+ * @return The class objects within {@link #getAllEClasses()} which should have
+ * a corresponding initialiser interface. Currently, all of them.
+ */
+ public Collection> getAllInitialiserCandidates() {
+ var result = new ArrayList>();
+ this.getAllEClasses().stream().forEach((e) -> result.add(this.getInstanceClassOfEClassifier(e)));
+ return result;
+ }
+
+ /**
+ * Used to determine which EObject implementors should have a concrete
+ * initialiser implementation.
+ *
+ * @return The class objects within {@link #getAllEClasses()} which should have
+ * a corresponding concrete initialiser implementation.
+ */
+ public Collection> getAllConcreteInitialiserCandidates() {
+ var result = new ArrayList>();
+ this.getAllEClasses().stream().filter((e) -> !e.isAbstract())
+ .forEach((e) -> result.add(this.getInstanceClassOfEClassifier(e)));
+ return result;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java
new file mode 100644
index 0000000000..13f201a97d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java
@@ -0,0 +1,45 @@
+package cipm.consistency.initialisers.jamopp;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.annotations.AnnotationsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.arrays.ArraysInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.classifiers.ClassifierInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.commons.CommonsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.containers.ContainersInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.expressions.ExpressionsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.generics.GenericsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.imports.ImportsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.instantiations.InstantiationsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.literals.LiteralsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.members.MembersInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.modifiers.ModifiersInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.modules.ModulesInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.operators.OperatorsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.parameters.ParametersInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.references.ReferencesInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.statements.StatementsInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.types.TypesInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.variables.VariablesInitialiserPackage;
+
+/**
+ * The topmost implementor of {@link IInitialiserPackage} for EObject
+ * implementors used by JaMoPP.
+ *
+ * @author Alp Torac Genc
+ */
+public class JaMoPPInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getSubPackages() {
+ return this.initCol(new IInitialiserPackage[] { new AnnotationsInitialiserPackage(),
+ new ArraysInitialiserPackage(), new ClassifierInitialiserPackage(), new CommonsInitialiserPackage(),
+ new ContainersInitialiserPackage(), new ExpressionsInitialiserPackage(),
+ new GenericsInitialiserPackage(), new ImportsInitialiserPackage(),
+ new InstantiationsInitialiserPackage(), new LiteralsInitialiserPackage(),
+ new MembersInitialiserPackage(), new ModifiersInitialiserPackage(), new ModulesInitialiserPackage(),
+ new OperatorsInitialiserPackage(), new ParametersInitialiserPackage(),
+ new ReferencesInitialiserPackage(), new StatementsInitialiserPackage(), new TypesInitialiserPackage(),
+ new VariablesInitialiserPackage() });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java
new file mode 100644
index 0000000000..25793b9fb5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AnnotationAttributeSettingInitialiser extends AbstractInitialiserBase
+ implements IAnnotationAttributeSettingInitialiser {
+ @Override
+ public IAnnotationAttributeSettingInitialiser newInitialiser() {
+ return new AnnotationAttributeSettingInitialiser();
+ }
+
+ @Override
+ public AnnotationAttributeSetting instantiate() {
+ return AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java
new file mode 100644
index 0000000000..1aa1eca795
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+
+public class AnnotationInstanceInitialiser extends AbstractInitialiserBase implements IAnnotationInstanceInitialiser {
+ @Override
+ public AnnotationInstance instantiate() {
+ var fac = AnnotationsFactory.eINSTANCE;
+ return fac.createAnnotationInstance();
+ }
+
+ @Override
+ public IAnnotationInstanceInitialiser newInitialiser() {
+ return new AnnotationInstanceInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java
new file mode 100644
index 0000000000..0c5197ef9a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.annotations.AnnotationParameterList;
+
+public class AnnotationParameterListInitialiser extends AbstractInitialiserBase
+ implements IAnnotationParameterListInitialiser {
+ @Override
+ public IAnnotationParameterListInitialiser newInitialiser() {
+ return new AnnotationParameterListInitialiser();
+ }
+
+ @Override
+ public AnnotationParameterList instantiate() {
+ return AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java
new file mode 100644
index 0000000000..52d37e8eb2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class AnnotationsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(
+ new IInitialiser[] { new AnnotationAttributeSettingInitialiser(), new AnnotationInstanceInitialiser(),
+ new AnnotationParameterListInitialiser(), new SingleAnnotationParameterInitialiser() });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAnnotableInitialiser.class, IAnnotationAttributeSettingInitialiser.class,
+ IAnnotationInstanceInitialiser.class, IAnnotationParameterInitialiser.class,
+ IAnnotationParameterListInitialiser.class, IAnnotationValueInitialiser.class,
+ ISingleAnnotationParameterInitialiser.class });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java
new file mode 100644
index 0000000000..8aa528e96d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.Annotable;
+import org.emftext.language.java.annotations.AnnotationInstance;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotableInitialiser extends ICommentableInitialiser {
+ @Override
+ public Annotable instantiate();
+
+ public default boolean addAnnotation(Annotable aObj, AnnotationInstance anno) {
+ if (anno != null) {
+ aObj.getAnnotations().add(anno);
+ return aObj.getAnnotations().contains(anno);
+ }
+
+ return true;
+ }
+
+ public default boolean addAnnotations(Annotable aObj, AnnotationInstance[] annos) {
+ return this.doMultipleModifications(aObj, annos, this::addAnnotation);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java
new file mode 100644
index 0000000000..9d44645a05
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.members.InterfaceMethod;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotationAttributeSettingInitialiser extends ICommentableInitialiser {
+ @Override
+ public AnnotationAttributeSetting instantiate();
+
+ public default boolean setAttribute(AnnotationAttributeSetting aas, InterfaceMethod attr) {
+ aas.setAttribute(attr);
+ return (attr == null && aas.getAttribute() == null) || aas.getAttribute().equals(attr);
+ }
+
+ public default boolean setValue(AnnotationAttributeSetting aas, AnnotationValue val) {
+ aas.setValue(val);
+ return (val == null && aas.getValue() == null) || aas.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java
new file mode 100644
index 0000000000..bcd71e1e69
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.annotations.AnnotationParameter;
+import org.emftext.language.java.classifiers.Classifier;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface IAnnotationInstanceInitialiser extends INamespaceAwareElementInitialiser {
+ @Override
+ public AnnotationInstance instantiate();
+
+ public default boolean setAnnotation(AnnotationInstance ai, Classifier anno) {
+ ai.setAnnotation(anno);
+ return (anno == null && ai.getAnnotation() == null) || ai.getAnnotation().equals(anno);
+ }
+
+ public default boolean setParameter(AnnotationInstance ai, AnnotationParameter param) {
+ ai.setParameter(param);
+ return (param == null && ai.getParameter() == null) || ai.getParameter().equals(param);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java
new file mode 100644
index 0000000000..fcc8df3021
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationParameter;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotationParameterInitialiser extends ICommentableInitialiser {
+ @Override
+ public AnnotationParameter instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java
new file mode 100644
index 0000000000..98f57efb0d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationParameterList;
+
+public interface IAnnotationParameterListInitialiser extends IAnnotationParameterInitialiser {
+ @Override
+ public AnnotationParameterList instantiate();
+
+ public default boolean addSetting(AnnotationParameterList apl, AnnotationAttributeSetting setting) {
+ if (setting != null) {
+ apl.getSettings().add(setting);
+ return apl.getSettings().contains(setting);
+ }
+ return true;
+ }
+
+ public default boolean addSettings(AnnotationParameterList apl, AnnotationAttributeSetting[] settings) {
+ return this.doMultipleModifications(apl, settings, this::addSetting);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java
new file mode 100644
index 0000000000..a7816d9346
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotationValueInitialiser extends ICommentableInitialiser {
+ @Override
+ public AnnotationValue instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java
new file mode 100644
index 0000000000..6c2ddf03e2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.annotations.SingleAnnotationParameter;
+
+public interface ISingleAnnotationParameterInitialiser extends IAnnotationParameterInitialiser {
+ @Override
+ public SingleAnnotationParameter instantiate();
+
+ public default boolean setValue(SingleAnnotationParameter sap, AnnotationValue val) {
+ sap.setValue(val);
+ return (val == null && sap.getValue() == null) || sap.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java
new file mode 100644
index 0000000000..185f00118a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.annotations;
+
+import org.emftext.language.java.annotations.AnnotationsFactory;
+import org.emftext.language.java.annotations.SingleAnnotationParameter;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SingleAnnotationParameterInitialiser extends AbstractInitialiserBase
+ implements ISingleAnnotationParameterInitialiser {
+ @Override
+ public ISingleAnnotationParameterInitialiser newInitialiser() {
+ return new SingleAnnotationParameterInitialiser();
+ }
+
+ @Override
+ public SingleAnnotationParameter instantiate() {
+ return AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java
new file mode 100644
index 0000000000..5796ca11e9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.annotations}.
+ */
+package cipm.consistency.initialisers.jamopp.annotations;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java
new file mode 100644
index 0000000000..858fb0c149
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.arrays.ArrayDimension;
+
+public class ArrayDimensionInitialiser extends AbstractInitialiserBase implements IArrayDimensionInitialiser {
+ @Override
+ public IArrayDimensionInitialiser newInitialiser() {
+ return new ArrayDimensionInitialiser();
+ }
+
+ @Override
+ public ArrayDimension instantiate() {
+ return ArraysFactory.eINSTANCE.createArrayDimension();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java
new file mode 100644
index 0000000000..91a244f67c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.arrays.ArrayInitializer;
+
+public class ArrayInitializerInitialiser extends AbstractInitialiserBase implements IArrayInitializerInitialiser {
+ @Override
+ public IArrayInitializerInitialiser newInitialiser() {
+ return new ArrayInitializerInitialiser();
+ }
+
+ @Override
+ public ArrayInitializer instantiate() {
+ return ArraysFactory.eINSTANCE.createArrayInitializer();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java
new file mode 100644
index 0000000000..cc199d7aac
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationBySize;
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ArrayInstantiationBySizeInitialiser extends AbstractInitialiserBase
+ implements IArrayInstantiationBySizeInitialiser {
+ @Override
+ public IArrayInstantiationBySizeInitialiser newInitialiser() {
+ return new ArrayInstantiationBySizeInitialiser();
+ }
+
+ @Override
+ public ArrayInstantiationBySize instantiate() {
+ return ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java
new file mode 100644
index 0000000000..d6d53022e2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped;
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ArrayInstantiationByValuesTypedInitialiser extends AbstractInitialiserBase
+ implements IArrayInstantiationByValuesTypedInitialiser {
+ @Override
+ public IArrayInstantiationByValuesTypedInitialiser newInitialiser() {
+ return new ArrayInstantiationByValuesTypedInitialiser();
+ }
+
+ @Override
+ public ArrayInstantiationByValuesTyped instantiate() {
+ return ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java
new file mode 100644
index 0000000000..ba8ee9e7e9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped;
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ArrayInstantiationByValuesUntypedInitialiser extends AbstractInitialiserBase
+ implements IArrayInstantiationByValuesUntypedInitialiser {
+ @Override
+ public IArrayInstantiationByValuesUntypedInitialiser newInitialiser() {
+ return new ArrayInstantiationByValuesUntypedInitialiser();
+ }
+
+ @Override
+ public ArrayInstantiationByValuesUntyped instantiate() {
+ return ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java
new file mode 100644
index 0000000000..8433c8ca8b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.arrays.ArraysFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ArraySelectorInitialiser extends AbstractInitialiserBase implements IArraySelectorInitialiser {
+ @Override
+ public IArraySelectorInitialiser newInitialiser() {
+ return new ArraySelectorInitialiser();
+ }
+
+ @Override
+ public ArraySelector instantiate() {
+ return ArraysFactory.eINSTANCE.createArraySelector();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java
new file mode 100644
index 0000000000..0af267885e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java
@@ -0,0 +1,25 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ArraysInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new ArrayDimensionInitialiser(), new ArrayInitializerInitialiser(),
+ new ArrayInstantiationBySizeInitialiser(), new ArrayInstantiationByValuesTypedInitialiser(),
+ new ArrayInstantiationByValuesUntypedInitialiser(), new ArraySelectorInitialiser() });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IArrayDimensionInitialiser.class, IArrayInitializationValueInitialiser.class,
+ IArrayInitializerInitialiser.class, IArrayInstantiationBySizeInitialiser.class,
+ IArrayInstantiationByValuesInitialiser.class, IArrayInstantiationByValuesTypedInitialiser.class,
+ IArrayInstantiationByValuesUntypedInitialiser.class, IArrayInstantiationInitialiser.class,
+ IArraySelectorInitialiser.class, IArrayTypeableInitialiser.class });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java
new file mode 100644
index 0000000000..806493e3b2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayDimension;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IArrayDimensionInitialiser extends IAnnotableInitialiser, ICommentableInitialiser {
+ @Override
+ public ArrayDimension instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java
new file mode 100644
index 0000000000..4bf9ec4414
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInitializationValue;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IArrayInitializationValueInitialiser extends ICommentableInitialiser {
+ @Override
+ public ArrayInitializationValue instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java
new file mode 100644
index 0000000000..c7ea435d5e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInitializationValue;
+import org.emftext.language.java.arrays.ArrayInitializer;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotationValueInitialiser;
+
+public interface IArrayInitializerInitialiser
+ extends IAnnotationValueInitialiser, IArrayInitializationValueInitialiser {
+ @Override
+ public ArrayInitializer instantiate();
+
+ public default boolean addInitialValue(ArrayInitializer ai, ArrayInitializationValue initVal) {
+ if (initVal != null) {
+ ai.getInitialValues().add(initVal);
+ return ai.getInitialValues().contains(initVal);
+ }
+ return true;
+ }
+
+ public default boolean addInitialValues(ArrayInitializer ai, ArrayInitializationValue[] initVals) {
+ return this.doMultipleModifications(ai, initVals, this::addInitialValue);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java
new file mode 100644
index 0000000000..38df6b44a1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationBySize;
+import org.emftext.language.java.expressions.Expression;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IArrayInstantiationBySizeInitialiser extends IArrayInstantiationInitialiser, ITypedElementInitialiser {
+
+ @Override
+ public ArrayInstantiationBySize instantiate();
+
+ public default boolean addSize(ArrayInstantiationBySize arrIns, Expression size) {
+ if (size != null) {
+ arrIns.getSizes().add(size);
+ return arrIns.getSizes().contains(size);
+ }
+ return true;
+ }
+
+ public default boolean addSizes(ArrayInstantiationBySize arrIns, Expression[] sizes) {
+ return this.doMultipleModifications(arrIns, sizes, this::addSize);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java
new file mode 100644
index 0000000000..128f2fd41c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInitializer;
+import org.emftext.language.java.arrays.ArrayInstantiationByValues;
+
+public interface IArrayInstantiationByValuesInitialiser extends IArrayInstantiationInitialiser {
+
+ @Override
+ public ArrayInstantiationByValues instantiate();
+
+ public default boolean setArrayInitializer(ArrayInstantiationByValues arrIns, ArrayInitializer arrInit) {
+ arrIns.setArrayInitializer(arrInit);
+ return (arrInit == null && arrIns.getArrayInitializer() == null)
+ || arrIns.getArrayInitializer().equals(arrInit);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java
new file mode 100644
index 0000000000..62dde8bfed
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IArrayInstantiationByValuesTypedInitialiser
+ extends IArrayInstantiationByValuesInitialiser, ITypedElementInitialiser {
+ @Override
+ public ArrayInstantiationByValuesTyped instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java
new file mode 100644
index 0000000000..e9a6d68b5a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped;
+
+public interface IArrayInstantiationByValuesUntypedInitialiser extends IArrayInstantiationByValuesInitialiser {
+ @Override
+ public ArrayInstantiationByValuesUntyped instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java
new file mode 100644
index 0000000000..4af666ff1c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayInstantiation;
+
+import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser;
+
+public interface IArrayInstantiationInitialiser extends IReferenceInitialiser {
+ @Override
+ public ArrayInstantiation instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java
new file mode 100644
index 0000000000..de628f49ca
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java
@@ -0,0 +1,17 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.expressions.Expression;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IArraySelectorInitialiser extends IAnnotableInitialiser, ICommentableInitialiser {
+ @Override
+ public ArraySelector instantiate();
+
+ public default boolean setPosition(ArraySelector as, Expression pos) {
+ as.setPosition(pos);
+ return (pos == null && as.getPosition() == null) || as.getPosition().equals(pos);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java
new file mode 100644
index 0000000000..4456f650f2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java
@@ -0,0 +1,35 @@
+package cipm.consistency.initialisers.jamopp.arrays;
+
+import org.emftext.language.java.arrays.ArrayDimension;
+import org.emftext.language.java.arrays.ArrayTypeable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IArrayTypeableInitialiser extends ICommentableInitialiser {
+ @Override
+ public ArrayTypeable instantiate();
+
+ public default boolean addArrayDimensionAfter(ArrayTypeable at, ArrayDimension arrDimAfter) {
+ if (arrDimAfter != null) {
+ at.getArrayDimensionsAfter().add(arrDimAfter);
+ return at.getArrayDimensionsAfter().contains(arrDimAfter);
+ }
+ return true;
+ }
+
+ public default boolean addArrayDimensionBefore(ArrayTypeable at, ArrayDimension arrDimBefore) {
+ if (arrDimBefore != null) {
+ at.getArrayDimensionsBefore().add(arrDimBefore);
+ return at.getArrayDimensionsBefore().contains(arrDimBefore);
+ }
+ return true;
+ }
+
+ public default boolean addArrayDimensionsAfter(ArrayTypeable at, ArrayDimension[] arrDimsAfter) {
+ return this.doMultipleModifications(at, arrDimsAfter, this::addArrayDimensionAfter);
+ }
+
+ public default boolean addArrayDimensionsBefore(ArrayTypeable at, ArrayDimension[] arrDimsBefore) {
+ return this.doMultipleModifications(at, arrDimsBefore, this::addArrayDimensionBefore);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java
new file mode 100644
index 0000000000..81b6e0ef3b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.arrays}.
+ */
+package cipm.consistency.initialisers.jamopp.arrays;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java
new file mode 100644
index 0000000000..d9d9282819
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Annotation;
+import org.emftext.language.java.classifiers.ClassifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AnnotationInitialiser extends AbstractInitialiserBase implements IAnnotationInitialiser {
+ @Override
+ public Annotation instantiate() {
+ var fac = ClassifiersFactory.eINSTANCE;
+ return fac.createAnnotation();
+ }
+
+ @Override
+ public AnnotationInitialiser newInitialiser() {
+ return new AnnotationInitialiser();
+ }
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java
new file mode 100644
index 0000000000..8423d31510
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.ClassifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+
+public class AnonymousClassInitialiser extends AbstractInitialiserBase implements IAnonymousClassInitialiser {
+ @Override
+ public IAnonymousClassInitialiser newInitialiser() {
+ return new AnonymousClassInitialiser();
+ }
+
+ @Override
+ public AnonymousClass instantiate() {
+ return ClassifiersFactory.eINSTANCE.createAnonymousClass();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java
new file mode 100644
index 0000000000..419c6de41b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.ClassifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.classifiers.Class;
+
+public class ClassInitialiser extends AbstractInitialiserBase implements IClassInitialiser {
+ @Override
+ public Class instantiate() {
+ var fac = ClassifiersFactory.eINSTANCE;
+ return fac.createClass();
+ }
+
+ @Override
+ public ClassInitialiser newInitialiser() {
+ return new ClassInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java
new file mode 100644
index 0000000000..80a09e1155
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ClassifierInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AnnotationInitialiser(), new AnonymousClassInitialiser(),
+ new ClassInitialiser(), new EnumerationInitialiser(), new InterfaceInitialiser() });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAnnotationInitialiser.class, IAnonymousClassInitialiser.class,
+ IClassifierInitialiser.class, IClassInitialiser.class, IConcreteClassifierInitialiser.class,
+ IEnumerationInitialiser.class, IImplementorInitialiser.class, IInterfaceInitialiser.class });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java
new file mode 100644
index 0000000000..c177fa3b87
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.ClassifiersFactory;
+import org.emftext.language.java.classifiers.Enumeration;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EnumerationInitialiser extends AbstractInitialiserBase implements IEnumerationInitialiser {
+ @Override
+ public Enumeration instantiate() {
+ var fac = ClassifiersFactory.eINSTANCE;
+ return fac.createEnumeration();
+ }
+
+ @Override
+ public EnumerationInitialiser newInitialiser() {
+ return new EnumerationInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java
new file mode 100644
index 0000000000..e93400b262
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Annotation;
+
+public interface IAnnotationInitialiser extends IConcreteClassifierInitialiser {
+ @Override
+ public Annotation instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java
new file mode 100644
index 0000000000..8e15726db6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+
+import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypeInitialiser;
+
+public interface IAnonymousClassInitialiser extends IMemberContainerInitialiser, ITypeInitialiser {
+ @Override
+ public AnonymousClass instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java
new file mode 100644
index 0000000000..7f73eb9305
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Class;
+import org.emftext.language.java.types.TypeReference;
+
+public interface IClassInitialiser extends IConcreteClassifierInitialiser, IImplementorInitialiser {
+ @Override
+ public Class instantiate();
+
+ public default boolean setDefaultExtends(Class cls, TypeReference defExt) {
+ cls.setDefaultExtends(defExt);
+ return (defExt == null && cls.getDefaultExtends() == null) || cls.getDefaultExtends().equals(defExt);
+ }
+
+ public default boolean setExtends(Class cls, TypeReference ext) {
+ cls.setExtends(ext);
+ return (ext == null && cls.getExtends() == null) || cls.getExtends().equals(ext);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java
new file mode 100644
index 0000000000..67ca490b91
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java
@@ -0,0 +1,93 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.PackageImport;
+
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypeInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link Classifier} instances.
+ *
+ * Note: The methods addImport/addPackageImport of {@link Classifier} add the
+ * imports to its {@link CompilationUnit}. {@link Classifier} has no attributes
+ * itself. The same holds for their corresponding methods in this
+ * initialiser.. Use the methods {@link #canAddImports(Classifier)} and
+ * {@link #canAddPackageImports(Classifier)} to determine, whether certain
+ * imports can be added.
+ *
+ * @author Alp Torac Genc
+ */
+
+public interface IClassifierInitialiser extends ITypeInitialiser, IReferenceableElementInitialiser {
+ @Override
+ public Classifier instantiate();
+
+ /**
+ * Adds the given {@link Import} to the {@link CompilationUnit} containing the
+ * given {@link Classifier}.
+ *
+ * Attempting to add null imports will return true, since there is no
+ * modification to perform.
+ *
+ * @see {@link IClassifierInitialiser}
+ */
+ public default boolean addImport(Classifier cls, Import imp) {
+ if (imp != null) {
+ if (!this.canAddImports(cls)) {
+ return false;
+ }
+ var cu = cls.getContainingCompilationUnit();
+ cu.getImports().add(imp);
+ return cu.getImports().stream().anyMatch((i) -> i.equals(imp));
+ }
+ return true;
+ }
+
+ public default boolean addImports(Classifier cls, Import[] imps) {
+ return this.doMultipleModifications(cls, imps, this::addImport);
+ }
+
+ /**
+ * Whether {@link Import}s can be added via
+ * {@link #addImport(Classifier, Import)}
+ */
+ public default boolean canAddImports(Classifier cls) {
+ return cls.getContainingCompilationUnit() != null;
+ }
+
+ /**
+ * Whether {@link PackageImport}s can be added via
+ * {@link #addPackageImport(Classifier, PackageImport)}
+ */
+ public default boolean canAddPackageImports(Classifier cls) {
+ return cls.getContainingCompilationUnit() != null;
+ }
+
+ /**
+ * Adds the given {@link PackageImport} to the {@link CompilationUnit}
+ * containing the given {@link Classifier}.
+ *
+ * Attempting to add null package imports will return true, since there is no
+ * modification to perform.
+ *
+ * @see {@link IClassifierInitialiser}
+ */
+ public default boolean addPackageImport(Classifier cls, PackageImport imp) {
+ if (imp != null) {
+ if (!this.canAddPackageImports(cls)) {
+ return false;
+ }
+ var cu = cls.getContainingCompilationUnit();
+ cu.getImports().add(imp);
+ return cu.getImports().stream().anyMatch((i) -> i.equals(imp));
+ }
+ return true;
+ }
+
+ public default boolean addPackageImports(Classifier cls, PackageImport[] imps) {
+ return this.doMultipleModifications(cls, imps, this::addPackageImport);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java
new file mode 100644
index 0000000000..8026bc4ded
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java
@@ -0,0 +1,39 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.containers.Package;
+
+import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser;
+import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IStatementInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link ConcreteClassifier} instances.
+ *
+ * Note: {@link #setPackage(ConcreteClassifier, Package)} does not add the
+ * given {@link ConcreteClassifier} to the given {@link Package}.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public interface IConcreteClassifierInitialiser extends IAnnotableAndModifiableInitialiser, IMemberContainerInitialiser,
+ IMemberInitialiser, IStatementInitialiser, IClassifierInitialiser, ITypeParametrizableInitialiser {
+
+ @Override
+ public ConcreteClassifier instantiate();
+
+ /**
+ * Sets the package of cls as pac.
+ *
+ * Note: DOES NOT modify the classifiers contained by pac.
+ *
+ * @see {@link IConcreteClassifierInitialiser}
+ */
+ public default boolean setPackage(ConcreteClassifier cls, Package pac) {
+ cls.setPackage(pac);
+ return (pac == null && cls.getPackage() == null) || cls.getPackage().equals(pac);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java
new file mode 100644
index 0000000000..3da9091378
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Enumeration;
+import org.emftext.language.java.members.EnumConstant;
+
+public interface IEnumerationInitialiser extends IConcreteClassifierInitialiser, IImplementorInitialiser {
+ @Override
+ public Enumeration instantiate();
+
+ public default boolean addConstant(Enumeration enm, EnumConstant cnst) {
+ if (cnst != null) {
+ enm.getConstants().add(cnst);
+ return enm.getConstants().contains(cnst) && enm.getContainedConstant(cnst.getName()).equals(cnst);
+ }
+ return true;
+ }
+
+ public default boolean addConstants(Enumeration enm, EnumConstant[] cnsts) {
+ return this.doMultipleModifications(enm, cnsts, this::addConstant);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java
new file mode 100644
index 0000000000..f0fbdebd03
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Implementor;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IImplementorInitialiser extends ICommentableInitialiser {
+ @Override
+ public Implementor instantiate();
+
+ public default boolean addImplements(Implementor implementor, TypeReference impls) {
+ if (impls != null) {
+ implementor.getImplements().add(impls);
+ return implementor.getImplements().contains(impls);
+ }
+ return true;
+ }
+
+ public default boolean addImplements(Implementor implementor, TypeReference[] implsArr) {
+ return this.doMultipleModifications(implementor, implsArr, this::addImplements);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java
new file mode 100644
index 0000000000..33bafa69ce
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java
@@ -0,0 +1,33 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.Interface;
+import org.emftext.language.java.types.TypeReference;
+
+public interface IInterfaceInitialiser extends IConcreteClassifierInitialiser {
+ @Override
+ public Interface instantiate();
+
+ public default boolean addDefaultExtends(Interface intfc, TypeReference defExt) {
+ if (defExt != null) {
+ intfc.getDefaultExtends().add(defExt);
+ return intfc.getDefaultExtends().contains(defExt);
+ }
+ return true;
+ }
+
+ public default boolean addDefaultExtends(Interface intfc, TypeReference[] defExts) {
+ return this.doMultipleModifications(intfc, defExts, this::addDefaultExtends);
+ }
+
+ public default boolean addExtends(Interface intfc, TypeReference ext) {
+ if (ext != null) {
+ intfc.getExtends().add(ext);
+ return intfc.getExtends().contains(ext);
+ }
+ return true;
+ }
+
+ public default boolean addExtends(Interface intfc, TypeReference[] exts) {
+ return this.doMultipleModifications(intfc, exts, this::addExtends);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java
new file mode 100644
index 0000000000..da4fdb2809
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.classifiers;
+
+import org.emftext.language.java.classifiers.ClassifiersFactory;
+import org.emftext.language.java.classifiers.Interface;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class InterfaceInitialiser extends AbstractInitialiserBase implements IInterfaceInitialiser {
+ @Override
+ public Interface instantiate() {
+ var fac = ClassifiersFactory.eINSTANCE;
+ return fac.createInterface();
+ }
+
+ @Override
+ public InterfaceInitialiser newInitialiser() {
+ return new InterfaceInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java
new file mode 100644
index 0000000000..d93f4a1234
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.classifiers}.
+ */
+package cipm.consistency.initialisers.jamopp.classifiers;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java
new file mode 100644
index 0000000000..f8c470efe3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java
@@ -0,0 +1,15 @@
+package cipm.consistency.initialisers.jamopp.commons;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class CommonsInitialiserPackage implements IInitialiserPackage {
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { ICommentableInitialiser.class, INamedElementInitialiser.class,
+ INamespaceAwareElementInitialiser.class });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java
new file mode 100644
index 0000000000..4a7aabc787
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.commons;
+
+import org.emftext.language.java.commons.Commentable;
+
+import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser;
+
+public interface ICommentableInitialiser extends IJaMoPPEObjectInitialiser {
+ @Override
+ public Commentable instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java
new file mode 100644
index 0000000000..ea1de18495
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java
@@ -0,0 +1,49 @@
+package cipm.consistency.initialisers.jamopp.commons;
+
+import org.emftext.language.java.commons.NamedElement;
+
+/**
+ * An interface meant to be implemented by initialisers, which are meant to
+ * create {@link NamedElement} instances.
+ *
+ * Since some {@link NamedElement} implementations' name attribute cannot be
+ * modified as expected, {@link #canSetName(NamedElement)} can be used to
+ * determine the modifiability of the name attribute in implementors.
+ *
+ * @author Alp Torac Genc
+ */
+public interface INamedElementInitialiser extends ICommentableInitialiser {
+ @Override
+ public NamedElement instantiate();
+
+ /**
+ * Sets the name attribute of the given element to the given name, if its name
+ * can be set.
+ *
+ * Note: If {@code name == null}, the return value will be true, regardless of
+ * the name attribute being modifiable.
+ *
+ * @see {@link #canSetName(NamedElement)}
+ */
+ public default boolean setName(NamedElement ne, String name) {
+ if (!this.canSetName(ne)) {
+ return false;
+ }
+ ne.setName(name);
+ return (name == null && ne.getName() == null) || ne.getName().equals(name);
+ }
+
+ /**
+ * Extracted from {@link #setName(NamedElement, String)} because there are
+ * implementors, whose name cannot be modified via
+ * {@link #setName(NamedElement, String)}. This way, such implementors can
+ * override this method to indicate, whether their name attribute can be
+ * modified.
+ *
+ * @return Whether {@link #setName(NamedElement, String)} can be used to modify
+ * the given {@link NamedElement} instance ne.
+ */
+ public default boolean canSetName(NamedElement ne) {
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java
new file mode 100644
index 0000000000..bb739cddf0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.commons;
+
+import org.emftext.language.java.commons.NamespaceAwareElement;
+
+public interface INamespaceAwareElementInitialiser extends ICommentableInitialiser {
+ @Override
+ public NamespaceAwareElement instantiate();
+
+ public default boolean addNamespaces(NamespaceAwareElement nae, String[] namespaces) {
+ return this.doMultipleModifications(nae, namespaces, this::addNamespace);
+ }
+
+ public default boolean addNamespace(NamespaceAwareElement nae, String namespace) {
+ if (namespace != null) {
+ nae.getNamespaces().add(namespace);
+ return nae.getNamespaces().contains(namespace);
+ }
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java
new file mode 100644
index 0000000000..18bb567649
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.commons}.
+ */
+package cipm.consistency.initialisers.jamopp.commons;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java
new file mode 100644
index 0000000000..74180fcb86
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.CompilationUnit;
+import org.emftext.language.java.containers.ContainersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class CompilationUnitInitialiser extends AbstractInitialiserBase implements ICompilationUnitInitialiser {
+ @Override
+ public CompilationUnit instantiate() {
+ var fac = ContainersFactory.eINSTANCE;
+ return fac.createCompilationUnit();
+ }
+
+ @Override
+ public ICompilationUnitInitialiser newInitialiser() {
+ return new CompilationUnitInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java
new file mode 100644
index 0000000000..e4297bcd3a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ContainersInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new CompilationUnitInitialiser(), new EmptyModelInitialiser(),
+ new ModuleInitialiser(), new PackageInitialiser() });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { ICompilationUnitInitialiser.class, IEmptyModelInitialiser.class,
+ IJavaRootInitialiser.class, IModuleInitialiser.class, IPackageInitialiser.class });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java
new file mode 100644
index 0000000000..1589d25ca9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.ContainersFactory;
+import org.emftext.language.java.containers.EmptyModel;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EmptyModelInitialiser extends AbstractInitialiserBase implements IEmptyModelInitialiser {
+ @Override
+ public IEmptyModelInitialiser newInitialiser() {
+ return new EmptyModelInitialiser();
+ }
+
+ @Override
+ public EmptyModel instantiate() {
+ return ContainersFactory.eINSTANCE.createEmptyModel();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java
new file mode 100644
index 0000000000..67414db54f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.containers.CompilationUnit;
+
+public interface ICompilationUnitInitialiser extends IJavaRootInitialiser {
+ @Override
+ public CompilationUnit instantiate();
+
+ public default boolean addClassifier(CompilationUnit cu, ConcreteClassifier cls) {
+ if (cls != null) {
+ cu.getClassifiers().add(cls);
+ return cu.getClassifiers().contains(cls) && cu.getContainedClassifier(cls.getQualifiedName()) != null
+ && cu.getContainedClassifier(cls.getQualifiedName()).equals(cls);
+ }
+ return true;
+ }
+
+ public default boolean addClassifiers(CompilationUnit cu, ConcreteClassifier[] clss) {
+ return this.doMultipleModifications(cu, clss, this::addClassifier);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java
new file mode 100644
index 0000000000..3f85c41b3f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.EmptyModel;
+
+public interface IEmptyModelInitialiser extends IJavaRootInitialiser {
+ @Override
+ public EmptyModel instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java
new file mode 100644
index 0000000000..ba6b8d2941
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.JavaRoot;
+import org.emftext.language.java.containers.Origin;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser;
+
+public interface IJavaRootInitialiser extends INamedElementInitialiser, INamespaceAwareElementInitialiser,
+ IAnnotableInitialiser, IImportingElementInitialiser {
+ @Override
+ public JavaRoot instantiate();
+
+ public default boolean setOrigin(JavaRoot jr, Origin origin) {
+ jr.setOrigin(origin);
+ return (origin == null && jr.getOrigin() == null) || jr.getOrigin().equals(origin);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java
new file mode 100644
index 0000000000..2509f04c44
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java
@@ -0,0 +1,40 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.modifiers.Open;
+import org.emftext.language.java.modules.ModuleDirective;
+
+public interface IModuleInitialiser extends IJavaRootInitialiser {
+ @Override
+ public Module instantiate();
+
+ public default boolean setOpen(Module mod, Open open) {
+ mod.setOpen(open);
+ return (open == null && mod.getOpen() == null) || mod.getOpen().equals(open);
+ }
+
+ public default boolean addTarget(Module mod, ModuleDirective target) {
+ if (target != null) {
+ mod.getTarget().add(target);
+ return mod.getTarget().contains(target);
+ }
+ return true;
+ }
+
+ public default boolean addTargets(Module mod, ModuleDirective[] targets) {
+ return this.doMultipleModifications(mod, targets, this::addTarget);
+ }
+
+ public default boolean addPackage(Module mod, Package pac) {
+ if (pac != null) {
+ mod.getPackages().add(pac);
+ return mod.getPackages().contains(pac);
+ }
+ return true;
+ }
+
+ public default boolean addPackages(Module mod, Package[] pacs) {
+ return this.doMultipleModifications(mod, pacs, this::addPackage);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java
new file mode 100644
index 0000000000..a7e605cbf5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java
@@ -0,0 +1,54 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.commons.NamedElement;
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.containers.Package;
+
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+
+/**
+ * An interface meant to be implemented by {@link IInitialiser} implementors
+ * that are supposed to create {@link Package} instances.
+ *
+ * Note: Package names {@code package.getName()} is supposed to be left
+ * empty. Changing it HAS NO EFFECT on the name of the package in similarity
+ * checking. Package's name consists of the concatenation of its namespaces with
+ * dots ".". Therefore, use
+ * {@link #addNamespace(org.emftext.language.java.commons.NamespaceAwareElement, String)}
+ * to modify its name.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IPackageInitialiser extends IJavaRootInitialiser, IReferenceableElementInitialiser {
+ @Override
+ public Package instantiate();
+
+ /**
+ * @return False, because the return value of {@code package.getName()} is
+ * determined by the namespaces of the package instead.
+ *
+ * @see {@link IPackageInitialiser}
+ */
+ @Override
+ public default boolean canSetName(NamedElement ne) {
+ return false;
+ }
+
+ public default boolean setModule(Package pac, Module mod) {
+ pac.setModule(mod);
+ return (mod == null && pac.getModule() == null) || pac.getModule().equals(mod);
+ }
+
+ public default boolean addClassifier(Package pac, ConcreteClassifier cls) {
+ if (cls != null) {
+ pac.getClassifiers().add(cls);
+ return pac.getClassifiers().contains(cls);
+ }
+ return true;
+ }
+
+ public default boolean addClassifiers(Package pac, ConcreteClassifier[] clss) {
+ return this.doMultipleModifications(pac, clss, this::addClassifier);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java
new file mode 100644
index 0000000000..b3fae657d8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.ContainersFactory;
+import org.emftext.language.java.containers.Module;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ModuleInitialiser extends AbstractInitialiserBase implements IModuleInitialiser {
+ @Override
+ public Module instantiate() {
+ var fac = ContainersFactory.eINSTANCE;
+ return fac.createModule();
+ }
+
+ @Override
+ public IModuleInitialiser newInitialiser() {
+ return new ModuleInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java
new file mode 100644
index 0000000000..d7703c1dc0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.containers;
+
+import org.emftext.language.java.containers.ContainersFactory;
+import org.emftext.language.java.containers.Package;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PackageInitialiser extends AbstractInitialiserBase implements IPackageInitialiser {
+ @Override
+ public Package instantiate() {
+ var fac = ContainersFactory.eINSTANCE;
+ return fac.createPackage();
+ }
+
+ @Override
+ public IPackageInitialiser newInitialiser() {
+ return new PackageInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java
new file mode 100644
index 0000000000..38e5ae774d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.containers}.
+ */
+package cipm.consistency.initialisers.jamopp.containers;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java
new file mode 100644
index 0000000000..ff852e645e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.expressions.AdditiveExpression;
+
+public class AdditiveExpressionInitialiser extends AbstractInitialiserBase implements IAdditiveExpressionInitialiser {
+ @Override
+ public IAdditiveExpressionInitialiser newInitialiser() {
+ return new AdditiveExpressionInitialiser();
+ }
+
+ @Override
+ public AdditiveExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createAdditiveExpression();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java
new file mode 100644
index 0000000000..2aea4bd856
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AndExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AndExpressionInitialiser extends AbstractInitialiserBase implements IAndExpressionInitialiser {
+ @Override
+ public IAndExpressionInitialiser newInitialiser() {
+ return new AndExpressionInitialiser();
+ }
+
+ @Override
+ public AndExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createAndExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..d93075cbea
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ArrayConstructorReferenceExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ArrayConstructorReferenceExpressionInitialiser extends AbstractInitialiserBase
+ implements IArrayConstructorReferenceExpressionInitialiser {
+ @Override
+ public IArrayConstructorReferenceExpressionInitialiser newInitialiser() {
+ return new ArrayConstructorReferenceExpressionInitialiser();
+ }
+
+ @Override
+ public ArrayConstructorReferenceExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createArrayConstructorReferenceExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java
new file mode 100644
index 0000000000..128b436f8f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.expressions.AssignmentExpression;
+
+public class AssignmentExpressionInitialiser extends AbstractInitialiserBase
+ implements IAssignmentExpressionInitialiser {
+ @Override
+ public IAssignmentExpressionInitialiser newInitialiser() {
+ return new AssignmentExpressionInitialiser();
+ }
+
+ @Override
+ public AssignmentExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createAssignmentExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java
new file mode 100644
index 0000000000..d92d254e8a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.CastExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class CastExpressionInitialiser extends AbstractInitialiserBase implements ICastExpressionInitialiser {
+ @Override
+ public ICastExpressionInitialiser newInitialiser() {
+ return new CastExpressionInitialiser();
+ }
+
+ @Override
+ public CastExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createCastExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..79ac600d35
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ClassTypeConstructorReferenceExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ClassTypeConstructorReferenceExpressionInitialiser extends AbstractInitialiserBase
+ implements IClassTypeConstructorReferenceExpressionInitialiser {
+ @Override
+ public IClassTypeConstructorReferenceExpressionInitialiser newInitialiser() {
+ return new ClassTypeConstructorReferenceExpressionInitialiser();
+ }
+
+ @Override
+ public ClassTypeConstructorReferenceExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createClassTypeConstructorReferenceExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java
new file mode 100644
index 0000000000..00db270c26
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalAndExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ConditionalAndExpressionInitialiser extends AbstractInitialiserBase
+ implements IConditionalAndExpressionInitialiser {
+ @Override
+ public IConditionalAndExpressionInitialiser newInitialiser() {
+ return new ConditionalAndExpressionInitialiser();
+ }
+
+ @Override
+ public ConditionalAndExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createConditionalAndExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java
new file mode 100644
index 0000000000..4f49051bf7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ConditionalExpressionInitialiser extends AbstractInitialiserBase
+ implements IConditionalExpressionInitialiser {
+ @Override
+ public IConditionalExpressionInitialiser newInitialiser() {
+ return new ConditionalExpressionInitialiser();
+ }
+
+ @Override
+ public ConditionalExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java
new file mode 100644
index 0000000000..5fd7e9b375
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalOrExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ConditionalOrExpressionInitialiser extends AbstractInitialiserBase
+ implements IConditionalOrExpressionInitialiser {
+ @Override
+ public IConditionalOrExpressionInitialiser newInitialiser() {
+ return new ConditionalOrExpressionInitialiser();
+ }
+
+ @Override
+ public ConditionalOrExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createConditionalOrExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java
new file mode 100644
index 0000000000..8658bbe0e2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.EqualityExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EqualityExpressionInitialiser extends AbstractInitialiserBase implements IEqualityExpressionInitialiser {
+ @Override
+ public IEqualityExpressionInitialiser newInitialiser() {
+ return new EqualityExpressionInitialiser();
+ }
+
+ @Override
+ public EqualityExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createEqualityExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java
new file mode 100644
index 0000000000..81695281a5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExclusiveOrExpression;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExclusiveOrExpressionInitialiser extends AbstractInitialiserBase
+ implements IExclusiveOrExpressionInitialiser {
+ @Override
+ public IExclusiveOrExpressionInitialiser newInitialiser() {
+ return new ExclusiveOrExpressionInitialiser();
+ }
+
+ @Override
+ public ExclusiveOrExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createExclusiveOrExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java
new file mode 100644
index 0000000000..7de0a674fb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExplicitlyTypedLambdaParametersInitialiser extends AbstractInitialiserBase
+ implements IExplicitlyTypedLambdaParametersInitialiser {
+ @Override
+ public IExplicitlyTypedLambdaParametersInitialiser newInitialiser() {
+ return new ExplicitlyTypedLambdaParametersInitialiser();
+ }
+
+ @Override
+ public ExplicitlyTypedLambdaParameters instantiate() {
+ return ExpressionsFactory.eINSTANCE.createExplicitlyTypedLambdaParameters();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java
new file mode 100644
index 0000000000..26697a7211
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionList;
+import org.emftext.language.java.expressions.ExpressionsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExpressionListInitialiser extends AbstractInitialiserBase implements IExpressionListInitialiser {
+ @Override
+ public IExpressionListInitialiser newInitialiser() {
+ return new ExpressionListInitialiser();
+ }
+
+ @Override
+ public ExpressionList instantiate() {
+ return ExpressionsFactory.eINSTANCE.createExpressionList();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java
new file mode 100644
index 0000000000..73461eb5aa
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java
@@ -0,0 +1,54 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ExpressionsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AdditiveExpressionInitialiser(), new AndExpressionInitialiser(),
+ new ArrayConstructorReferenceExpressionInitialiser(), new AssignmentExpressionInitialiser(),
+ new CastExpressionInitialiser(), new ClassTypeConstructorReferenceExpressionInitialiser(),
+ new ConditionalAndExpressionInitialiser(), new ConditionalExpressionInitialiser(),
+ new ConditionalOrExpressionInitialiser(), new EqualityExpressionInitialiser(),
+ new ExclusiveOrExpressionInitialiser(), new ExplicitlyTypedLambdaParametersInitialiser(),
+ new ExpressionListInitialiser(), new ImplicitlyTypedLambdaParametersInitialiser(),
+ new InclusiveOrExpressionInitialiser(), new InstanceOfExpressionInitialiser(),
+ new LambdaExpressionInitialiser(), new MultiplicativeExpressionInitialiser(),
+ new NestedExpressionInitialiser(), new PrefixUnaryModificationExpressionInitialiser(),
+ new PrimaryExpressionReferenceExpressionInitialiser(), new RelationExpressionInitialiser(),
+ new ShiftExpressionInitialiser(), new SingleImplicitLambdaParameterInitialiser(),
+ new SuffixUnaryModificationExpressionInitialiser(), new UnaryExpressionInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAdditiveExpressionChildInitialiser.class,
+ IAdditiveExpressionInitialiser.class, IAndExpressionChildInitialiser.class,
+ IAndExpressionInitialiser.class, IArrayConstructorReferenceExpressionInitialiser.class,
+ IAssignmentExpressionChildInitialiser.class, IAssignmentExpressionInitialiser.class,
+ ICastExpressionInitialiser.class, IClassTypeConstructorReferenceExpressionInitialiser.class,
+ IConditionalAndExpressionChildInitialiser.class, IConditionalAndExpressionInitialiser.class,
+ IConditionalExpressionChildInitialiser.class, IConditionalExpressionInitialiser.class,
+ IConditionalOrExpressionChildInitialiser.class, IConditionalOrExpressionInitialiser.class,
+ IEqualityExpressionChildInitialiser.class, IEqualityExpressionInitialiser.class,
+ IExclusiveOrExpressionChildInitialiser.class, IExclusiveOrExpressionInitialiser.class,
+ IExplicitlyTypedLambdaParametersInitialiser.class, IExpressionInitialiser.class,
+ IExpressionListInitialiser.class, IImplicitlyTypedLambdaParametersInitialiser.class,
+ IInclusiveOrExpressionChildInitialiser.class, IInclusiveOrExpressionInitialiser.class,
+ IInstanceOfExpressionChildInitialiser.class, IInstanceOfExpressionInitialiser.class,
+ ILambdaBodyInitialiser.class, ILambdaExpressionInitialiser.class, ILambdaParametersInitialiser.class,
+ IMethodReferenceExpressionChildInitialiser.class, IMethodReferenceExpressionInitialiser.class,
+ IMultiplicativeExpressionChildInitialiser.class, IMultiplicativeExpressionInitialiser.class,
+ INestedExpressionInitialiser.class, IPrefixUnaryModificationExpressionInitialiser.class,
+ IPrimaryExpressionInitialiser.class, IPrimaryExpressionReferenceExpressionInitialiser.class,
+ IRelationExpressionChildInitialiser.class, IRelationExpressionInitialiser.class,
+ IShiftExpressionChildInitialiser.class, IShiftExpressionInitialiser.class,
+ ISingleImplicitLambdaParameterInitialiser.class, ISuffixUnaryModificationExpressionInitialiser.class,
+ IUnaryExpressionChildInitialiser.class, IUnaryExpressionInitialiser.class,
+ IUnaryModificationExpressionChildInitialiser.class, IUnaryModificationExpressionInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java
new file mode 100644
index 0000000000..979101f307
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AdditiveExpressionChild;
+
+public interface IAdditiveExpressionChildInitialiser extends IShiftExpressionChildInitialiser {
+ @Override
+ public AdditiveExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java
new file mode 100644
index 0000000000..169acc2732
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AdditiveExpression;
+import org.emftext.language.java.expressions.AdditiveExpressionChild;
+import org.emftext.language.java.operators.AdditiveOperator;
+
+public interface IAdditiveExpressionInitialiser extends IShiftExpressionChildInitialiser {
+ @Override
+ public AdditiveExpression instantiate();
+
+ public default boolean addAdditiveOperator(AdditiveExpression ae, AdditiveOperator op) {
+ if (op != null) {
+ ae.getAdditiveOperators().add(op);
+ return ae.getAdditiveOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addAdditiveOperators(AdditiveExpression ae, AdditiveOperator[] ops) {
+ return this.doMultipleModifications(ae, ops, this::addAdditiveOperator);
+ }
+
+ public default boolean addChild(AdditiveExpression ae, AdditiveExpressionChild child) {
+ if (child != null) {
+ ae.getChildren().add(child);
+ return ae.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(AdditiveExpression ae, AdditiveExpressionChild[] children) {
+ return this.doMultipleModifications(ae, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java
new file mode 100644
index 0000000000..a7343a1151
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AndExpressionChild;
+
+public interface IAndExpressionChildInitialiser extends IExclusiveOrExpressionChildInitialiser {
+ @Override
+ public AndExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java
new file mode 100644
index 0000000000..2b7f69aa32
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AndExpression;
+import org.emftext.language.java.expressions.AndExpressionChild;
+
+public interface IAndExpressionInitialiser extends IExclusiveOrExpressionChildInitialiser {
+ @Override
+ public AndExpression instantiate();
+
+ public default boolean addChild(AndExpression ae, AndExpressionChild child) {
+ if (child != null) {
+ ae.getChildren().add(child);
+ return ae.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(AndExpression ae, AndExpressionChild[] children) {
+ return this.doMultipleModifications(ae, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..8a6367ab26
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ArrayConstructorReferenceExpression;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IArrayConstructorReferenceExpressionInitialiser
+ extends IMethodReferenceExpressionInitialiser, ITypedElementInitialiser {
+ @Override
+ public ArrayConstructorReferenceExpression instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java
new file mode 100644
index 0000000000..1b8e2f5928
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AssignmentExpressionChild;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotationValueInitialiser;
+
+public interface IAssignmentExpressionChildInitialiser extends IAnnotationValueInitialiser, IExpressionInitialiser {
+ @Override
+ public AssignmentExpressionChild instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java
new file mode 100644
index 0000000000..89fbd8b5b5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java
@@ -0,0 +1,26 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AssignmentExpression;
+import org.emftext.language.java.expressions.AssignmentExpressionChild;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.operators.AssignmentOperator;
+
+public interface IAssignmentExpressionInitialiser extends IExpressionInitialiser {
+ @Override
+ public AssignmentExpression instantiate();
+
+ public default boolean setAssignmentOperator(AssignmentExpression ae, AssignmentOperator op) {
+ ae.setAssignmentOperator(op);
+ return (op == null && ae.getAssignmentOperator() == null) || ae.getAssignmentOperator().equals(op);
+ }
+
+ public default boolean setChild(AssignmentExpression ae, AssignmentExpressionChild child) {
+ ae.setChild(child);
+ return (child == null && ae.getChild() == null) || ae.getChild().equals(child);
+ }
+
+ public default boolean setValue(AssignmentExpression ae, Expression val) {
+ ae.setValue(val);
+ return (val == null && ae.getValue() == null) || ae.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java
new file mode 100644
index 0000000000..c77cfb6296
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java
@@ -0,0 +1,49 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.CastExpression;
+import org.emftext.language.java.expressions.MultiplicativeExpressionChild;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * create {@link CastExpression} instances.
+ *
+ * For a {@link CastExpression} instance ce, {@code ce.getChild()} has the same
+ * return value as {@code ce.getGeneralChild()}, it merely returns the child
+ * attribute as {@link Expression} rather than
+ * {@link MultiplicativeExpressionChild}.
+ *
+ * Similarly, {@code ce.setGeneralChild(...)} is equivalent to
+ * {@code ce.setChild(...)}, just with a more general parameter type.
+ *
+ * @author Alp Torac Genc
+ */
+public interface ICastExpressionInitialiser
+ extends ITypedElementInitialiser, IUnaryModificationExpressionChildInitialiser {
+ @Override
+ public CastExpression instantiate();
+
+ public default boolean addAdditionalBound(CastExpression ce, TypeReference additionalBounds) {
+ if (additionalBounds != null) {
+ ce.getAdditionalBounds().add(additionalBounds);
+ return ce.getAdditionalBounds().contains(additionalBounds);
+ }
+ return true;
+ }
+
+ public default boolean addAdditionalBounds(CastExpression ce, TypeReference[] additionalBoundsArr) {
+ return this.doMultipleModifications(ce, additionalBoundsArr, this::addAdditionalBound);
+ }
+
+ /**
+ * Adds the given child to ce. Uses {@code ce.setChild(...)} to do so.
+ *
+ * @see {@link ICastExpressionInitialiser}
+ */
+ public default boolean setChild(CastExpression ce, MultiplicativeExpressionChild child) {
+ ce.setChild(child);
+ return (child == null && ce.getChild() == null) || ce.getChild().equals(child);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..9f3c882f1b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java
@@ -0,0 +1,12 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ClassTypeConstructorReferenceExpression;
+
+import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IClassTypeConstructorReferenceExpressionInitialiser
+ extends ICallTypeArgumentableInitialiser, IMethodReferenceExpressionInitialiser, ITypedElementInitialiser {
+ @Override
+ public ClassTypeConstructorReferenceExpression instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java
new file mode 100644
index 0000000000..3386c67b3e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalAndExpressionChild;
+
+public interface IConditionalAndExpressionChildInitialiser extends IConditionalOrExpressionChildInitialiser {
+ @Override
+ public ConditionalAndExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java
new file mode 100644
index 0000000000..6cfc77f3b1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalAndExpression;
+import org.emftext.language.java.expressions.ConditionalAndExpressionChild;
+
+public interface IConditionalAndExpressionInitialiser extends IConditionalOrExpressionChildInitialiser {
+ @Override
+ public ConditionalAndExpression instantiate();
+
+ public default boolean addChild(ConditionalAndExpression cae, ConditionalAndExpressionChild child) {
+ if (child != null) {
+ cae.getChildren().add(child);
+ return cae.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(ConditionalAndExpression cae, ConditionalAndExpressionChild[] children) {
+ return this.doMultipleModifications(cae, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java
new file mode 100644
index 0000000000..6ae4d3b1cc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalExpressionChild;
+
+public interface IConditionalExpressionChildInitialiser extends IAssignmentExpressionChildInitialiser {
+ @Override
+ public ConditionalExpressionChild instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java
new file mode 100644
index 0000000000..00f51ddb77
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java
@@ -0,0 +1,32 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.AssignmentExpressionChild;
+import org.emftext.language.java.expressions.ConditionalExpression;
+import org.emftext.language.java.expressions.ConditionalExpressionChild;
+import org.emftext.language.java.expressions.Expression;
+
+public interface IConditionalExpressionInitialiser extends IAssignmentExpressionChildInitialiser {
+ @Override
+ public ConditionalExpression instantiate();
+
+ public default boolean setChild(ConditionalExpression ce, ConditionalExpressionChild child) {
+ ce.setChild(child);
+ return (child == null && ce.getChild() == null) || ce.getChild().equals(child);
+ }
+
+ public default boolean setExpressionChild(ConditionalExpression ce, AssignmentExpressionChild exprChild) {
+ ce.setExpressionChild(exprChild);
+ return (exprChild == null && ce.getExpressionElse() == null) || ce.getExpressionElse().equals(exprChild);
+ }
+
+ public default boolean setExpressionIf(ConditionalExpression ce, Expression exprIf) {
+ ce.setExpressionIf(exprIf);
+ return (exprIf == null && ce.getExpressionIf() == null) || ce.getExpressionIf().equals(exprIf);
+ }
+
+ public default boolean setGeneralExpressionElse(ConditionalExpression ce, Expression generalExprElse) {
+ ce.setGeneralExpressionElse(generalExprElse);
+ return (generalExprElse == null && ce.getGeneralExpressionElse() == null)
+ || ce.getGeneralExpressionElse().equals(generalExprElse);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java
new file mode 100644
index 0000000000..52c8f44f9d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalOrExpressionChild;
+
+public interface IConditionalOrExpressionChildInitialiser extends IConditionalExpressionChildInitialiser {
+ @Override
+ public ConditionalOrExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java
new file mode 100644
index 0000000000..fd5400d256
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ConditionalOrExpression;
+import org.emftext.language.java.expressions.ConditionalOrExpressionChild;
+
+public interface IConditionalOrExpressionInitialiser extends IConditionalExpressionChildInitialiser {
+ @Override
+ public ConditionalOrExpression instantiate();
+
+ public default boolean addChild(ConditionalOrExpression coe, ConditionalOrExpressionChild child) {
+ if (child != null) {
+ coe.getChildren().add(child);
+ return coe.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(ConditionalOrExpression coe, ConditionalOrExpressionChild[] children) {
+ return this.doMultipleModifications(coe, children, this::addChild);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java
new file mode 100644
index 0000000000..783d40ebf0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.EqualityExpressionChild;
+
+public interface IEqualityExpressionChildInitialiser extends IAndExpressionChildInitialiser {
+ @Override
+ public EqualityExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java
new file mode 100644
index 0000000000..f71c43da54
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.EqualityExpression;
+import org.emftext.language.java.expressions.EqualityExpressionChild;
+import org.emftext.language.java.operators.EqualityOperator;
+
+public interface IEqualityExpressionInitialiser extends IAndExpressionChildInitialiser {
+ @Override
+ public EqualityExpression instantiate();
+
+ public default boolean addEqualityOperator(EqualityExpression eqEx, EqualityOperator op) {
+ if (op != null) {
+ eqEx.getEqualityOperators().add(op);
+ return eqEx.getEqualityOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addChild(EqualityExpression eqEx, EqualityExpressionChild child) {
+ if (child != null) {
+ eqEx.getChildren().add(child);
+ return eqEx.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addEqualityOperators(EqualityExpression eqEx, EqualityOperator[] ops) {
+ return this.doMultipleModifications(eqEx, ops, this::addEqualityOperator);
+ }
+
+ public default boolean addChildren(EqualityExpression eqEx, EqualityExpressionChild[] children) {
+ return this.doMultipleModifications(eqEx, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java
new file mode 100644
index 0000000000..08415382a9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExclusiveOrExpressionChild;
+
+public interface IExclusiveOrExpressionChildInitialiser extends IInclusiveOrExpressionChildInitialiser {
+ @Override
+ public ExclusiveOrExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java
new file mode 100644
index 0000000000..98fde0fdeb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExclusiveOrExpression;
+import org.emftext.language.java.expressions.ExclusiveOrExpressionChild;
+
+public interface IExclusiveOrExpressionInitialiser extends IInclusiveOrExpressionChildInitialiser {
+ @Override
+ public ExclusiveOrExpression instantiate();
+
+ public default boolean addChild(ExclusiveOrExpression eoe, ExclusiveOrExpressionChild child) {
+ if (child != null) {
+ eoe.getChildren().add(child);
+ return eoe.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(ExclusiveOrExpression eoe, ExclusiveOrExpressionChild[] children) {
+ return this.doMultipleModifications(eoe, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java
new file mode 100644
index 0000000000..34f21301c2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters;
+
+public interface IExplicitlyTypedLambdaParametersInitialiser extends ILambdaParametersInitialiser {
+ @Override
+ public ExplicitlyTypedLambdaParameters instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java
new file mode 100644
index 0000000000..d9e72faf47
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.Expression;
+
+import cipm.consistency.initialisers.jamopp.arrays.IArrayInitializationValueInitialiser;
+
+public interface IExpressionInitialiser extends IArrayInitializationValueInitialiser, ILambdaBodyInitialiser {
+ @Override
+ public Expression instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java
new file mode 100644
index 0000000000..cc94f34132
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.ExpressionList;
+
+import cipm.consistency.initialisers.jamopp.statements.IForLoopInitializerInitialiser;
+
+public interface IExpressionListInitialiser extends IForLoopInitializerInitialiser {
+ @Override
+ public ExpressionList instantiate();
+
+ public default boolean addExpression(ExpressionList exprList, Expression expr) {
+ if (expr != null) {
+ exprList.getExpressions().add(expr);
+ return exprList.getExpressions().contains(expr);
+ }
+ return true;
+ }
+
+ public default boolean addExpressions(ExpressionList exprList, Expression[] exprs) {
+ return this.doMultipleModifications(exprList, exprs, this::addExpression);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java
new file mode 100644
index 0000000000..83f877410a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters;
+
+public interface IImplicitlyTypedLambdaParametersInitialiser extends ILambdaParametersInitialiser {
+ @Override
+ public ImplicitlyTypedLambdaParameters instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java
new file mode 100644
index 0000000000..934a69644e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.InclusiveOrExpressionChild;
+
+public interface IInclusiveOrExpressionChildInitialiser extends IConditionalAndExpressionChildInitialiser {
+ @Override
+ public InclusiveOrExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java
new file mode 100644
index 0000000000..6158dbd89f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.InclusiveOrExpression;
+import org.emftext.language.java.expressions.InclusiveOrExpressionChild;
+
+public interface IInclusiveOrExpressionInitialiser extends IConditionalAndExpressionChildInitialiser {
+ @Override
+ public InclusiveOrExpression instantiate();
+
+ public default boolean addChild(InclusiveOrExpression ioe, InclusiveOrExpressionChild child) {
+ if (child != null) {
+ ioe.getChildren().add(child);
+ return ioe.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(InclusiveOrExpression ioe, InclusiveOrExpressionChild[] children) {
+ return this.doMultipleModifications(ioe, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java
new file mode 100644
index 0000000000..dbeb44c250
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.InstanceOfExpressionChild;
+
+public interface IInstanceOfExpressionChildInitialiser extends IEqualityExpressionChildInitialiser {
+ @Override
+ public InstanceOfExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java
new file mode 100644
index 0000000000..d6fd448497
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java
@@ -0,0 +1,17 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.InstanceOfExpression;
+import org.emftext.language.java.expressions.InstanceOfExpressionChild;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IInstanceOfExpressionInitialiser
+ extends IEqualityExpressionChildInitialiser, ITypedElementInitialiser {
+ @Override
+ public InstanceOfExpression instantiate();
+
+ public default boolean setChild(InstanceOfExpression ioe, InstanceOfExpressionChild child) {
+ ioe.setChild(child);
+ return (child == null && ioe.getChild() == null) || ioe.getChild().equals(child);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java
new file mode 100644
index 0000000000..d7498f5c9a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.LambdaBody;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ILambdaBodyInitialiser extends ICommentableInitialiser {
+ @Override
+ public LambdaBody instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java
new file mode 100644
index 0000000000..a055acaef7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.LambdaBody;
+import org.emftext.language.java.expressions.LambdaExpression;
+import org.emftext.language.java.expressions.LambdaParameters;
+
+public interface ILambdaExpressionInitialiser extends IExpressionInitialiser {
+ @Override
+ public LambdaExpression instantiate();
+
+ public default boolean setBody(LambdaExpression le, LambdaBody body) {
+ le.setBody(body);
+ return (body == null && le.getBody() == null) || le.getBody().equals(body);
+ }
+
+ public default boolean setParameters(LambdaExpression le, LambdaParameters param) {
+ le.setParameters(param);
+ return (param == null && le.getParameters() == null) || le.getParameters().equals(param);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java
new file mode 100644
index 0000000000..fc78f7336d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.LambdaParameters;
+
+import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser;
+
+public interface ILambdaParametersInitialiser extends IParametrizableInitialiser {
+ @Override
+ public LambdaParameters instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java
new file mode 100644
index 0000000000..ebd83fc9a2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.MethodReferenceExpressionChild;
+
+public interface IMethodReferenceExpressionChildInitialiser extends IUnaryModificationExpressionChildInitialiser {
+ @Override
+ public MethodReferenceExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..73bb7aaca3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.MethodReferenceExpression;
+
+public interface IMethodReferenceExpressionInitialiser extends IUnaryModificationExpressionChildInitialiser {
+ @Override
+ public MethodReferenceExpression instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java
new file mode 100644
index 0000000000..1373fe3155
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.MultiplicativeExpressionChild;
+
+public interface IMultiplicativeExpressionChildInitialiser extends IAdditiveExpressionChildInitialiser {
+ @Override
+ public MultiplicativeExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java
new file mode 100644
index 0000000000..c0e1270feb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.MultiplicativeExpression;
+import org.emftext.language.java.expressions.MultiplicativeExpressionChild;
+import org.emftext.language.java.operators.MultiplicativeOperator;
+
+public interface IMultiplicativeExpressionInitialiser extends IAdditiveExpressionChildInitialiser {
+ @Override
+ public MultiplicativeExpression instantiate();
+
+ public default boolean addMultiplicativeOperator(MultiplicativeExpression ae, MultiplicativeOperator op) {
+ if (op != null) {
+ ae.getMultiplicativeOperators().add(op);
+ return ae.getMultiplicativeOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addMultiplicativeOperators(MultiplicativeExpression ae, MultiplicativeOperator[] ops) {
+ return this.doMultipleModifications(ae, ops, this::addMultiplicativeOperator);
+ }
+
+ public default boolean addChild(MultiplicativeExpression ae, MultiplicativeExpressionChild child) {
+ if (child != null) {
+ ae.getChildren().add(child);
+ return ae.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(MultiplicativeExpression ae, MultiplicativeExpressionChild[] children) {
+ return this.doMultipleModifications(ae, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java
new file mode 100644
index 0000000000..20f759c777
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.expressions.NestedExpression;
+
+import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser;
+
+public interface INestedExpressionInitialiser extends IReferenceInitialiser {
+ @Override
+ public NestedExpression instantiate();
+
+ public default boolean setExpression(NestedExpression ne, Expression expr) {
+ ne.setExpression(expr);
+ return (expr == null && ne.getExpression() == null) || ne.getExpression().equals(expr);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java
new file mode 100644
index 0000000000..2cb783c114
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.PrefixUnaryModificationExpression;
+
+public interface IPrefixUnaryModificationExpressionInitialiser extends IUnaryModificationExpressionInitialiser {
+ @Override
+ public PrefixUnaryModificationExpression instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java
new file mode 100644
index 0000000000..1ec6a0d9fb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.PrimaryExpression;
+
+public interface IPrimaryExpressionInitialiser extends IMethodReferenceExpressionChildInitialiser {
+ @Override
+ public PrimaryExpression instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..03cd0b9e8a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.MethodReferenceExpressionChild;
+import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression;
+import org.emftext.language.java.references.Reference;
+
+import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser;
+
+public interface IPrimaryExpressionReferenceExpressionInitialiser
+ extends ICallTypeArgumentableInitialiser, IMethodReferenceExpressionInitialiser {
+ @Override
+ public PrimaryExpressionReferenceExpression instantiate();
+
+ public default boolean setChild(PrimaryExpressionReferenceExpression pere, MethodReferenceExpressionChild mrec) {
+ pere.setChild(mrec);
+ return (mrec == null && pere.getChild() == null) || pere.getChild().equals(mrec);
+ }
+
+ public default boolean setMethodReference(PrimaryExpressionReferenceExpression pere, Reference metRef) {
+ pere.setMethodReference(metRef);
+ return (metRef == null && pere.getMethodReference() == null) || pere.getMethodReference().equals(metRef);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java
new file mode 100644
index 0000000000..51ce44e741
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.RelationExpressionChild;
+
+public interface IRelationExpressionChildInitialiser extends IInstanceOfExpressionChildInitialiser {
+ @Override
+ public RelationExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java
new file mode 100644
index 0000000000..78c8870353
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.RelationExpression;
+import org.emftext.language.java.expressions.RelationExpressionChild;
+import org.emftext.language.java.operators.RelationOperator;
+
+public interface IRelationExpressionInitialiser extends IInstanceOfExpressionChildInitialiser {
+ @Override
+ public RelationExpression instantiate();
+
+ public default boolean addRelationOperator(RelationExpression re, RelationOperator op) {
+ if (op != null) {
+ re.getRelationOperators().add(op);
+ return re.getRelationOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addRelationOperators(RelationExpression re, RelationOperator[] ops) {
+ return this.doMultipleModifications(re, ops, this::addRelationOperator);
+ }
+
+ public default boolean addChild(RelationExpression cae, RelationExpressionChild child) {
+ if (child != null) {
+ cae.getChildren().add(child);
+ return cae.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(RelationExpression cae, RelationExpressionChild[] children) {
+ return this.doMultipleModifications(cae, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java
new file mode 100644
index 0000000000..bef581a0b2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ShiftExpressionChild;
+
+public interface IShiftExpressionChildInitialiser extends IRelationExpressionChildInitialiser {
+ @Override
+ public ShiftExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java
new file mode 100644
index 0000000000..c27fc8225b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ShiftExpression;
+import org.emftext.language.java.expressions.ShiftExpressionChild;
+import org.emftext.language.java.operators.ShiftOperator;
+
+public interface IShiftExpressionInitialiser extends IRelationExpressionChildInitialiser {
+ @Override
+ public ShiftExpression instantiate();
+
+ public default boolean addShiftOperator(ShiftExpression se, ShiftOperator op) {
+ if (op != null) {
+ se.getShiftOperators().add(op);
+ return se.getShiftOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addShiftOperators(ShiftExpression se, ShiftOperator[] ops) {
+ return this.doMultipleModifications(se, ops, this::addShiftOperator);
+ }
+
+ public default boolean addChild(ShiftExpression se, ShiftExpressionChild child) {
+ if (child != null) {
+ se.getChildren().add(child);
+ return se.getChildren().contains(child);
+ }
+ return true;
+ }
+
+ public default boolean addChildren(ShiftExpression se, ShiftExpressionChild[] children) {
+ return this.doMultipleModifications(se, children, this::addChild);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java
new file mode 100644
index 0000000000..0a42080df4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.SingleImplicitLambdaParameter;
+
+public interface ISingleImplicitLambdaParameterInitialiser extends IImplicitlyTypedLambdaParametersInitialiser {
+ @Override
+ public SingleImplicitLambdaParameter instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java
new file mode 100644
index 0000000000..6cf7f829f2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.SuffixUnaryModificationExpression;
+
+public interface ISuffixUnaryModificationExpressionInitialiser extends IUnaryModificationExpressionInitialiser {
+ @Override
+ public SuffixUnaryModificationExpression instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java
new file mode 100644
index 0000000000..08dc42d671
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.UnaryExpressionChild;
+
+public interface IUnaryExpressionChildInitialiser extends IMultiplicativeExpressionChildInitialiser {
+ @Override
+ public UnaryExpressionChild instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java
new file mode 100644
index 0000000000..ec57e30f85
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java
@@ -0,0 +1,27 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.UnaryExpression;
+import org.emftext.language.java.expressions.UnaryExpressionChild;
+import org.emftext.language.java.operators.UnaryOperator;
+
+public interface IUnaryExpressionInitialiser extends IMultiplicativeExpressionChildInitialiser {
+ @Override
+ public UnaryExpression instantiate();
+
+ public default boolean addOperator(UnaryExpression ue, UnaryOperator op) {
+ if (op != null) {
+ ue.getOperators().add(op);
+ return ue.getOperators().contains(op);
+ }
+ return true;
+ }
+
+ public default boolean addOperators(UnaryExpression ue, UnaryOperator[] ops) {
+ return this.doMultipleModifications(ue, ops, this::addOperator);
+ }
+
+ public default boolean setChild(UnaryExpression ue, UnaryExpressionChild child) {
+ ue.setChild(child);
+ return (child == null && ue.getChild() == null) || ue.getChild().equals(child);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java
new file mode 100644
index 0000000000..0c7bbee94f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.UnaryModificationExpressionChild;
+
+public interface IUnaryModificationExpressionChildInitialiser extends IUnaryExpressionChildInitialiser {
+ @Override
+ public UnaryModificationExpressionChild instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java
new file mode 100644
index 0000000000..913501f924
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.UnaryModificationExpression;
+import org.emftext.language.java.expressions.UnaryModificationExpressionChild;
+import org.emftext.language.java.operators.UnaryModificationOperator;
+
+public interface IUnaryModificationExpressionInitialiser extends IUnaryExpressionChildInitialiser {
+ @Override
+ public UnaryModificationExpression instantiate();
+
+ public default boolean setChild(UnaryModificationExpression ume, UnaryModificationExpressionChild child) {
+ ume.setChild(child);
+ return (child == null && ume.getChild() == null) || ume.getChild().equals(child);
+ }
+
+ public default boolean setOperator(UnaryModificationExpression ume, UnaryModificationOperator op) {
+ ume.setOperator(op);
+ return (op == null && ume.getOperator() == null) || ume.getOperator().equals(op);
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java
new file mode 100644
index 0000000000..3fbe2cbada
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ImplicitlyTypedLambdaParametersInitialiser extends AbstractInitialiserBase
+ implements IImplicitlyTypedLambdaParametersInitialiser {
+ @Override
+ public IImplicitlyTypedLambdaParametersInitialiser newInitialiser() {
+ return new ImplicitlyTypedLambdaParametersInitialiser();
+ }
+
+ @Override
+ public ImplicitlyTypedLambdaParameters instantiate() {
+ return ExpressionsFactory.eINSTANCE.createImplicitlyTypedLambdaParameters();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java
new file mode 100644
index 0000000000..2d6381b150
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.InclusiveOrExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class InclusiveOrExpressionInitialiser extends AbstractInitialiserBase
+ implements IInclusiveOrExpressionInitialiser {
+ @Override
+ public IInclusiveOrExpressionInitialiser newInitialiser() {
+ return new InclusiveOrExpressionInitialiser();
+ }
+
+ @Override
+ public InclusiveOrExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createInclusiveOrExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java
new file mode 100644
index 0000000000..a1869c8e97
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.InstanceOfExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class InstanceOfExpressionInitialiser extends AbstractInitialiserBase
+ implements IInstanceOfExpressionInitialiser {
+ @Override
+ public IInstanceOfExpressionInitialiser newInitialiser() {
+ return new InstanceOfExpressionInitialiser();
+ }
+
+ @Override
+ public InstanceOfExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createInstanceOfExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java
new file mode 100644
index 0000000000..7da443c16e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.LambdaExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LambdaExpressionInitialiser extends AbstractInitialiserBase implements ILambdaExpressionInitialiser {
+
+ @Override
+ public ILambdaExpressionInitialiser newInitialiser() {
+ return new LambdaExpressionInitialiser();
+ }
+
+ @Override
+ public LambdaExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createLambdaExpression();
+ }
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java
new file mode 100644
index 0000000000..d0b8a5bc30
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.MultiplicativeExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class MultiplicativeExpressionInitialiser extends AbstractInitialiserBase
+ implements IMultiplicativeExpressionInitialiser {
+ @Override
+ public IMultiplicativeExpressionInitialiser newInitialiser() {
+ return new MultiplicativeExpressionInitialiser();
+ }
+
+ @Override
+ public MultiplicativeExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createMultiplicativeExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java
new file mode 100644
index 0000000000..3dab5684bf
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.NestedExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NestedExpressionInitialiser extends AbstractInitialiserBase implements INestedExpressionInitialiser {
+ @Override
+ public INestedExpressionInitialiser newInitialiser() {
+ return new NestedExpressionInitialiser();
+ }
+
+ @Override
+ public NestedExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createNestedExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java
new file mode 100644
index 0000000000..091028a319
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.PrefixUnaryModificationExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PrefixUnaryModificationExpressionInitialiser extends AbstractInitialiserBase
+ implements IPrefixUnaryModificationExpressionInitialiser {
+ @Override
+ public IPrefixUnaryModificationExpressionInitialiser newInitialiser() {
+ return new PrefixUnaryModificationExpressionInitialiser();
+ }
+
+ @Override
+ public PrefixUnaryModificationExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createPrefixUnaryModificationExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java
new file mode 100644
index 0000000000..bc959ae2c0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PrimaryExpressionReferenceExpressionInitialiser extends AbstractInitialiserBase
+ implements IPrimaryExpressionReferenceExpressionInitialiser {
+ @Override
+ public IPrimaryExpressionReferenceExpressionInitialiser newInitialiser() {
+ return new PrimaryExpressionReferenceExpressionInitialiser();
+ }
+
+ @Override
+ public PrimaryExpressionReferenceExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createPrimaryExpressionReferenceExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java
new file mode 100644
index 0000000000..d2e56f1c7b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.RelationExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class RelationExpressionInitialiser extends AbstractInitialiserBase implements IRelationExpressionInitialiser {
+ @Override
+ public IRelationExpressionInitialiser newInitialiser() {
+ return new RelationExpressionInitialiser();
+ }
+
+ @Override
+ public RelationExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createRelationExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java
new file mode 100644
index 0000000000..561f3365ae
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.ShiftExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ShiftExpressionInitialiser extends AbstractInitialiserBase implements IShiftExpressionInitialiser {
+ @Override
+ public IShiftExpressionInitialiser newInitialiser() {
+ return new ShiftExpressionInitialiser();
+ }
+
+ @Override
+ public ShiftExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createShiftExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java
new file mode 100644
index 0000000000..dc24929276
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.SingleImplicitLambdaParameter;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SingleImplicitLambdaParameterInitialiser extends AbstractInitialiserBase
+ implements ISingleImplicitLambdaParameterInitialiser {
+ @Override
+ public ISingleImplicitLambdaParameterInitialiser newInitialiser() {
+ return new SingleImplicitLambdaParameterInitialiser();
+ }
+
+ @Override
+ public SingleImplicitLambdaParameter instantiate() {
+ return ExpressionsFactory.eINSTANCE.createSingleImplicitLambdaParameter();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java
new file mode 100644
index 0000000000..bee3478537
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.SuffixUnaryModificationExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SuffixUnaryModificationExpressionInitialiser extends AbstractInitialiserBase
+ implements ISuffixUnaryModificationExpressionInitialiser {
+ @Override
+ public ISuffixUnaryModificationExpressionInitialiser newInitialiser() {
+ return new SuffixUnaryModificationExpressionInitialiser();
+ }
+
+ @Override
+ public SuffixUnaryModificationExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createSuffixUnaryModificationExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java
new file mode 100644
index 0000000000..1bda0b4eb3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.expressions;
+
+import org.emftext.language.java.expressions.ExpressionsFactory;
+import org.emftext.language.java.expressions.UnaryExpression;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class UnaryExpressionInitialiser extends AbstractInitialiserBase implements IUnaryExpressionInitialiser {
+ @Override
+ public IUnaryExpressionInitialiser newInitialiser() {
+ return new UnaryExpressionInitialiser();
+ }
+
+ @Override
+ public UnaryExpression instantiate() {
+ return ExpressionsFactory.eINSTANCE.createUnaryExpression();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java
new file mode 100644
index 0000000000..7ad2105963
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.expressions}.
+ */
+package cipm.consistency.initialisers.jamopp.expressions;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..9d651b1c41
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.ExtendsTypeArgument;
+import org.emftext.language.java.generics.GenericsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExtendsTypeArgumentInitialiser extends AbstractInitialiserBase implements IExtendsTypeArgumentInitialiser {
+ @Override
+ public IExtendsTypeArgumentInitialiser newInitialiser() {
+ return new ExtendsTypeArgumentInitialiser();
+ }
+
+ @Override
+ public ExtendsTypeArgument instantiate() {
+ return GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java
new file mode 100644
index 0000000000..aee7de7ad0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class GenericsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new ExtendsTypeArgumentInitialiser(),
+ new QualifiedTypeArgumentInitialiser(), new SuperTypeArgumentInitialiser(),
+ new TypeParameterInitialiser(), new UnknownTypeArgumentInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { ICallTypeArgumentableInitialiser.class, IExtendsTypeArgumentInitialiser.class,
+ IQualifiedTypeArgumentInitialiser.class, ISuperTypeArgumentInitialiser.class,
+ ITypeArgumentableInitialiser.class, ITypeArgumentInitialiser.class, ITypeParameterInitialiser.class,
+ ITypeParametrizableInitialiser.class, IUnknownTypeArgumentInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java
new file mode 100644
index 0000000000..fec3a9d20b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.CallTypeArgumentable;
+import org.emftext.language.java.generics.TypeArgument;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ICallTypeArgumentableInitialiser extends ICommentableInitialiser {
+ @Override
+ public CallTypeArgumentable instantiate();
+
+ public default boolean addCallTypeArgument(CallTypeArgumentable cta, TypeArgument callTypeArg) {
+ if (callTypeArg != null) {
+ cta.getCallTypeArguments().add(callTypeArg);
+ return cta.getCallTypeArguments().contains(callTypeArg);
+ }
+ return true;
+ }
+
+ public default boolean addCallTypeArguments(CallTypeArgumentable cta, TypeArgument[] callTypeArgs) {
+ return this.doMultipleModifications(cta, callTypeArgs, this::addCallTypeArgument);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..7c985fc808
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java
@@ -0,0 +1,32 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.ExtendsTypeArgument;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * create {@link ExtendsTypeArgument} instances.
+ *
+ * For an {@link ExtendsTypeArgument} instance eta,
+ * {@code eta.getExtendTypes().add(...)} does not modify eta.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IExtendsTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser {
+ @Override
+ public ExtendsTypeArgument instantiate();
+
+ /**
+ * Sets the extend type of the given {@link ExtendsTypeArgument} to extType.
+ * Uses {@code eta.setExtendType(...)} to do so.
+ *
+ * @see {@link IExtendsTypeArgumentInitialiser}
+ */
+ public default boolean setExtendType(ExtendsTypeArgument eta, TypeReference extType) {
+ eta.setExtendType(extType);
+ return (extType == null && eta.getExtendType() == null)
+ || eta.getExtendType().equals(extType) && eta.getExtendTypes().contains(extType);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..f913899c9b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.QualifiedTypeArgument;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IQualifiedTypeArgumentInitialiser extends ITypeArgumentInitialiser, ITypedElementInitialiser {
+ @Override
+ public QualifiedTypeArgument instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..9ba6065db6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.SuperTypeArgument;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+public interface ISuperTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser {
+ @Override
+ public SuperTypeArgument instantiate();
+
+ public default boolean setSuperType(SuperTypeArgument sta, TypeReference superType) {
+ sta.setSuperType(superType);
+ return (superType == null && sta.getSuperType() == null) || sta.getSuperType().equals(superType);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java
new file mode 100644
index 0000000000..136509941b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.TypeArgument;
+
+import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser;
+
+public interface ITypeArgumentInitialiser extends IArrayTypeableInitialiser {
+ @Override
+ public TypeArgument instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java
new file mode 100644
index 0000000000..bd4a733d06
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.TypeArgument;
+import org.emftext.language.java.generics.TypeArgumentable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ITypeArgumentableInitialiser extends ICommentableInitialiser {
+ @Override
+ public TypeArgumentable instantiate();
+
+ public default boolean addTypeArgument(TypeArgumentable ta, TypeArgument tArg) {
+ if (tArg != null) {
+ ta.getTypeArguments().add(tArg);
+ return ta.getTypeArguments().contains(tArg);
+ }
+ return true;
+ }
+
+ public default boolean addTypeArguments(TypeArgumentable ta, TypeArgument[] tArgs) {
+ return this.doMultipleModifications(ta, tArgs, this::addTypeArgument);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java
new file mode 100644
index 0000000000..6663b9cc2e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java
@@ -0,0 +1,60 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.generics.TypeParameter;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link TypeParameter} instances.
+ *
+ * Note: {@link TypeParameter} cannot add imports to its container, so
+ * attempting to add imports to it has no effect. This is caused by the
+ * inconsistency in the {@link Classifier} sub-hierarchy.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public interface ITypeParameterInitialiser extends IClassifierInitialiser, IAnnotableInitialiser {
+ @Override
+ public TypeParameter instantiate();
+
+ public default boolean addExtendType(TypeParameter tp, TypeReference extType) {
+ if (extType != null) {
+ tp.getExtendTypes().add(extType);
+ return tp.getExtendTypes().contains(extType);
+ }
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return Returns false in case of {@link TypeParameter}.
+ *
+ * @see {@link ITypeParameterInitialiser}
+ */
+ @Override
+ public default boolean canAddImports(Classifier cls) {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @return Returns false in case of {@link TypeParameter}.
+ *
+ * @see {@link ITypeParameterInitialiser}
+ */
+ @Override
+ public default boolean canAddPackageImports(Classifier cls) {
+ return false;
+ }
+
+ public default boolean addExtendTypes(TypeParameter tp, TypeReference[] extTypes) {
+ return this.doMultipleModifications(tp, extTypes, this::addExtendType);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java
new file mode 100644
index 0000000000..b7368a9e94
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.TypeParameter;
+import org.emftext.language.java.generics.TypeParametrizable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ITypeParametrizableInitialiser extends ICommentableInitialiser {
+ @Override
+ public TypeParametrizable instantiate();
+
+ public default boolean addTypeParameter(TypeParametrizable tp, TypeParameter typeParam) {
+ if (typeParam != null) {
+ tp.getTypeParameters().add(typeParam);
+ return tp.getTypeParameters().contains(typeParam);
+ }
+ return true;
+ }
+
+ public default boolean addTypeParameters(TypeParametrizable tp, TypeParameter[] typeParams) {
+ return this.doMultipleModifications(tp, typeParams, this::addTypeParameter);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..12478c656b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.UnknownTypeArgument;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+public interface IUnknownTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser {
+ @Override
+ public UnknownTypeArgument instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..ad032fa859
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.GenericsFactory;
+import org.emftext.language.java.generics.QualifiedTypeArgument;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class QualifiedTypeArgumentInitialiser extends AbstractInitialiserBase
+ implements IQualifiedTypeArgumentInitialiser {
+ @Override
+ public IQualifiedTypeArgumentInitialiser newInitialiser() {
+ return new QualifiedTypeArgumentInitialiser();
+ }
+
+ @Override
+ public QualifiedTypeArgument instantiate() {
+ return GenericsFactory.eINSTANCE.createQualifiedTypeArgument();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..c5f10edc64
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.GenericsFactory;
+import org.emftext.language.java.generics.SuperTypeArgument;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SuperTypeArgumentInitialiser extends AbstractInitialiserBase implements ISuperTypeArgumentInitialiser {
+ @Override
+ public ISuperTypeArgumentInitialiser newInitialiser() {
+ return new SuperTypeArgumentInitialiser();
+ }
+
+ @Override
+ public SuperTypeArgument instantiate() {
+ return GenericsFactory.eINSTANCE.createSuperTypeArgument();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java
new file mode 100644
index 0000000000..482d894d90
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.TypeParameter;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.generics.GenericsFactory;
+
+public class TypeParameterInitialiser extends AbstractInitialiserBase implements ITypeParameterInitialiser {
+ @Override
+ public TypeParameter instantiate() {
+ return GenericsFactory.eINSTANCE.createTypeParameter();
+ }
+
+ @Override
+ public ITypeParameterInitialiser newInitialiser() {
+ return new TypeParameterInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java
new file mode 100644
index 0000000000..f662c6676e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.generics;
+
+import org.emftext.language.java.generics.GenericsFactory;
+import org.emftext.language.java.generics.UnknownTypeArgument;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class UnknownTypeArgumentInitialiser extends AbstractInitialiserBase implements IUnknownTypeArgumentInitialiser {
+ @Override
+ public IUnknownTypeArgumentInitialiser newInitialiser() {
+ return new UnknownTypeArgumentInitialiser();
+ }
+
+ @Override
+ public UnknownTypeArgument instantiate() {
+ return GenericsFactory.eINSTANCE.createUnknownTypeArgument();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java
new file mode 100644
index 0000000000..7d369e81bd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.generics}.
+ */
+package cipm.consistency.initialisers.jamopp.generics;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java
new file mode 100644
index 0000000000..b50a83041b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.ClassifierImport;
+import org.emftext.language.java.imports.ImportsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ClassifierImportInitialiser extends AbstractInitialiserBase implements IClassifierImportInitialiser {
+ @Override
+ public IClassifierImportInitialiser newInitialiser() {
+ return new ClassifierImportInitialiser();
+ }
+
+ @Override
+ public ClassifierImport instantiate() {
+ return ImportsFactory.eINSTANCE.createClassifierImport();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java
new file mode 100644
index 0000000000..d340c1d59e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.ClassifierImport;
+
+public interface IClassifierImportInitialiser extends IImportInitialiser {
+ @Override
+ public ClassifierImport instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java
new file mode 100644
index 0000000000..96599398cb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.imports.Import;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface IImportInitialiser extends INamespaceAwareElementInitialiser {
+ @Override
+ public Import instantiate();
+
+ public default boolean setClassifier(Import imp, ConcreteClassifier cls) {
+ imp.setClassifier(cls);
+ return (cls == null && imp.getClassifier() == null) || imp.getClassifier().equals(cls);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java
new file mode 100644
index 0000000000..d697652b01
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.Import;
+import org.emftext.language.java.imports.ImportingElement;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IImportingElementInitialiser extends ICommentableInitialiser {
+ @Override
+ public ImportingElement instantiate();
+
+ public default boolean addImport(ImportingElement ie, Import imp) {
+ if (imp != null) {
+ ie.getImports().add(imp);
+ return ie.getImports().contains(imp);
+ }
+ return true;
+ }
+
+ public default boolean addImports(ImportingElement ie, Import[] imps) {
+ return this.doMultipleModifications(ie, imps, this::addImport);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java
new file mode 100644
index 0000000000..fe4e5b6a4f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.PackageImport;
+
+public interface IPackageImportInitialiser extends IImportInitialiser {
+ @Override
+ public PackageImport instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java
new file mode 100644
index 0000000000..c5a95ed255
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.StaticClassifierImport;
+
+public interface IStaticClassifierImportInitialiser extends IStaticImportInitialiser {
+ @Override
+ public StaticClassifierImport instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java
new file mode 100644
index 0000000000..23db2c82d7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.StaticImport;
+import org.emftext.language.java.modifiers.Static;
+
+public interface IStaticImportInitialiser extends IImportInitialiser {
+ @Override
+ public StaticImport instantiate();
+
+ public default boolean setStatic(StaticImport sImp, Static st) {
+ sImp.setStatic(st);
+ return (st == null && sImp.getStatic() == null) || sImp.getStatic().equals(st);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java
new file mode 100644
index 0000000000..79c1552ecc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.StaticMemberImport;
+import org.emftext.language.java.references.ReferenceableElement;
+
+public interface IStaticMemberImportInitialiser extends IStaticImportInitialiser {
+ @Override
+ public StaticMemberImport instantiate();
+
+ public default boolean addStaticMember(StaticMemberImport smi, ReferenceableElement staticMem) {
+ if (staticMem != null) {
+ smi.getStaticMembers().add(staticMem);
+ return smi.getStaticMembers().contains(staticMem);
+ }
+ return true;
+ }
+
+ public default boolean addStaticMembers(StaticMemberImport smi, ReferenceableElement[] staticMems) {
+ return this.doMultipleModifications(smi, staticMems, this::addStaticMember);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java
new file mode 100644
index 0000000000..c40c859db8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ImportsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new ClassifierImportInitialiser(), new PackageImportInitialiser(),
+ new StaticClassifierImportInitialiser(), new StaticMemberImportInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IClassifierImportInitialiser.class, IImportingElementInitialiser.class,
+ IImportInitialiser.class, IPackageImportInitialiser.class, IStaticClassifierImportInitialiser.class,
+ IStaticImportInitialiser.class, IStaticMemberImportInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java
new file mode 100644
index 0000000000..7ede42f682
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.ImportsFactory;
+import org.emftext.language.java.imports.PackageImport;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PackageImportInitialiser extends AbstractInitialiserBase implements IPackageImportInitialiser {
+ @Override
+ public IPackageImportInitialiser newInitialiser() {
+ return new PackageImportInitialiser();
+ }
+
+ @Override
+ public PackageImport instantiate() {
+ return ImportsFactory.eINSTANCE.createPackageImport();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java
new file mode 100644
index 0000000000..f6fde342c4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.ImportsFactory;
+import org.emftext.language.java.imports.StaticClassifierImport;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class StaticClassifierImportInitialiser extends AbstractInitialiserBase
+ implements IStaticClassifierImportInitialiser {
+ @Override
+ public IStaticClassifierImportInitialiser newInitialiser() {
+ return new StaticClassifierImportInitialiser();
+ }
+
+ @Override
+ public StaticClassifierImport instantiate() {
+ return ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java
new file mode 100644
index 0000000000..4fb7c7ef7a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.imports;
+
+import org.emftext.language.java.imports.ImportsFactory;
+import org.emftext.language.java.imports.StaticMemberImport;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class StaticMemberImportInitialiser extends AbstractInitialiserBase implements IStaticMemberImportInitialiser {
+ @Override
+ public IStaticMemberImportInitialiser newInitialiser() {
+ return new StaticMemberImportInitialiser();
+ }
+
+ @Override
+ public StaticMemberImport instantiate() {
+ return ImportsFactory.eINSTANCE.createStaticMemberImport();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java
new file mode 100644
index 0000000000..d8e4cf29c0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.imports}.
+ */
+package cipm.consistency.initialisers.jamopp.imports;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java
new file mode 100644
index 0000000000..238cac8386
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java
@@ -0,0 +1,64 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.statements.BlockContainer;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IBlockInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate
+ * {@link BlockContainer}.
+ *
+ * Adds a {@link Block} to the created {@link BlockContainer}. If the
+ * {@link BlockContainer} instance already has a {@link Block}, does not modify
+ * it. This way, similarity checking should not cause exceptions while comparing
+ * 2 {@link BlockContainer} instances, because of them not having a
+ * {@link Block}.
+ *
+ * @author Alp Torac Genc
+ */
+public class BlockContainerInitialiserAdapter implements IInitialiserAdapterStrategy {
+ /**
+ * The initialiser that creates {@link Block}s to realise the functionality of
+ * this instance.
+ */
+ private IBlockInitialiser bInit;
+
+ /**
+ * Constructs an instance with the given {@link IBlockInitialiser}.
+ */
+ public BlockContainerInitialiserAdapter(IBlockInitialiser bInit) {
+ this.bInit = bInit;
+ }
+
+ /**
+ * @return The initialiser contained in this instance, which is responsible for
+ * creating {@link Block}s.
+ */
+ public IBlockInitialiser getBInit() {
+ return this.bInit;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedInit = (IBlockContainerInitialiser) init;
+ var castedO = (BlockContainer) obj;
+
+ if (castedO.getBlock() == null) {
+ var bInit = this.getBInit();
+
+ var block = bInit.instantiate();
+ return bInit.initialise(block) && castedInit.setBlock(castedO, block);
+ }
+
+ return true;
+ }
+
+ @Override
+ public IInitialiserAdapterStrategy newStrategy() {
+ return new BlockContainerInitialiserAdapter((IBlockInitialiser) this.getBInit().newInitialiser());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java
new file mode 100644
index 0000000000..8cfe3f38b0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java
@@ -0,0 +1,84 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.members.ClassMethod;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.members.IClassMethodInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IBlockInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate {@link ClassMethod}.
+ *
+ *
+ * Adds a {@link Block} instance to the {@link ClassMethod} via
+ * {@code classMethod.setStatement(...)}, if its statement accessed via
+ * {@code classMethod.getStatement()} is not a {@link Block} (in that case
+ * {@code classMethod.getBlock()} will return null). If the {@link ClassMethod}
+ * has its {@link Statement} st set, st will be added to the added block
+ * instance.
+ *
+ * Due to inconsistencies regarding {@link ClassMethod}, it provides 2 methods
+ * for adding {@link Statement} instances to it. Since adding multiple
+ * statements is only possible via {@code classMethod.getStatement().add(...)},
+ * which only works if classMethod has a block as its statement, this adaptation
+ * is necessary. Otherwise, one may only add a single statement to
+ * {@link ClassMethod} via {@code classMethod.setStatement(...)}.
+ *
+ * Note that the said method will REPLACE the former statement when used.
+ *
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public class ClassMethodInitialiserAdapter implements IInitialiserAdapterStrategy {
+ /**
+ * The initialiser that creates {@link Block}s to realise the functionality of
+ * this instance.
+ */
+ private IBlockInitialiser bInit;
+
+ /**
+ * Constructs an instance with the given {@link IBlockInitialiser}.
+ */
+ public ClassMethodInitialiserAdapter(IBlockInitialiser bInit) {
+ this.bInit = bInit;
+ }
+
+ /**
+ * @return The initialiser contained in this instance, which is responsible for
+ * creating {@link Block}s.
+ */
+ public IBlockInitialiser getBInit() {
+ return this.bInit;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedInit = (IClassMethodInitialiser) init;
+ var castedO = (ClassMethod) obj;
+
+ if (castedO.getBlock() == null) {
+ var formerSt = castedO.getStatement();
+
+ var bInit = this.getBInit();
+ var block = bInit.instantiate();
+
+ var res = bInit.initialise(block) && castedInit.setStatement(castedO, block);
+
+ if (formerSt != null) {
+ res = res && castedInit.addStatement(castedO, formerSt);
+ }
+
+ return res;
+ }
+
+ return true;
+ }
+
+ @Override
+ public IInitialiserAdapterStrategy newStrategy() {
+ return new ClassMethodInitialiserAdapter((IBlockInitialiser) this.getBInit().newInitialiser());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java
new file mode 100644
index 0000000000..63c157e3cc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java
@@ -0,0 +1,63 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.containers.CompilationUnit;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.containers.ICompilationUnitInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate
+ * {@link ConcreteClassifier}.
+ *
+ * Adds the {@link ConcreteClassifier} instance to a {@link CompilationUnit}.
+ * Does not modify the {@link ConcreteClassifier} instance, if it already is
+ * contained in a {@link CompilationUnit}. This way, similarity checking 2
+ * {@link ConcreteClassifier} instances does not throw exceptions, due to them
+ * not having a container.
+ *
+ * @author Alp Torac Genc
+ */
+public class ConcreteClassifierInitialiserAdapter implements IInitialiserAdapterStrategy {
+ /**
+ * The initialiser responsible for creating {@link CompilationUnit}s to fulfil
+ * this instance's functionality.
+ */
+ private ICompilationUnitInitialiser cuInit;
+
+ /**
+ * Constructs an instance with the given {@link ICompilationUnitInitialiser}.
+ */
+ public ConcreteClassifierInitialiserAdapter(ICompilationUnitInitialiser cuInit) {
+ this.cuInit = cuInit;
+ }
+
+ /**
+ * @return The initialiser responsible for creating {@link CompilationUnit}s.
+ */
+ public ICompilationUnitInitialiser getCUInit() {
+ return this.cuInit;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedO = (ConcreteClassifier) obj;
+
+ if (castedO.getContainingCompilationUnit() == null) {
+ var cuInit = this.getCUInit();
+
+ CompilationUnit unit = cuInit.instantiate();
+ return cuInit.initialise(unit) && cuInit.addClassifier(unit, castedO);
+ }
+
+ return true;
+ }
+
+ @Override
+ public ConcreteClassifierInitialiserAdapter newStrategy() {
+ return new ConcreteClassifierInitialiserAdapter(
+ (ICompilationUnitInitialiser) this.getCUInit().newInitialiser());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java
new file mode 100644
index 0000000000..728e009b53
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java
@@ -0,0 +1,76 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.references.IdentifierReference;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate
+ * {@link IdentifierReference}.
+ *
+ * Let IR be an {@link IdentifierReference} instance.
+ * {@link IdentifierReferenceInitialiserAdapter} then nests an uninitialised
+ * {@link ExpressionStatement} es instance within an uninitialised
+ * {@link ExplicitConstructorCall} ecc instance and sets IR's
+ * container to ecc. This way, IR will have a container, which is
+ * neither of type {@link Expression} nor {@link ArraySelector} (i.e. an
+ * eligible container).
+ *
+ * Note: IR's eligible container will be es.
+ *
+ * @author Alp Torac Genc
+ */
+public class IdentifierReferenceInitialiserAdapter implements IInitialiserAdapterStrategy {
+
+ /**
+ * Realises the functionality of
+ * {@code JaMoPPElementUtil.getFirstContainerNotOfGivenType(...)}
+ */
+ private EObject getFirstEligibleContainer(EObject obj) {
+ var firstEligibleContainer = obj.eContainer();
+
+ while (firstEligibleContainer != null) {
+ if (Expression.class.isAssignableFrom(firstEligibleContainer.getClass())
+ || ArraySelector.class.isAssignableFrom(firstEligibleContainer.getClass())) {
+ firstEligibleContainer = firstEligibleContainer.eContainer();
+ } else {
+ break;
+ }
+ }
+
+ return firstEligibleContainer;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedO = (IdentifierReference) obj;
+
+ var firstEligibleContainer = this.getFirstEligibleContainer(castedO);
+
+ if (firstEligibleContainer == null) {
+ var insInit = new ExplicitConstructorCallInitialiser();
+ var ecc = insInit.instantiate();
+ insInit.addArgument(ecc, castedO);
+
+ var esInit = new ExpressionStatementInitialiser();
+ var es = esInit.instantiate();
+ esInit.setExpression(es, ecc);
+
+ return this.getFirstEligibleContainer(castedO) == es;
+ }
+
+ return this.getFirstEligibleContainer(castedO) != null;
+ }
+
+ @Override
+ public IInitialiserAdapterStrategy newStrategy() {
+ return new IdentifierReferenceInitialiserAdapter();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java
new file mode 100644
index 0000000000..c3a6b9b2ed
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java
@@ -0,0 +1,62 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.members.Member;
+import org.emftext.language.java.members.MemberContainer;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate {@link Member}.
+ *
+ * Adds the created {@link Member} to a {@link MemberContainer}. Does not modify
+ * the {@link Member} instance, if it is already in a {@link MemberContainer}.
+ * This way, similarity checking 2 {@link Member} instances does not throw an
+ * exception, due to them not being contained by a {@link MemberContainer}.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public class MemberInitialiserAdapter implements IInitialiserAdapterStrategy {
+ /**
+ * The initialiser responsible for creating {@link MemberContainer}s to fulfil
+ * this instance's functionality.
+ */
+ private IMemberContainerInitialiser mcInit;
+
+ /**
+ * Constructs an instance with the given {@link IMemberContainerInitialiser}.
+ */
+ public MemberInitialiserAdapter(IMemberContainerInitialiser mcInit) {
+ this.mcInit = mcInit;
+ }
+
+ /**
+ * @return The initialiser in this instance that creates
+ * {@link MemberContainer}s.
+ */
+ public IMemberContainerInitialiser getMCInit() {
+ return this.mcInit;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedO = (Member) obj;
+
+ if (castedO.eContainer() == null) {
+ var mcInit = this.getMCInit();
+
+ MemberContainer mc = mcInit.instantiate();
+ return mcInit.initialise(mc) && mcInit.addMember(mc, castedO);
+ }
+
+ return true;
+ }
+
+ @Override
+ public MemberInitialiserAdapter newStrategy() {
+ return new MemberInitialiserAdapter((IMemberContainerInitialiser) this.getMCInit().newInitialiser());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java
new file mode 100644
index 0000000000..5402f65d99
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java
@@ -0,0 +1,46 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.commons.NamedElement;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate {@link NamedElement}.
+ *
+ *
+ * Sets the name of the created {@link NamedElement} to a default name, if it
+ * has no name. This way, similarity checking 2 {@link NamedElement} instances
+ * does not throw exceptions, due to them not having a name.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public class NamedElementInitialiserAdapter implements IInitialiserAdapterStrategy {
+ /**
+ * @return The default name, to which the name of the created
+ * {@link NamedElement} instances will be set.
+ */
+ public String getDefaultName() {
+ return "";
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedInit = (INamedElementInitialiser) init;
+ var castedO = (NamedElement) obj;
+
+ if (castedInit.canSetName(castedO) && castedO.getName() == null) {
+ return castedInit.setName(castedO, this.getDefaultName());
+ }
+
+ return true;
+ }
+
+ @Override
+ public IInitialiserAdapterStrategy newStrategy() {
+ return new NamedElementInitialiserAdapter();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java
new file mode 100644
index 0000000000..5756df414f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java
@@ -0,0 +1,90 @@
+package cipm.consistency.initialisers.jamopp.initadapters;
+
+import org.emftext.language.java.instantiations.NewConstructorCall;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser;
+import cipm.consistency.initialisers.jamopp.instantiations.INewConstructorCallInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser;
+
+/**
+ * An {@link IInitialiserAdapterStrategy} implementation that can be used with
+ * {@link IInitialiserBase} implementors that instantiate
+ * {@link NewConstructorCall}.
+ *
+ * Adds a {@link TypeReference} to the created {@link NewConstructorCall}
+ * ncc. The steps it takes are:
+ *
+ * - Checks whether ncc has a {@link TypeReference}. If yes, stops.
+ * Otherwise continues.
+ *
- Creates a {@link Classifier} instance cls
+ *
- Creates a {@link TypeReference} instance tref
+ *
- Sets tref's target to cls
+ *
- Sets ncc's type reference to tref
+ *
+ * Does not modify the created {@link NewConstructorCall}, if it already has a
+ * {@link TypeReference}.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public class NewConstructorCallInitialiserAdapter implements IInitialiserAdapterStrategy {
+
+ /**
+ * The initialiser responsible for creating {@link TypeReference} to fulfil this
+ * instance's functionality.
+ */
+ private ITypeReferenceInitialiser tRefInit;
+ /**
+ * The initialiser responsible for creating {@link Classifier} to fulfil this
+ * instance's functionality.
+ */
+ private IClassifierInitialiser clsInit;
+
+ /**
+ * Constructs an instance with the given parameters.
+ */
+ public NewConstructorCallInitialiserAdapter(ITypeReferenceInitialiser tRefInit, IClassifierInitialiser clsInit) {
+ this.tRefInit = tRefInit;
+ this.clsInit = clsInit;
+ }
+
+ /**
+ * @return The initialiser responsible for creating {@link TypeReference}.
+ */
+ public ITypeReferenceInitialiser gettRefInit() {
+ return tRefInit;
+ }
+
+ /**
+ * @return The initialiser responsible for creating {@link Classifier}.
+ */
+ public IClassifierInitialiser getClsInit() {
+ return clsInit;
+ }
+
+ @Override
+ public boolean apply(IInitialiser init, Object obj) {
+ var castedInit = (INewConstructorCallInitialiser) init;
+ var castedO = (NewConstructorCall) obj;
+
+ if (castedO.getTypeReference() == null) {
+ var cls = this.getClsInit().instantiate();
+
+ var tref = this.gettRefInit().instantiate();
+
+ return this.getClsInit().initialise(cls) && this.gettRefInit().initialise(tref)
+ && this.gettRefInit().setTarget(tref, cls) && castedInit.setTypeReference(castedO, tref)
+ && castedO.getTypeReference().equals(tref);
+ }
+
+ return true;
+ }
+
+ @Override
+ public IInitialiserAdapterStrategy newStrategy() {
+ return new NewConstructorCallInitialiserAdapter((ITypeReferenceInitialiser) this.gettRefInit().newInitialiser(),
+ (IClassifierInitialiser) this.getClsInit().newInitialiser());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java
new file mode 100644
index 0000000000..a9f4007062
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java
@@ -0,0 +1,10 @@
+/**
+ * Contains classes that help adapt initialisers in ways that lets them
+ * instantiate valid objects without additional method calls. This is
+ * particularly useful for parameterized tests, as there may be initialisers
+ * extending mutual interfaces/classes, which may need to perform additional
+ * modifications of the objects they instantiate. If this is the case, such
+ * initialisers can be adapted to automatically perform those modifications,
+ * without large if or instanceof blocks in tests.
+ */
+package cipm.consistency.initialisers.jamopp.initadapters;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java
new file mode 100644
index 0000000000..7a3af10fd6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.ExplicitConstructorCall;
+import org.emftext.language.java.instantiations.InstantiationsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExplicitConstructorCallInitialiser extends AbstractInitialiserBase
+ implements IExplicitConstructorCallInitialiser {
+ @Override
+ public IExplicitConstructorCallInitialiser newInitialiser() {
+ return new ExplicitConstructorCallInitialiser();
+ }
+
+ @Override
+ public ExplicitConstructorCall instantiate() {
+ return InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java
new file mode 100644
index 0000000000..7aac9f9de6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.ExplicitConstructorCall;
+import org.emftext.language.java.literals.Self;
+
+public interface IExplicitConstructorCallInitialiser extends IInstantiationInitialiser {
+ @Override
+ public ExplicitConstructorCall instantiate();
+
+ public default boolean setCallTarget(ExplicitConstructorCall ecc, Self callTarget) {
+ ecc.setCallTarget(callTarget);
+ return (callTarget == null && ecc.getCallTarget() == null) || ecc.getCallTarget().equals(callTarget);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java
new file mode 100644
index 0000000000..536c5b1c79
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java
@@ -0,0 +1,17 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.instantiations.Initializable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IInitializableInitialiser extends ICommentableInitialiser {
+ @Override
+ public Initializable instantiate();
+
+ public default boolean setInitialValue(Initializable initializable, Expression initVal) {
+ initializable.setInitialValue(initVal);
+ return (initVal == null && initializable.getInitialValue() == null)
+ || initializable.getInitialValue().equals(initVal);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java
new file mode 100644
index 0000000000..b44d598e0e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.Instantiation;
+
+import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser;
+
+public interface IInstantiationInitialiser
+ extends IArgumentableInitialiser, IReferenceInitialiser, ICallTypeArgumentableInitialiser {
+ @Override
+ public Instantiation instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java
new file mode 100644
index 0000000000..355f91d3e2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+import org.emftext.language.java.instantiations.NewConstructorCall;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface INewConstructorCallInitialiser extends IInstantiationInitialiser, ITypedElementInitialiser {
+
+ @Override
+ public NewConstructorCall instantiate();
+
+ public default boolean setAnonymousClass(NewConstructorCall ncc, AnonymousClass anonymousCls) {
+ ncc.setAnonymousClass(anonymousCls);
+ return (anonymousCls == null && ncc.getAnonymousClass() == null)
+ || ncc.getAnonymousClass().equals(anonymousCls);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java
new file mode 100644
index 0000000000..ed7bdfb060
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments;
+
+public interface INewConstructorCallWithInferredTypeArgumentsInitialiser extends INewConstructorCallInitialiser {
+ @Override
+ public NewConstructorCallWithInferredTypeArguments instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java
new file mode 100644
index 0000000000..20545c4d1f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class InstantiationsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new ExplicitConstructorCallInitialiser(),
+ new NewConstructorCallInitialiser(), new NewConstructorCallWithInferredTypeArgumentsInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IExplicitConstructorCallInitialiser.class, IInitializableInitialiser.class,
+ IInstantiationInitialiser.class, INewConstructorCallInitialiser.class,
+ INewConstructorCallWithInferredTypeArgumentsInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java
new file mode 100644
index 0000000000..5e36611fbd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.InstantiationsFactory;
+import org.emftext.language.java.instantiations.NewConstructorCall;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NewConstructorCallInitialiser extends AbstractInitialiserBase implements INewConstructorCallInitialiser {
+ @Override
+ public INewConstructorCallInitialiser newInitialiser() {
+ return new NewConstructorCallInitialiser();
+ }
+
+ @Override
+ public NewConstructorCall instantiate() {
+ return InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java
new file mode 100644
index 0000000000..04585b6e5c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.instantiations;
+
+import org.emftext.language.java.instantiations.InstantiationsFactory;
+import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NewConstructorCallWithInferredTypeArgumentsInitialiser extends AbstractInitialiserBase
+ implements INewConstructorCallWithInferredTypeArgumentsInitialiser {
+ @Override
+ public INewConstructorCallWithInferredTypeArgumentsInitialiser newInitialiser() {
+ return new NewConstructorCallWithInferredTypeArgumentsInitialiser();
+ }
+
+ @Override
+ public NewConstructorCallWithInferredTypeArguments instantiate() {
+ return InstantiationsFactory.eINSTANCE.createNewConstructorCallWithInferredTypeArguments();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java
new file mode 100644
index 0000000000..c4670a11b1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.instantiations}.
+ */
+package cipm.consistency.initialisers.jamopp.instantiations;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..d46a2d4c60
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.BinaryIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class BinaryIntegerLiteralInitialiser extends AbstractInitialiserBase
+ implements IBinaryIntegerLiteralInitialiser {
+ @Override
+ public IBinaryIntegerLiteralInitialiser newInitialiser() {
+ return new BinaryIntegerLiteralInitialiser();
+ }
+
+ @Override
+ public BinaryIntegerLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createBinaryIntegerLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java
new file mode 100644
index 0000000000..32508ceed4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.BinaryLongLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class BinaryLongLiteralInitialiser extends AbstractInitialiserBase implements IBinaryLongLiteralInitialiser {
+ @Override
+ public IBinaryLongLiteralInitialiser newInitialiser() {
+ return new BinaryLongLiteralInitialiser();
+ }
+
+ @Override
+ public BinaryLongLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createBinaryLongLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java
new file mode 100644
index 0000000000..2bc55e6f96
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.BooleanLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class BooleanLiteralInitialiser extends AbstractInitialiserBase implements IBooleanLiteralInitialiser {
+ @Override
+ public IBooleanLiteralInitialiser newInitialiser() {
+ return new BooleanLiteralInitialiser();
+ }
+
+ @Override
+ public BooleanLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createBooleanLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java
new file mode 100644
index 0000000000..431a95b23b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.CharacterLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class CharacterLiteralInitialiser extends AbstractInitialiserBase implements ICharacterLiteralInitialiser {
+ @Override
+ public ICharacterLiteralInitialiser newInitialiser() {
+ return new CharacterLiteralInitialiser();
+ }
+
+ @Override
+ public CharacterLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createCharacterLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java
new file mode 100644
index 0000000000..4e361e2a80
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalDoubleLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DecimalDoubleLiteralInitialiser extends AbstractInitialiserBase
+ implements IDecimalDoubleLiteralInitialiser {
+ @Override
+ public IDecimalDoubleLiteralInitialiser newInitialiser() {
+ return new DecimalDoubleLiteralInitialiser();
+ }
+
+ @Override
+ public DecimalDoubleLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createDecimalDoubleLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java
new file mode 100644
index 0000000000..167c6b5ceb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalFloatLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DecimalFloatLiteralInitialiser extends AbstractInitialiserBase implements IDecimalFloatLiteralInitialiser {
+ @Override
+ public IDecimalFloatLiteralInitialiser newInitialiser() {
+ return new DecimalFloatLiteralInitialiser();
+ }
+
+ @Override
+ public DecimalFloatLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createDecimalFloatLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..edfbb5220b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DecimalIntegerLiteralInitialiser extends AbstractInitialiserBase
+ implements IDecimalIntegerLiteralInitialiser {
+ @Override
+ public IDecimalIntegerLiteralInitialiser newInitialiser() {
+ return new DecimalIntegerLiteralInitialiser();
+ }
+
+ @Override
+ public DecimalIntegerLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createDecimalIntegerLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java
new file mode 100644
index 0000000000..01cc1744b1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalLongLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DecimalLongLiteralInitialiser extends AbstractInitialiserBase implements IDecimalLongLiteralInitialiser {
+ @Override
+ public IDecimalLongLiteralInitialiser newInitialiser() {
+ return new DecimalLongLiteralInitialiser();
+ }
+
+ @Override
+ public DecimalLongLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createDecimalLongLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java
new file mode 100644
index 0000000000..f0e1095075
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexDoubleLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class HexDoubleLiteralInitialiser extends AbstractInitialiserBase implements IHexDoubleLiteralInitialiser {
+ @Override
+ public IHexDoubleLiteralInitialiser newInitialiser() {
+ return new HexDoubleLiteralInitialiser();
+ }
+
+ @Override
+ public HexDoubleLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createHexDoubleLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java
new file mode 100644
index 0000000000..721b620fe4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexFloatLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class HexFloatLiteralInitialiser extends AbstractInitialiserBase implements IHexFloatLiteralInitialiser {
+ @Override
+ public IHexFloatLiteralInitialiser newInitialiser() {
+ return new HexFloatLiteralInitialiser();
+ }
+
+ @Override
+ public HexFloatLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createHexFloatLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..ae1be06c31
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexIntegerLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class HexIntegerLiteralInitialiser extends AbstractInitialiserBase implements IHexIntegerLiteralInitialiser {
+ @Override
+ public IHexIntegerLiteralInitialiser newInitialiser() {
+ return new HexIntegerLiteralInitialiser();
+ }
+
+ @Override
+ public HexIntegerLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createHexIntegerLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java
new file mode 100644
index 0000000000..02181156db
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexLongLiteral;
+import org.emftext.language.java.literals.LiteralsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class HexLongLiteralInitialiser extends AbstractInitialiserBase implements IHexLongLiteralInitialiser {
+ @Override
+ public IHexLongLiteralInitialiser newInitialiser() {
+ return new HexLongLiteralInitialiser();
+ }
+
+ @Override
+ public HexLongLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createHexLongLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..cbba52710b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.BinaryIntegerLiteral;
+
+public interface IBinaryIntegerLiteralInitialiser extends IIntegerLiteralInitialiser {
+ @Override
+ public BinaryIntegerLiteral instantiate();
+
+ public default boolean setBinaryValue(BinaryIntegerLiteral bil, BigInteger val) {
+ bil.setBinaryValue(val);
+ return (val == null && bil.getBinaryValue() == null) || bil.getBinaryValue().equals(val);
+ }
+
+ public default boolean setBinaryValue(BinaryIntegerLiteral bil, int val) {
+ return this.setBinaryValue(bil, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java
new file mode 100644
index 0000000000..b5bdd3d114
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.BinaryLongLiteral;
+
+public interface IBinaryLongLiteralInitialiser extends ILongLiteralInitialiser {
+ @Override
+ public BinaryLongLiteral instantiate();
+
+ public default boolean setBinaryValue(BinaryLongLiteral bil, BigInteger val) {
+ bil.setBinaryValue(val);
+ return (val == null && bil.getBinaryValue() == null) || bil.getBinaryValue().equals(val);
+ }
+
+ public default boolean setBinaryValue(BinaryLongLiteral bil, long val) {
+ return this.setBinaryValue(bil, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java
new file mode 100644
index 0000000000..929c76a85d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.BooleanLiteral;
+
+public interface IBooleanLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public BooleanLiteral instantiate();
+
+ public default boolean setValue(BooleanLiteral bl, boolean val) {
+ bl.setValue(val);
+ return bl.isValue() == val;
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java
new file mode 100644
index 0000000000..62fead3428
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.CharacterLiteral;
+
+public interface ICharacterLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public CharacterLiteral instantiate();
+
+ public default boolean setValue(CharacterLiteral cl, String val) {
+ cl.setValue(val);
+ return (val == null && cl.getValue() == null) || cl.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java
new file mode 100644
index 0000000000..dea8c21f53
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalDoubleLiteral;
+
+public interface IDecimalDoubleLiteralInitialiser extends IDoubleLiteralInitialiser {
+ @Override
+ public DecimalDoubleLiteral instantiate();
+
+ public default boolean setDecimalValue(DecimalDoubleLiteral ddl, double val) {
+ ddl.setDecimalValue(val);
+ return ddl.getDecimalValue() == val || (Double.isNaN(ddl.getDecimalValue()) && Double.isNaN(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java
new file mode 100644
index 0000000000..46bb8d0ab1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DecimalFloatLiteral;
+
+public interface IDecimalFloatLiteralInitialiser extends IFloatLiteralInitialiser {
+ @Override
+ public DecimalFloatLiteral instantiate();
+
+ public default boolean setDecimalValue(DecimalFloatLiteral dfl, float val) {
+ dfl.setDecimalValue(val);
+ return dfl.getDecimalValue() == val || (Float.isNaN(dfl.getDecimalValue()) && Float.isNaN(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..e087787f4e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.DecimalIntegerLiteral;
+
+public interface IDecimalIntegerLiteralInitialiser extends IIntegerLiteralInitialiser {
+ @Override
+ public DecimalIntegerLiteral instantiate();
+
+ public default boolean setDecimalValue(DecimalIntegerLiteral dil, BigInteger val) {
+ dil.setDecimalValue(val);
+ return (val == null && dil.getDecimalValue() == null) || dil.getDecimalValue().equals(val);
+ }
+
+ public default boolean setDecimalValue(DecimalIntegerLiteral dil, int val) {
+ return this.setDecimalValue(dil, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java
new file mode 100644
index 0000000000..3266d6b667
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.DecimalLongLiteral;
+
+public interface IDecimalLongLiteralInitialiser extends ILongLiteralInitialiser {
+ @Override
+ public DecimalLongLiteral instantiate();
+
+ public default boolean setDecimalValue(DecimalLongLiteral dll, BigInteger val) {
+ dll.setDecimalValue(val);
+ return (val == null && dll.getDecimalValue() == null) || dll.getDecimalValue().equals(val);
+ }
+
+ public default boolean setDecimalValue(DecimalLongLiteral dll, long val) {
+ return this.setDecimalValue(dll, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java
new file mode 100644
index 0000000000..1414cbbe1a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.DoubleLiteral;
+
+public interface IDoubleLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public DoubleLiteral instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java
new file mode 100644
index 0000000000..7ae0d44abd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.FloatLiteral;
+
+public interface IFloatLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public FloatLiteral instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java
new file mode 100644
index 0000000000..43c564b3e8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexDoubleLiteral;
+
+public interface IHexDoubleLiteralInitialiser extends IDoubleLiteralInitialiser {
+ @Override
+ public HexDoubleLiteral instantiate();
+
+ public default boolean setHexValue(HexDoubleLiteral hdl, double val) {
+ hdl.setHexValue(val);
+ return hdl.getHexValue() == val || (Double.isNaN(hdl.getHexValue()) && Double.isNaN(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java
new file mode 100644
index 0000000000..29ef53192e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.HexFloatLiteral;
+
+public interface IHexFloatLiteralInitialiser extends IFloatLiteralInitialiser {
+ @Override
+ public HexFloatLiteral instantiate();
+
+ public default boolean setHexValue(HexFloatLiteral hdl, float val) {
+ hdl.setHexValue(val);
+ return hdl.getHexValue() == val || (Float.isNaN(hdl.getHexValue()) && Float.isNaN(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..40eb272eef
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.HexIntegerLiteral;
+
+public interface IHexIntegerLiteralInitialiser extends IIntegerLiteralInitialiser {
+ @Override
+ public HexIntegerLiteral instantiate();
+
+ public default boolean setHexValue(HexIntegerLiteral hil, BigInteger val) {
+ hil.setHexValue(val);
+ return (val == null && hil.getHexValue() == null) || hil.getHexValue().equals(val);
+ }
+
+ public default boolean setHexValue(HexIntegerLiteral hil, int val) {
+ return this.setHexValue(hil, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java
new file mode 100644
index 0000000000..08b986bf81
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.HexLongLiteral;
+
+public interface IHexLongLiteralInitialiser extends ILongLiteralInitialiser {
+ @Override
+ public HexLongLiteral instantiate();
+
+ public default boolean setHexValue(HexLongLiteral hll, BigInteger val) {
+ hll.setHexValue(val);
+ return (val == null && hll.getHexValue() == null) || hll.getHexValue().equals(val);
+ }
+
+ public default boolean setHexValue(HexLongLiteral hll, long val) {
+ return this.setHexValue(hll, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..635a2ff193
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.IntegerLiteral;
+
+public interface IIntegerLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public IntegerLiteral instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java
new file mode 100644
index 0000000000..6c34f41483
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.Literal;
+
+import cipm.consistency.initialisers.jamopp.expressions.IPrimaryExpressionInitialiser;
+
+public interface ILiteralInitialiser extends IPrimaryExpressionInitialiser {
+ @Override
+ public Literal instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java
new file mode 100644
index 0000000000..ef1072d750
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LongLiteral;
+
+public interface ILongLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public LongLiteral instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java
new file mode 100644
index 0000000000..03c4ac6128
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.NullLiteral;
+
+public interface INullLiteralInitialiser extends ILiteralInitialiser {
+ @Override
+ public NullLiteral instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..abdbb6eae4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.OctalIntegerLiteral;
+
+public interface IOctalIntegerLiteralInitialiser extends IIntegerLiteralInitialiser {
+ @Override
+ public OctalIntegerLiteral instantiate();
+
+ public default boolean setOctalValue(OctalIntegerLiteral oil, BigInteger val) {
+ oil.setOctalValue(val);
+ return (val == null && oil.getOctalValue() == null) || oil.getOctalValue().equals(val);
+ }
+
+ public default boolean setOctalValue(OctalIntegerLiteral oil, int val) {
+ return this.setOctalValue(oil, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java
new file mode 100644
index 0000000000..6e1f039e20
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.math.BigInteger;
+
+import org.emftext.language.java.literals.OctalLongLiteral;
+
+public interface IOctalLongLiteralInitialiser extends ILongLiteralInitialiser {
+ @Override
+ public OctalLongLiteral instantiate();
+
+ public default boolean setOctalValue(OctalLongLiteral oll, BigInteger val) {
+ oll.setOctalValue(val);
+ return (val == null && oll.getOctalValue() == null) || oll.getOctalValue().equals(val);
+ }
+
+ public default boolean setOctalValue(OctalLongLiteral oll, long val) {
+ return this.setOctalValue(oll, BigInteger.valueOf(val));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java
new file mode 100644
index 0000000000..80ba9fc0a2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.Self;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ISelfInitialiser extends ICommentableInitialiser {
+ @Override
+ public Self instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java
new file mode 100644
index 0000000000..572c609cd0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.Super;
+
+public interface ISuperInitialiser extends ISelfInitialiser {
+ @Override
+ public Super instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java
new file mode 100644
index 0000000000..4f6cf1d876
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.This;
+
+public interface IThisInitialiser extends ISelfInitialiser {
+ @Override
+ public This instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java
new file mode 100644
index 0000000000..54128509bd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class LiteralsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new BinaryIntegerLiteralInitialiser(),
+ new BinaryLongLiteralInitialiser(), new BooleanLiteralInitialiser(), new CharacterLiteralInitialiser(),
+ new DecimalDoubleLiteralInitialiser(), new DecimalFloatLiteralInitialiser(),
+ new DecimalIntegerLiteralInitialiser(), new DecimalLongLiteralInitialiser(),
+ new HexDoubleLiteralInitialiser(), new HexFloatLiteralInitialiser(), new HexIntegerLiteralInitialiser(),
+ new HexLongLiteralInitialiser(), new NullLiteralInitialiser(), new OctalIntegerLiteralInitialiser(),
+ new OctalLongLiteralInitialiser(), new SuperInitialiser(), new ThisInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IBinaryIntegerLiteralInitialiser.class, IBinaryLongLiteralInitialiser.class,
+ IBooleanLiteralInitialiser.class, ICharacterLiteralInitialiser.class,
+ IDecimalDoubleLiteralInitialiser.class, IDecimalFloatLiteralInitialiser.class,
+ IDecimalIntegerLiteralInitialiser.class, IDecimalLongLiteralInitialiser.class,
+ IDoubleLiteralInitialiser.class, IFloatLiteralInitialiser.class, IHexDoubleLiteralInitialiser.class,
+ IHexFloatLiteralInitialiser.class, IHexIntegerLiteralInitialiser.class,
+ IHexLongLiteralInitialiser.class, IIntegerLiteralInitialiser.class, ILiteralInitialiser.class,
+ ILongLiteralInitialiser.class, INullLiteralInitialiser.class, IOctalIntegerLiteralInitialiser.class,
+ IOctalLongLiteralInitialiser.class, ISelfInitialiser.class, ISuperInitialiser.class,
+ IThisInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java
new file mode 100644
index 0000000000..c1c0347de7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LiteralsFactory;
+import org.emftext.language.java.literals.NullLiteral;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NullLiteralInitialiser extends AbstractInitialiserBase implements INullLiteralInitialiser {
+ @Override
+ public INullLiteralInitialiser newInitialiser() {
+ return new NullLiteralInitialiser();
+ }
+
+ @Override
+ public NullLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createNullLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java
new file mode 100644
index 0000000000..16651f562b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LiteralsFactory;
+import org.emftext.language.java.literals.OctalIntegerLiteral;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class OctalIntegerLiteralInitialiser extends AbstractInitialiserBase implements IOctalIntegerLiteralInitialiser {
+ @Override
+ public IOctalIntegerLiteralInitialiser newInitialiser() {
+ return new OctalIntegerLiteralInitialiser();
+ }
+
+ @Override
+ public OctalIntegerLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createOctalIntegerLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java
new file mode 100644
index 0000000000..bd58a855f4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LiteralsFactory;
+import org.emftext.language.java.literals.OctalLongLiteral;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class OctalLongLiteralInitialiser extends AbstractInitialiserBase implements IOctalLongLiteralInitialiser {
+ @Override
+ public IOctalLongLiteralInitialiser newInitialiser() {
+ return new OctalLongLiteralInitialiser();
+ }
+
+ @Override
+ public OctalLongLiteral instantiate() {
+ return LiteralsFactory.eINSTANCE.createOctalLongLiteral();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java
new file mode 100644
index 0000000000..659d39cbb8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LiteralsFactory;
+import org.emftext.language.java.literals.Super;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SuperInitialiser extends AbstractInitialiserBase implements ISuperInitialiser {
+ @Override
+ public ISuperInitialiser newInitialiser() {
+ return new SuperInitialiser();
+ }
+
+ @Override
+ public Super instantiate() {
+ return LiteralsFactory.eINSTANCE.createSuper();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java
new file mode 100644
index 0000000000..190b6d0183
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.literals;
+
+import org.emftext.language.java.literals.LiteralsFactory;
+import org.emftext.language.java.literals.This;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ThisInitialiser extends AbstractInitialiserBase implements IThisInitialiser {
+ @Override
+ public IThisInitialiser newInitialiser() {
+ return new ThisInitialiser();
+ }
+
+ @Override
+ public This instantiate() {
+ return LiteralsFactory.eINSTANCE.createThis();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java
new file mode 100644
index 0000000000..8eb5b75ed8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.literals}.
+ */
+package cipm.consistency.initialisers.jamopp.literals;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java
new file mode 100644
index 0000000000..91e7fac024
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.members.AdditionalField;
+
+public class AdditionalFieldInitialiser extends AbstractInitialiserBase implements IAdditionalFieldInitialiser {
+ @Override
+ public IAdditionalFieldInitialiser newInitialiser() {
+ return new AdditionalFieldInitialiser();
+ }
+
+ @Override
+ public AdditionalField instantiate() {
+ return MembersFactory.eINSTANCE.createAdditionalField();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java
new file mode 100644
index 0000000000..f7511ca2d8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.members.ClassMethod;
+
+public class ClassMethodInitialiser extends AbstractInitialiserBase implements IClassMethodInitialiser {
+ @Override
+ public ClassMethod instantiate() {
+ return MembersFactory.eINSTANCE.createClassMethod();
+ }
+
+ @Override
+ public ClassMethodInitialiser newInitialiser() {
+ return new ClassMethodInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java
new file mode 100644
index 0000000000..8f24387404
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.members.Constructor;
+
+public class ConstructorInitialiser extends AbstractInitialiserBase implements IConstructorInitialiser {
+ @Override
+ public Constructor instantiate() {
+ return MembersFactory.eINSTANCE.createConstructor();
+ }
+
+ @Override
+ public ConstructorInitialiser newInitialiser() {
+ return new ConstructorInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java
new file mode 100644
index 0000000000..75ae9bfb76
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.EmptyMember;
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EmptyMemberInitialiser extends AbstractInitialiserBase implements IEmptyMemberInitialiser {
+ @Override
+ public IEmptyMemberInitialiser newInitialiser() {
+ return new EmptyMemberInitialiser();
+ }
+
+ @Override
+ public EmptyMember instantiate() {
+ return MembersFactory.eINSTANCE.createEmptyMember();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java
new file mode 100644
index 0000000000..034568dc67
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.members.EnumConstant;
+
+public class EnumConstantInitialiser extends AbstractInitialiserBase implements IEnumConstantInitialiser {
+ @Override
+ public EnumConstant instantiate() {
+ return MembersFactory.eINSTANCE.createEnumConstant();
+ }
+
+ @Override
+ public IEnumConstantInitialiser newInitialiser() {
+ return new EnumConstantInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java
new file mode 100644
index 0000000000..4285301f7c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.Field;
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class FieldInitialiser extends AbstractInitialiserBase implements IFieldInitialiser {
+ @Override
+ public Field instantiate() {
+ return MembersFactory.eINSTANCE.createField();
+ }
+
+ @Override
+ public FieldInitialiser newInitialiser() {
+ return new FieldInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java
new file mode 100644
index 0000000000..7e76c708de
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.AdditionalField;
+
+import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IAdditionalFieldInitialiser
+ extends IInitializableInitialiser, IReferenceableElementInitialiser, ITypedElementInitialiser {
+ @Override
+ public AdditionalField instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java
new file mode 100644
index 0000000000..ee2cb6b255
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java
@@ -0,0 +1,57 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.ClassMethod;
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.StatementListContainer;
+
+import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link ClassMethod} instances.
+ *
+ * Due to inconsistencies regarding {@link ClassMethod}, it provides 2 methods
+ * for adding {@link Statement} instances to it. Adding multiple statements is
+ * only possible via {@code classMethod.getStatement().add(...)}, which only
+ * works if classMethod has a {@link Block} set as its statement. This can be
+ * achieved by passing a {@link Block} instance to
+ * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)}.
+ *
+ *
+ * Otherwise, one may only add a single statement to {@link ClassMethod} via
+ * {@code classMethod.setStatement(...)}. Note that the said method will
+ * REPLACE the former statement when used.
+ *
+ * @author Alp Torac Genc
+ *
+ */
+public interface IClassMethodInitialiser extends IMethodInitialiser, IStatementListContainerInitialiser {
+ @Override
+ public ClassMethod instantiate();
+
+ /**
+ * A {@link Block} instance must be added to slc (a {@link ClassMethod} in this
+ * case) for this method to function as intended. This can be done via
+ * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)}.
+ * If slc already has its {@link Statement} set via
+ * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)},
+ * that statement must be saved in a temporal variable before calling the said
+ * method. It can then be re-added to slc via calling this method.
+ *
+ * Otherwise, {@code slc.setStatement(st)} can be used to add a single
+ * {@link Statement} to slc. Note that the {@link Statement} added to slc
+ * this way WILL BE REPLACED, if {@code slc.setStatement(anotherSt)} is
+ * called.
+ *
+ * Overridden only to provide commentary.
+ */
+ @Override
+ public default boolean addStatement(StatementListContainer slc, Statement st) {
+ return IStatementListContainerInitialiser.super.addStatement(slc, st);
+ }
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return ((ClassMethod) slc).getBlock() != null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java
new file mode 100644
index 0000000000..6dc7082e0f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.Constructor;
+import org.emftext.language.java.statements.StatementListContainer;
+
+import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser;
+
+public interface IConstructorInitialiser extends IAnnotableAndModifiableInitialiser, IBlockContainerInitialiser,
+ IExceptionThrowerInitialiser, IMemberInitialiser, IParametrizableInitialiser,
+ IStatementListContainerInitialiser, ITypeParametrizableInitialiser {
+
+ @Override
+ public Constructor instantiate();
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return ((Constructor) slc).getBlock() != null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java
new file mode 100644
index 0000000000..252f86424b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.EmptyMember;
+
+public interface IEmptyMemberInitialiser extends IMemberInitialiser {
+ @Override
+ public EmptyMember instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java
new file mode 100644
index 0000000000..52bf696e49
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.classifiers.AnonymousClass;
+import org.emftext.language.java.members.EnumConstant;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+
+public interface IEnumConstantInitialiser
+ extends IArgumentableInitialiser, IAnnotableInitialiser, IReferenceableElementInitialiser {
+ @Override
+ public EnumConstant instantiate();
+
+ public default boolean setAnonymousClass(EnumConstant ec, AnonymousClass anonymousCls) {
+ ec.setAnonymousClass(anonymousCls);
+ return (anonymousCls == null && ec.getAnonymousClass() == null) || ec.getAnonymousClass().equals(anonymousCls);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java
new file mode 100644
index 0000000000..514a657f92
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.ExceptionThrower;
+import org.emftext.language.java.types.NamespaceClassifierReference;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IExceptionThrowerInitialiser extends ICommentableInitialiser {
+ @Override
+ public ExceptionThrower instantiate();
+
+ public default boolean addException(ExceptionThrower extt, NamespaceClassifierReference exception) {
+ if (exception != null) {
+ extt.getExceptions().add(exception);
+ return extt.getExceptions().contains(exception);
+ }
+ return true;
+ }
+
+ public default boolean addExceptions(ExceptionThrower extt, NamespaceClassifierReference[] exceptions) {
+ return this.doMultipleModifications(extt, exceptions, this::addException);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java
new file mode 100644
index 0000000000..0ce8522e30
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java
@@ -0,0 +1,26 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.AdditionalField;
+import org.emftext.language.java.members.Field;
+
+import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+import cipm.consistency.initialisers.jamopp.variables.IVariableInitialiser;
+
+public interface IFieldInitialiser extends IAnnotableAndModifiableInitialiser, IInitializableInitialiser,
+ IMemberInitialiser, IVariableInitialiser {
+ @Override
+ public Field instantiate();
+
+ public default boolean addAdditionalField(Field field, AdditionalField additionalField) {
+ if (additionalField != null) {
+ field.getAdditionalFields().add(additionalField);
+ return field.getAdditionalFields().contains(additionalField);
+ }
+ return true;
+ }
+
+ public default boolean addAdditionalFields(Field field, AdditionalField[] additionalFields) {
+ return this.doMultipleModifications(field, additionalFields, this::addAdditionalField);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java
new file mode 100644
index 0000000000..f109eb2128
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.annotations.AnnotationValue;
+import org.emftext.language.java.members.InterfaceMethod;
+
+public interface IInterfaceMethodInitialiser extends IMethodInitialiser {
+ @Override
+ public InterfaceMethod instantiate();
+
+ public default boolean setDefaultValue(InterfaceMethod im, AnnotationValue defVal) {
+ im.setDefaultValue(defVal);
+ return (defVal == null && im.getDefaultValue() == null) || im.getDefaultValue().equals(defVal);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java
new file mode 100644
index 0000000000..065629a33b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java
@@ -0,0 +1,48 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.Member;
+import org.emftext.language.java.members.MemberContainer;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * create {@link MemberContainer} instances.
+ *
+ * {@code mc.createField(...)} method internally creates a {@link Field}, adds
+ * it to the calling member container mc and returns the said field. It
+ * introduces no new ways to modify the calling member container.
+ *
+ * Getter methods of {@link MemberContainer} do not return modifiable lists,
+ * except for {@code mc.getMembers()} and {@code mc.getDefaultMembers()}.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IMemberContainerInitialiser extends ICommentableInitialiser {
+ @Override
+ public MemberContainer instantiate();
+
+ public default boolean addMember(MemberContainer mc, Member mem) {
+ if (mem != null) {
+ mc.getMembers().add(mem);
+ return mc.getMembers().contains(mem);
+ }
+ return true;
+ }
+
+ public default boolean addMembers(MemberContainer mc, Member[] mems) {
+ return this.doMultipleModifications(mc, mems, this::addMember);
+ }
+
+ public default boolean addDefaultMember(MemberContainer mc, Member defMem) {
+ if (defMem != null) {
+ mc.getDefaultMembers().add(defMem);
+ return mc.getDefaultMembers().contains(defMem);
+ }
+ return true;
+ }
+
+ public default boolean addDefaultMembers(MemberContainer mc, Member[] defMems) {
+ return this.doMultipleModifications(mc, defMems, this::addDefaultMember);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java
new file mode 100644
index 0000000000..90a0527ee9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.Member;
+
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+
+public interface IMemberInitialiser extends INamedElementInitialiser {
+ @Override
+ public Member instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java
new file mode 100644
index 0000000000..49b6d0887f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java
@@ -0,0 +1,17 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.Method;
+
+import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+import cipm.consistency.initialisers.jamopp.statements.IStatementContainerInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IMethodInitialiser extends IAnnotableAndModifiableInitialiser, IExceptionThrowerInitialiser,
+ IMemberInitialiser, IReferenceableElementInitialiser, IParametrizableInitialiser,
+ IStatementContainerInitialiser, ITypedElementInitialiser, ITypeParametrizableInitialiser {
+ @Override
+ public Method instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java
new file mode 100644
index 0000000000..b4e8a25467
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import org.emftext.language.java.members.MembersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.members.InterfaceMethod;
+
+public class InterfaceMethodInitialiser extends AbstractInitialiserBase implements IInterfaceMethodInitialiser {
+ @Override
+ public InterfaceMethod instantiate() {
+ return MembersFactory.eINSTANCE.createInterfaceMethod();
+ }
+
+ @Override
+ public InterfaceMethodInitialiser newInitialiser() {
+ return new InterfaceMethodInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java
new file mode 100644
index 0000000000..f3ad53c127
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java
@@ -0,0 +1,24 @@
+package cipm.consistency.initialisers.jamopp.members;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class MembersInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AdditionalFieldInitialiser(), new ClassMethodInitialiser(),
+ new ConstructorInitialiser(), new EmptyMemberInitialiser(), new EnumConstantInitialiser(),
+ new FieldInitialiser(), new InterfaceMethodInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAdditionalFieldInitialiser.class, IClassMethodInitialiser.class,
+ IConstructorInitialiser.class, IEmptyMemberInitialiser.class, IEnumConstantInitialiser.class,
+ IExceptionThrowerInitialiser.class, IFieldInitialiser.class, IInterfaceMethodInitialiser.class,
+ IMemberContainerInitialiser.class, IMemberInitialiser.class, IMethodInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java
new file mode 100644
index 0000000000..c43905ba82
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.members}.
+ */
+package cipm.consistency.initialisers.jamopp.members;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java
new file mode 100644
index 0000000000..a6f4ecab5b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Abstract;
+import org.emftext.language.java.modifiers.ModifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AbstractInitialiser extends AbstractInitialiserBase implements IAbstractInitialiser {
+ @Override
+ public IAbstractInitialiser newInitialiser() {
+ return new AbstractInitialiser();
+ }
+
+ @Override
+ public Abstract instantiate() {
+ return ModifiersFactory.eINSTANCE.createAbstract();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java
new file mode 100644
index 0000000000..66df255205
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Default;
+import org.emftext.language.java.modifiers.ModifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DefaultInitialiser extends AbstractInitialiserBase implements IDefaultInitialiser {
+ @Override
+ public IDefaultInitialiser newInitialiser() {
+ return new DefaultInitialiser();
+ }
+
+ @Override
+ public Default instantiate() {
+ return ModifiersFactory.eINSTANCE.createDefault();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java
new file mode 100644
index 0000000000..3a383d5d44
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Final;
+import org.emftext.language.java.modifiers.ModifiersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class FinalInitialiser extends AbstractInitialiserBase implements IFinalInitialiser {
+ @Override
+ public IFinalInitialiser newInitialiser() {
+ return new FinalInitialiser();
+ }
+
+ @Override
+ public Final instantiate() {
+ return ModifiersFactory.eINSTANCE.createFinal();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java
new file mode 100644
index 0000000000..09877b9896
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Abstract;
+
+public interface IAbstractInitialiser extends IModifierInitialiser {
+ @Override
+ public Abstract instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java
new file mode 100644
index 0000000000..e9fee2ccbc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java
@@ -0,0 +1,53 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.modifiers.AnnotableAndModifiable;
+import org.emftext.language.java.modifiers.Modifier;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotableAndModifiableInitialiser extends ICommentableInitialiser {
+ @Override
+ public AnnotableAndModifiable instantiate();
+
+ public default boolean addModifier(AnnotableAndModifiable aam, Modifier modif) {
+ if (modif != null) {
+ aam.addModifier(modif);
+ return aam.getAnnotationsAndModifiers().contains(modif) && aam.hasModifier(modif.getClass())
+ && aam.getModifiers().contains(modif);
+ }
+ return true;
+ }
+
+ public default boolean addModifiers(AnnotableAndModifiable aam, Modifier[] modifs) {
+ return this.doMultipleModifications(aam, modifs, this::addModifier);
+ }
+
+ public default boolean addAnnotationInstance(AnnotableAndModifiable aam, AnnotationInstance annoAndModif) {
+ if (aam != null) {
+ aam.getAnnotationsAndModifiers().add(annoAndModif);
+ return aam.getAnnotationsAndModifiers().contains(annoAndModif)
+ && aam.getAnnotationInstances().contains(annoAndModif);
+ }
+ return true;
+ }
+
+ public default boolean addAnnotationInstances(AnnotableAndModifiable aam, AnnotationInstance[] annoAndModifArr) {
+ return this.doMultipleModifications(aam, annoAndModifArr, this::addAnnotationInstance);
+ }
+
+ public default boolean makePrivate(AnnotableAndModifiable aam) {
+ aam.makePrivate();
+ return aam.isPrivate();
+ }
+
+ public default boolean makeProtected(AnnotableAndModifiable aam) {
+ aam.makeProtected();
+ return aam.isProtected();
+ }
+
+ public default boolean makePublic(AnnotableAndModifiable aam) {
+ aam.makePublic();
+ return aam.isPublic();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java
new file mode 100644
index 0000000000..465882b611
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.AnnotationInstanceOrModifier;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IAnnotationInstanceOrModifierInitialiser extends ICommentableInitialiser {
+ @Override
+ public AnnotationInstanceOrModifier instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java
new file mode 100644
index 0000000000..03a7ec9693
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Default;
+
+public interface IDefaultInitialiser extends IModifierInitialiser {
+ @Override
+ public Default instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java
new file mode 100644
index 0000000000..ef4990dda1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Final;
+
+public interface IFinalInitialiser extends IModifierInitialiser {
+ @Override
+ public Final instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java
new file mode 100644
index 0000000000..661c72291d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Modifiable;
+import org.emftext.language.java.modifiers.Modifier;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IModifiableInitialiser extends ICommentableInitialiser {
+ @Override
+ public Modifiable instantiate();
+
+ public default boolean addModifier(Modifiable modifiable, Modifier modifier) {
+ if (modifier != null) {
+ modifiable.getModifiers().add(modifier);
+ return modifiable.getModifiers().contains(modifier);
+ }
+ return true;
+ }
+
+ public default boolean addModifiers(Modifiable modifiable, Modifier[] modifiers) {
+ return this.doMultipleModifications(modifiable, modifiers, this::addModifier);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java
new file mode 100644
index 0000000000..27c5c5fa2e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Modifier;
+
+public interface IModifierInitialiser extends IAnnotationInstanceOrModifierInitialiser {
+ @Override
+ public Modifier instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java
new file mode 100644
index 0000000000..2aaffbf9ab
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModuleRequiresModifier;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IModuleRequiresModifierInitialiser extends ICommentableInitialiser {
+ @Override
+ public ModuleRequiresModifier instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java
new file mode 100644
index 0000000000..46cc6644c7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Native;
+
+public interface INativeInitialiser extends IModifierInitialiser {
+ @Override
+ public Native instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java
new file mode 100644
index 0000000000..7e7bf42537
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Open;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IOpenInitialiser extends ICommentableInitialiser {
+ @Override
+ public Open instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java
new file mode 100644
index 0000000000..fd5e02c8ac
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Private;
+
+public interface IPrivateInitialiser extends IModifierInitialiser {
+ @Override
+ public Private instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java
new file mode 100644
index 0000000000..b065700663
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Protected;
+
+public interface IProtectedInitialiser extends IModifierInitialiser {
+ @Override
+ public Protected instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java
new file mode 100644
index 0000000000..167a7c7d0e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Public;
+
+public interface IPublicInitialiser extends IModifierInitialiser {
+ @Override
+ public Public instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java
new file mode 100644
index 0000000000..717eb299cd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Static;
+
+public interface IStaticInitialiser extends IModifierInitialiser, IModuleRequiresModifierInitialiser {
+ @Override
+ public Static instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java
new file mode 100644
index 0000000000..6358b945b7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Strictfp;
+
+public interface IStrictfpInitialiser extends IModifierInitialiser {
+ @Override
+ public Strictfp instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java
new file mode 100644
index 0000000000..756db7b74f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Synchronized;
+
+public interface ISynchronizedInitialiser extends IModifierInitialiser {
+ @Override
+ public Synchronized instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java
new file mode 100644
index 0000000000..79bebacc23
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Transient;
+
+public interface ITransientInitialiser extends IModifierInitialiser {
+ @Override
+ public Transient instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java
new file mode 100644
index 0000000000..26fd343e6f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Transitive;
+
+public interface ITransitiveInitialiser extends IModuleRequiresModifierInitialiser {
+ @Override
+ public Transitive instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java
new file mode 100644
index 0000000000..f3e15c56c1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.Volatile;
+
+public interface IVolatileInitialiser extends IModifierInitialiser {
+ @Override
+ public Volatile instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java
new file mode 100644
index 0000000000..9c9ceec4c6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java
@@ -0,0 +1,29 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ModifiersInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AbstractInitialiser(), new DefaultInitialiser(),
+ new FinalInitialiser(), new NativeInitialiser(), new OpenInitialiser(), new PrivateInitialiser(),
+ new ProtectedInitialiser(), new PublicInitialiser(), new StaticInitialiser(), new StrictfpInitialiser(),
+ new SynchronizedInitialiser(), new TransientInitialiser(), new TransitiveInitialiser(),
+ new VolatileInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAbstractInitialiser.class, IAnnotableAndModifiableInitialiser.class,
+ IAnnotationInstanceOrModifierInitialiser.class, IDefaultInitialiser.class, IFinalInitialiser.class,
+ IModifiableInitialiser.class, IModifierInitialiser.class, IModuleRequiresModifierInitialiser.class,
+ INativeInitialiser.class, IOpenInitialiser.class, IPrivateInitialiser.class,
+ IProtectedInitialiser.class, IPublicInitialiser.class, IStaticInitialiser.class,
+ IStrictfpInitialiser.class, ISynchronizedInitialiser.class, ITransientInitialiser.class,
+ ITransitiveInitialiser.class, IVolatileInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java
new file mode 100644
index 0000000000..fe50335de2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Native;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NativeInitialiser extends AbstractInitialiserBase implements INativeInitialiser {
+ @Override
+ public INativeInitialiser newInitialiser() {
+ return new NativeInitialiser();
+ }
+
+ @Override
+ public Native instantiate() {
+ return ModifiersFactory.eINSTANCE.createNative();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java
new file mode 100644
index 0000000000..3f6a736753
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Open;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class OpenInitialiser extends AbstractInitialiserBase implements IOpenInitialiser {
+ @Override
+ public IOpenInitialiser newInitialiser() {
+ return new OpenInitialiser();
+ }
+
+ @Override
+ public Open instantiate() {
+ return ModifiersFactory.eINSTANCE.createOpen();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java
new file mode 100644
index 0000000000..30d2eacd08
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Private;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PrivateInitialiser extends AbstractInitialiserBase implements IPrivateInitialiser {
+ @Override
+ public IPrivateInitialiser newInitialiser() {
+ return new PrivateInitialiser();
+ }
+
+ @Override
+ public Private instantiate() {
+ return ModifiersFactory.eINSTANCE.createPrivate();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java
new file mode 100644
index 0000000000..04d43fb70b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Protected;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ProtectedInitialiser extends AbstractInitialiserBase implements IProtectedInitialiser {
+ @Override
+ public IProtectedInitialiser newInitialiser() {
+ return new ProtectedInitialiser();
+ }
+
+ @Override
+ public Protected instantiate() {
+ return ModifiersFactory.eINSTANCE.createProtected();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java
new file mode 100644
index 0000000000..359133dc9f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Public;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PublicInitialiser extends AbstractInitialiserBase implements IPublicInitialiser {
+ @Override
+ public IPublicInitialiser newInitialiser() {
+ return new PublicInitialiser();
+ }
+
+ @Override
+ public Public instantiate() {
+ return ModifiersFactory.eINSTANCE.createPublic();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java
new file mode 100644
index 0000000000..a0e7a1c774
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Static;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class StaticInitialiser extends AbstractInitialiserBase implements IStaticInitialiser {
+ @Override
+ public IStaticInitialiser newInitialiser() {
+ return new StaticInitialiser();
+ }
+
+ @Override
+ public Static instantiate() {
+ return ModifiersFactory.eINSTANCE.createStatic();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java
new file mode 100644
index 0000000000..959fb50843
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Strictfp;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class StrictfpInitialiser extends AbstractInitialiserBase implements IStrictfpInitialiser {
+ @Override
+ public IStrictfpInitialiser newInitialiser() {
+ return new StrictfpInitialiser();
+ }
+
+ @Override
+ public Strictfp instantiate() {
+ return ModifiersFactory.eINSTANCE.createStrictfp();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java
new file mode 100644
index 0000000000..c34e647443
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Synchronized;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SynchronizedInitialiser extends AbstractInitialiserBase implements ISynchronizedInitialiser {
+ @Override
+ public ISynchronizedInitialiser newInitialiser() {
+ return new SynchronizedInitialiser();
+ }
+
+ @Override
+ public Synchronized instantiate() {
+ return ModifiersFactory.eINSTANCE.createSynchronized();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java
new file mode 100644
index 0000000000..6306cb488c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Transient;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class TransientInitialiser extends AbstractInitialiserBase implements ITransientInitialiser {
+ @Override
+ public ITransientInitialiser newInitialiser() {
+ return new TransientInitialiser();
+ }
+
+ @Override
+ public Transient instantiate() {
+ return ModifiersFactory.eINSTANCE.createTransient();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java
new file mode 100644
index 0000000000..e26b3311ff
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Transitive;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class TransitiveInitialiser extends AbstractInitialiserBase implements ITransitiveInitialiser {
+ @Override
+ public ITransitiveInitialiser newInitialiser() {
+ return new TransitiveInitialiser();
+ }
+
+ @Override
+ public Transitive instantiate() {
+ return ModifiersFactory.eINSTANCE.createTransitive();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java
new file mode 100644
index 0000000000..3083085f00
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modifiers;
+
+import org.emftext.language.java.modifiers.ModifiersFactory;
+import org.emftext.language.java.modifiers.Volatile;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class VolatileInitialiser extends AbstractInitialiserBase implements IVolatileInitialiser {
+ @Override
+ public IVolatileInitialiser newInitialiser() {
+ return new VolatileInitialiser();
+ }
+
+ @Override
+ public Volatile instantiate() {
+ return ModifiersFactory.eINSTANCE.createVolatile();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java
new file mode 100644
index 0000000000..cb720cbcf9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.modifiers}.
+ */
+package cipm.consistency.initialisers.jamopp.modifiers;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..4e6a5f7640
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModulesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.modules.ExportsModuleDirective;
+
+public class ExportsModuleDirectiveInitialiser extends AbstractInitialiserBase
+ implements IExportsModuleDirectiveInitialiser {
+ @Override
+ public IExportsModuleDirectiveInitialiser newInitialiser() {
+ return new ExportsModuleDirectiveInitialiser();
+ }
+
+ @Override
+ public ExportsModuleDirective instantiate() {
+ return ModulesFactory.eINSTANCE.createExportsModuleDirective();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..a5cebd8d4f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java
@@ -0,0 +1,31 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.containers.Package;
+import org.emftext.language.java.modules.AccessProvidingModuleDirective;
+import org.emftext.language.java.modules.ModuleReference;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface IAccessProvidingModuleDirectiveInitialiser
+ extends IModuleDirectiveInitialiser, INamespaceAwareElementInitialiser {
+ @Override
+ public AccessProvidingModuleDirective instantiate();
+
+ public default boolean setAccessablePackage(AccessProvidingModuleDirective apmd, Package accessablePac) {
+ apmd.setAccessablePackage(accessablePac);
+ return (accessablePac == null && apmd.getAccessablePackage() == null)
+ || apmd.getAccessablePackage().equals(accessablePac);
+ }
+
+ public default boolean addModule(AccessProvidingModuleDirective apmd, ModuleReference mod) {
+ if (mod != null) {
+ apmd.getModules().add(mod);
+ return apmd.getModules().contains(mod);
+ }
+ return true;
+ }
+
+ public default boolean addModules(AccessProvidingModuleDirective apmd, ModuleReference[] mods) {
+ return this.doMultipleModifications(apmd, mods, this::addModule);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..fb47a93778
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ExportsModuleDirective;
+
+public interface IExportsModuleDirectiveInitialiser extends IAccessProvidingModuleDirectiveInitialiser {
+ @Override
+ public ExportsModuleDirective instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..de2f1b1183
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModuleDirective;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IModuleDirectiveInitialiser extends ICommentableInitialiser {
+ @Override
+ public ModuleDirective instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java
new file mode 100644
index 0000000000..5d9f4cbf20
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.containers.Module;
+import org.emftext.language.java.modules.ModuleReference;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface IModuleReferenceInitialiser extends INamespaceAwareElementInitialiser {
+ @Override
+ public ModuleReference instantiate();
+
+ public default boolean setTarget(ModuleReference mref, Module target) {
+ mref.setTarget(target);
+ return (target == null && mref.getTarget() == null) || mref.getTarget().equals(target);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..c70121f14d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.OpensModuleDirective;
+
+public interface IOpensModuleDirectiveInitialiser extends IAccessProvidingModuleDirectiveInitialiser {
+ @Override
+ public OpensModuleDirective instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..a868d73fe9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ProvidesModuleDirective;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IProvidesModuleDirectiveInitialiser extends IModuleDirectiveInitialiser, ITypedElementInitialiser {
+ @Override
+ public ProvidesModuleDirective instantiate();
+
+ public default boolean addServiceProvider(ProvidesModuleDirective pmd, TypeReference serviceProvider) {
+ if (serviceProvider != null) {
+ pmd.getServiceProviders().add(serviceProvider);
+ return pmd.getServiceProviders().contains(serviceProvider);
+ }
+ return true;
+ }
+
+ public default boolean addServiceProviders(ProvidesModuleDirective pmd, TypeReference[] serviceProviders) {
+ return this.doMultipleModifications(pmd, serviceProviders, this::addServiceProvider);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..06611071c6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modifiers.ModuleRequiresModifier;
+import org.emftext.language.java.modules.ModuleReference;
+import org.emftext.language.java.modules.RequiresModuleDirective;
+
+public interface IRequiresModuleDirectiveInitialiser extends IModuleDirectiveInitialiser {
+ @Override
+ public RequiresModuleDirective instantiate();
+
+ public default boolean setModifier(RequiresModuleDirective rmd, ModuleRequiresModifier modif) {
+ rmd.setModifier(modif);
+ return (modif == null && rmd.getModifier() == null) || rmd.getModifier().equals(modif);
+ }
+
+ public default boolean setRequiredModule(RequiresModuleDirective rmd, ModuleReference reqMod) {
+ rmd.setRequiredModule(reqMod);
+ return (reqMod == null && rmd.getRequiredModule() == null) || rmd.getRequiredModule().equals(reqMod);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..79f73e7bfc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.UsesModuleDirective;
+
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IUsesModuleDirectiveInitialiser extends IModuleDirectiveInitialiser, ITypedElementInitialiser {
+ @Override
+ public UsesModuleDirective instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java
new file mode 100644
index 0000000000..6236cc2b31
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModuleReference;
+import org.emftext.language.java.modules.ModulesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ModuleReferenceInitialiser extends AbstractInitialiserBase implements IModuleReferenceInitialiser {
+ @Override
+ public IModuleReferenceInitialiser newInitialiser() {
+ return new ModuleReferenceInitialiser();
+ }
+
+ @Override
+ public ModuleReference instantiate() {
+ return ModulesFactory.eINSTANCE.createModuleReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java
new file mode 100644
index 0000000000..6d2fa8da89
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java
@@ -0,0 +1,26 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ModulesInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this
+ .initCol(new IInitialiser[] { new ExportsModuleDirectiveInitialiser(), new ModuleReferenceInitialiser(),
+ new OpensModuleDirectiveInitialiser(), new ProvidesModuleDirectiveInitialiser(),
+ new RequiresModuleDirectiveInitialiser(), new UsesModuleDirectiveInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAccessProvidingModuleDirectiveInitialiser.class,
+ IExportsModuleDirectiveInitialiser.class, IModuleDirectiveInitialiser.class,
+ IModuleReferenceInitialiser.class, IOpensModuleDirectiveInitialiser.class,
+ IProvidesModuleDirectiveInitialiser.class, IRequiresModuleDirectiveInitialiser.class,
+ IUsesModuleDirectiveInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..ecabb28de7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModulesFactory;
+import org.emftext.language.java.modules.OpensModuleDirective;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class OpensModuleDirectiveInitialiser extends AbstractInitialiserBase
+ implements IOpensModuleDirectiveInitialiser {
+ @Override
+ public IOpensModuleDirectiveInitialiser newInitialiser() {
+ return new OpensModuleDirectiveInitialiser();
+ }
+
+ @Override
+ public OpensModuleDirective instantiate() {
+ return ModulesFactory.eINSTANCE.createOpensModuleDirective();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..3dca94bcd9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModulesFactory;
+import org.emftext.language.java.modules.ProvidesModuleDirective;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ProvidesModuleDirectiveInitialiser extends AbstractInitialiserBase
+ implements IProvidesModuleDirectiveInitialiser {
+ @Override
+ public IProvidesModuleDirectiveInitialiser newInitialiser() {
+ return new ProvidesModuleDirectiveInitialiser();
+ }
+
+ @Override
+ public ProvidesModuleDirective instantiate() {
+ return ModulesFactory.eINSTANCE.createProvidesModuleDirective();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..d698fa74bd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModulesFactory;
+import org.emftext.language.java.modules.RequiresModuleDirective;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class RequiresModuleDirectiveInitialiser extends AbstractInitialiserBase
+ implements IRequiresModuleDirectiveInitialiser {
+ @Override
+ public IRequiresModuleDirectiveInitialiser newInitialiser() {
+ return new RequiresModuleDirectiveInitialiser();
+ }
+
+ @Override
+ public RequiresModuleDirective instantiate() {
+ return ModulesFactory.eINSTANCE.createRequiresModuleDirective();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java
new file mode 100644
index 0000000000..3784a49959
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.modules;
+
+import org.emftext.language.java.modules.ModulesFactory;
+import org.emftext.language.java.modules.UsesModuleDirective;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class UsesModuleDirectiveInitialiser extends AbstractInitialiserBase implements IUsesModuleDirectiveInitialiser {
+ @Override
+ public IUsesModuleDirectiveInitialiser newInitialiser() {
+ return new UsesModuleDirectiveInitialiser();
+ }
+
+ @Override
+ public UsesModuleDirective instantiate() {
+ return ModulesFactory.eINSTANCE.createUsesModuleDirective();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java
new file mode 100644
index 0000000000..c47531f1d7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.modules}.
+ */
+package cipm.consistency.initialisers.jamopp.modules;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java
new file mode 100644
index 0000000000..4d471b6c58
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Addition;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AdditionInitialiser extends AbstractInitialiserBase implements IAdditionInitialiser {
+ @Override
+ public IAdditionInitialiser newInitialiser() {
+ return new AdditionInitialiser();
+ }
+
+ @Override
+ public Addition instantiate() {
+ return OperatorsFactory.eINSTANCE.createAddition();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java
new file mode 100644
index 0000000000..6bf41b5fb2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentAnd;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentAndInitialiser extends AbstractInitialiserBase implements IAssignmentAndInitialiser {
+ @Override
+ public IAssignmentAndInitialiser newInitialiser() {
+ return new AssignmentAndInitialiser();
+ }
+
+ @Override
+ public AssignmentAnd instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentAnd();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java
new file mode 100644
index 0000000000..87603fab53
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentDivision;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentDivisionInitialiser extends AbstractInitialiserBase implements IAssignmentDivisionInitialiser {
+ @Override
+ public IAssignmentDivisionInitialiser newInitialiser() {
+ return new AssignmentDivisionInitialiser();
+ }
+
+ @Override
+ public AssignmentDivision instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentDivision();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java
new file mode 100644
index 0000000000..87aa83cb5b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentExclusiveOr;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentExclusiveOrInitialiser extends AbstractInitialiserBase
+ implements IAssignmentExclusiveOrInitialiser {
+ @Override
+ public IAssignmentExclusiveOrInitialiser newInitialiser() {
+ return new AssignmentExclusiveOrInitialiser();
+ }
+
+ @Override
+ public AssignmentExclusiveOr instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentExclusiveOr();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java
new file mode 100644
index 0000000000..de14f68b75
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Assignment;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentInitialiser extends AbstractInitialiserBase implements IAssignmentInitialiser {
+ @Override
+ public IAssignmentInitialiser newInitialiser() {
+ return new AssignmentInitialiser();
+ }
+
+ @Override
+ public Assignment instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignment();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java
new file mode 100644
index 0000000000..cbeed302e5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentLeftShift;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentLeftShiftInitialiser extends AbstractInitialiserBase implements IAssignmentLeftShiftInitialiser {
+ @Override
+ public IAssignmentLeftShiftInitialiser newInitialiser() {
+ return new AssignmentLeftShiftInitialiser();
+ }
+
+ @Override
+ public AssignmentLeftShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentLeftShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java
new file mode 100644
index 0000000000..0ccbe2d899
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentMinus;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentMinusInitialiser extends AbstractInitialiserBase implements IAssignmentMinusInitialiser {
+ @Override
+ public IAssignmentMinusInitialiser newInitialiser() {
+ return new AssignmentMinusInitialiser();
+ }
+
+ @Override
+ public AssignmentMinus instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentMinus();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java
new file mode 100644
index 0000000000..9e14caa456
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentModulo;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentModuloInitialiser extends AbstractInitialiserBase implements IAssignmentModuloInitialiser {
+ @Override
+ public IAssignmentModuloInitialiser newInitialiser() {
+ return new AssignmentModuloInitialiser();
+ }
+
+ @Override
+ public AssignmentModulo instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentModulo();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java
new file mode 100644
index 0000000000..758a4e6235
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentMultiplication;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentMultiplicationInitialiser extends AbstractInitialiserBase
+ implements IAssignmentMultiplicationInitialiser {
+ @Override
+ public IAssignmentMultiplicationInitialiser newInitialiser() {
+ return new AssignmentMultiplicationInitialiser();
+ }
+
+ @Override
+ public AssignmentMultiplication instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentMultiplication();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java
new file mode 100644
index 0000000000..48b44e3c6a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentOr;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentOrInitialiser extends AbstractInitialiserBase implements IAssignmentOrInitialiser {
+ @Override
+ public IAssignmentOrInitialiser newInitialiser() {
+ return new AssignmentOrInitialiser();
+ }
+
+ @Override
+ public AssignmentOr instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentOr();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java
new file mode 100644
index 0000000000..9c2cf0ad20
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentPlus;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentPlusInitialiser extends AbstractInitialiserBase implements IAssignmentPlusInitialiser {
+ @Override
+ public IAssignmentPlusInitialiser newInitialiser() {
+ return new AssignmentPlusInitialiser();
+ }
+
+ @Override
+ public AssignmentPlus instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentPlus();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java
new file mode 100644
index 0000000000..8ed66a0d9c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentRightShift;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentRightShiftInitialiser extends AbstractInitialiserBase
+ implements IAssignmentRightShiftInitialiser {
+ @Override
+ public IAssignmentRightShiftInitialiser newInitialiser() {
+ return new AssignmentRightShiftInitialiser();
+ }
+
+ @Override
+ public AssignmentRightShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentRightShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java
new file mode 100644
index 0000000000..ce7ac8df1b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentUnsignedRightShift;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class AssignmentUnsignedRightShiftInitialiser extends AbstractInitialiserBase
+ implements IAssignmentUnsignedRightShiftInitialiser {
+ @Override
+ public IAssignmentUnsignedRightShiftInitialiser newInitialiser() {
+ return new AssignmentUnsignedRightShiftInitialiser();
+ }
+
+ @Override
+ public AssignmentUnsignedRightShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java
new file mode 100644
index 0000000000..15e3705d12
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Complement;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ComplementInitialiser extends AbstractInitialiserBase implements IComplementInitialiser {
+ @Override
+ public IComplementInitialiser newInitialiser() {
+ return new ComplementInitialiser();
+ }
+
+ @Override
+ public Complement instantiate() {
+ return OperatorsFactory.eINSTANCE.createComplement();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java
new file mode 100644
index 0000000000..57d18cd051
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Division;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DivisionInitialiser extends AbstractInitialiserBase implements IDivisionInitialiser {
+ @Override
+ public IDivisionInitialiser newInitialiser() {
+ return new DivisionInitialiser();
+ }
+
+ @Override
+ public Division instantiate() {
+ return OperatorsFactory.eINSTANCE.createDivision();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java
new file mode 100644
index 0000000000..b21d2851c3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Equal;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EqualInitialiser extends AbstractInitialiserBase implements IEqualInitialiser {
+ @Override
+ public IEqualInitialiser newInitialiser() {
+ return new EqualInitialiser();
+ }
+
+ @Override
+ public Equal instantiate() {
+ return OperatorsFactory.eINSTANCE.createEqual();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java
new file mode 100644
index 0000000000..27524974c5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.GreaterThan;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class GreaterThanInitialiser extends AbstractInitialiserBase implements IGreaterThanInitialiser {
+ @Override
+ public IGreaterThanInitialiser newInitialiser() {
+ return new GreaterThanInitialiser();
+ }
+
+ @Override
+ public GreaterThan instantiate() {
+ return OperatorsFactory.eINSTANCE.createGreaterThan();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java
new file mode 100644
index 0000000000..bc864b1fa5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.GreaterThanOrEqual;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class GreaterThanOrEqualInitialiser extends AbstractInitialiserBase implements IGreaterThanOrEqualInitialiser {
+ @Override
+ public IGreaterThanOrEqualInitialiser newInitialiser() {
+ return new GreaterThanOrEqualInitialiser();
+ }
+
+ @Override
+ public GreaterThanOrEqual instantiate() {
+ return OperatorsFactory.eINSTANCE.createGreaterThanOrEqual();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java
new file mode 100644
index 0000000000..5e63e082d3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Addition;
+
+public interface IAdditionInitialiser extends IAdditiveOperatorInitialiser {
+ @Override
+ public Addition instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java
new file mode 100644
index 0000000000..d48d8334d5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AdditiveOperator;
+
+public interface IAdditiveOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public AdditiveOperator instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java
new file mode 100644
index 0000000000..405817a773
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentAnd;
+
+public interface IAssignmentAndInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentAnd instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java
new file mode 100644
index 0000000000..52686c2d48
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentDivision;
+
+public interface IAssignmentDivisionInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentDivision instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java
new file mode 100644
index 0000000000..54501a8ce5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentExclusiveOr;
+
+public interface IAssignmentExclusiveOrInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentExclusiveOr instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java
new file mode 100644
index 0000000000..f893c2c8e8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Assignment;
+
+public interface IAssignmentInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public Assignment instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java
new file mode 100644
index 0000000000..45101827f7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentLeftShift;
+
+public interface IAssignmentLeftShiftInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentLeftShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java
new file mode 100644
index 0000000000..dbefdf1ee5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentMinus;
+
+public interface IAssignmentMinusInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentMinus instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java
new file mode 100644
index 0000000000..4a62118c8d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentModulo;
+
+public interface IAssignmentModuloInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentModulo instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java
new file mode 100644
index 0000000000..d594065636
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentMultiplication;
+
+public interface IAssignmentMultiplicationInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentMultiplication instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java
new file mode 100644
index 0000000000..1a8e008305
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentOperator;
+
+public interface IAssignmentOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public AssignmentOperator instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java
new file mode 100644
index 0000000000..3512ef3531
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentOr;
+
+public interface IAssignmentOrInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentOr instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java
new file mode 100644
index 0000000000..b8b0125c7c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentPlus;
+
+public interface IAssignmentPlusInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentPlus instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java
new file mode 100644
index 0000000000..1328e71eab
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentRightShift;
+
+public interface IAssignmentRightShiftInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentRightShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java
new file mode 100644
index 0000000000..a119eaeb6f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.AssignmentUnsignedRightShift;
+
+public interface IAssignmentUnsignedRightShiftInitialiser extends IAssignmentOperatorInitialiser {
+ @Override
+ public AssignmentUnsignedRightShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java
new file mode 100644
index 0000000000..54956de8d0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Complement;
+
+public interface IComplementInitialiser extends IUnaryOperatorInitialiser {
+ @Override
+ public Complement instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java
new file mode 100644
index 0000000000..2af6f49a07
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Division;
+
+public interface IDivisionInitialiser extends IMultiplicativeOperatorInitialiser {
+ @Override
+ public Division instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java
new file mode 100644
index 0000000000..2206d5158e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Equal;
+
+public interface IEqualInitialiser extends IEqualityOperatorInitialiser {
+ @Override
+ public Equal instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java
new file mode 100644
index 0000000000..24f7cb4671
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.EqualityOperator;
+
+public interface IEqualityOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public EqualityOperator instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java
new file mode 100644
index 0000000000..06eb70aaa2
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.GreaterThan;
+
+public interface IGreaterThanInitialiser extends IRelationOperatorInitialiser {
+ @Override
+ public GreaterThan instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java
new file mode 100644
index 0000000000..fe3d7ea663
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.GreaterThanOrEqual;
+
+public interface IGreaterThanOrEqualInitialiser extends IRelationOperatorInitialiser {
+ @Override
+ public GreaterThanOrEqual instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java
new file mode 100644
index 0000000000..a6a98db588
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LeftShift;
+
+public interface ILeftShiftInitialiser extends IShiftOperatorInitialiser {
+ @Override
+ public LeftShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java
new file mode 100644
index 0000000000..8fcc9ec1c7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LessThan;
+
+public interface ILessThanInitialiser extends IRelationOperatorInitialiser {
+ @Override
+ public LessThan instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java
new file mode 100644
index 0000000000..81315c9718
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LessThanOrEqual;
+
+public interface ILessThanOrEqualInitialiser extends IRelationOperatorInitialiser {
+ @Override
+ public LessThanOrEqual instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java
new file mode 100644
index 0000000000..cd93169c27
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.MinusMinus;
+
+public interface IMinusMinusInitialiser extends IUnaryModificationOperatorInitialiser {
+ @Override
+ public MinusMinus instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java
new file mode 100644
index 0000000000..35c57996f7
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Multiplication;
+
+public interface IMultiplicationInitialiser extends IMultiplicativeOperatorInitialiser {
+ @Override
+ public Multiplication instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java
new file mode 100644
index 0000000000..e0ae532330
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.MultiplicativeOperator;
+
+public interface IMultiplicativeOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public MultiplicativeOperator instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java
new file mode 100644
index 0000000000..6de5066283
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Negate;
+
+public interface INegateInitialiser extends IUnaryOperatorInitialiser {
+ @Override
+ public Negate instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java
new file mode 100644
index 0000000000..83c5a9696a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.NotEqual;
+
+public interface INotEqualInitialiser extends IEqualityOperatorInitialiser {
+ @Override
+ public NotEqual instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java
new file mode 100644
index 0000000000..c74f5a476a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Operator;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IOperatorInitialiser extends ICommentableInitialiser {
+ @Override
+ public Operator instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java
new file mode 100644
index 0000000000..7d28bc4bc4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.PlusPlus;
+
+public interface IPlusPlusInitialiser extends IUnaryModificationOperatorInitialiser {
+ @Override
+ public PlusPlus instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java
new file mode 100644
index 0000000000..5f7998fe22
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.RelationOperator;
+
+public interface IRelationOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public RelationOperator instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java
new file mode 100644
index 0000000000..2c635a05d5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Remainder;
+
+public interface IRemainderInitialiser extends IMultiplicativeOperatorInitialiser {
+ @Override
+ public Remainder instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java
new file mode 100644
index 0000000000..cd18544d14
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.RightShift;
+
+public interface IRightShiftInitialiser extends IShiftOperatorInitialiser {
+ @Override
+ public RightShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java
new file mode 100644
index 0000000000..e18dc95028
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.ShiftOperator;
+
+public interface IShiftOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public ShiftOperator instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java
new file mode 100644
index 0000000000..c0776b0995
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Subtraction;
+
+public interface ISubtractionInitialiser extends IAdditiveOperatorInitialiser {
+ @Override
+ public Subtraction instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java
new file mode 100644
index 0000000000..efd06dc63d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.UnaryModificationOperator;
+
+public interface IUnaryModificationOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public UnaryModificationOperator instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java
new file mode 100644
index 0000000000..ef4e219488
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.UnaryOperator;
+
+public interface IUnaryOperatorInitialiser extends IOperatorInitialiser {
+ @Override
+ public UnaryOperator instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java
new file mode 100644
index 0000000000..cada84eed8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.UnsignedRightShift;
+
+public interface IUnsignedRightShiftInitialiser extends IShiftOperatorInitialiser {
+ @Override
+ public UnsignedRightShift instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java
new file mode 100644
index 0000000000..a92d5e138a
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LeftShift;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LeftShiftInitialiser extends AbstractInitialiserBase implements ILeftShiftInitialiser {
+ @Override
+ public ILeftShiftInitialiser newInitialiser() {
+ return new LeftShiftInitialiser();
+ }
+
+ @Override
+ public LeftShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createLeftShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java
new file mode 100644
index 0000000000..e2e5b39add
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LessThan;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LessThanInitialiser extends AbstractInitialiserBase implements ILessThanInitialiser {
+ @Override
+ public ILessThanInitialiser newInitialiser() {
+ return new LessThanInitialiser();
+ }
+
+ @Override
+ public LessThan instantiate() {
+ return OperatorsFactory.eINSTANCE.createLessThan();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java
new file mode 100644
index 0000000000..aa0519d3ca
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.LessThanOrEqual;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LessThanOrEqualInitialiser extends AbstractInitialiserBase implements ILessThanOrEqualInitialiser {
+ @Override
+ public ILessThanOrEqualInitialiser newInitialiser() {
+ return new LessThanOrEqualInitialiser();
+ }
+
+ @Override
+ public LessThanOrEqual instantiate() {
+ return OperatorsFactory.eINSTANCE.createLessThanOrEqual();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java
new file mode 100644
index 0000000000..eb22f66029
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.MinusMinus;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class MinusMinusInitialiser extends AbstractInitialiserBase implements IMinusMinusInitialiser {
+ @Override
+ public IMinusMinusInitialiser newInitialiser() {
+ return new MinusMinusInitialiser();
+ }
+
+ @Override
+ public MinusMinus instantiate() {
+ return OperatorsFactory.eINSTANCE.createMinusMinus();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java
new file mode 100644
index 0000000000..559e213443
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Multiplication;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class MultiplicationInitialiser extends AbstractInitialiserBase implements IMultiplicationInitialiser {
+ @Override
+ public IMultiplicationInitialiser newInitialiser() {
+ return new MultiplicationInitialiser();
+ }
+
+ @Override
+ public Multiplication instantiate() {
+ return OperatorsFactory.eINSTANCE.createMultiplication();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java
new file mode 100644
index 0000000000..25386a661c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.Negate;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NegateInitialiser extends AbstractInitialiserBase implements INegateInitialiser {
+ @Override
+ public INegateInitialiser newInitialiser() {
+ return new NegateInitialiser();
+ }
+
+ @Override
+ public Negate instantiate() {
+ return OperatorsFactory.eINSTANCE.createNegate();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java
new file mode 100644
index 0000000000..93cc16b45b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.NotEqual;
+import org.emftext.language.java.operators.OperatorsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NotEqualInitialiser extends AbstractInitialiserBase implements INotEqualInitialiser {
+ @Override
+ public INotEqualInitialiser newInitialiser() {
+ return new NotEqualInitialiser();
+ }
+
+ @Override
+ public NotEqual instantiate() {
+ return OperatorsFactory.eINSTANCE.createNotEqual();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java
new file mode 100644
index 0000000000..f84c06fddb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java
@@ -0,0 +1,44 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class OperatorsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AdditionInitialiser(), new AssignmentAndInitialiser(),
+ new AssignmentDivisionInitialiser(), new AssignmentExclusiveOrInitialiser(),
+ new AssignmentInitialiser(), new AssignmentLeftShiftInitialiser(), new AssignmentMinusInitialiser(),
+ new AssignmentModuloInitialiser(), new AssignmentMultiplicationInitialiser(),
+ new AssignmentOrInitialiser(), new AssignmentPlusInitialiser(), new AssignmentRightShiftInitialiser(),
+ new AssignmentUnsignedRightShiftInitialiser(), new ComplementInitialiser(), new DivisionInitialiser(),
+ new EqualInitialiser(), new GreaterThanInitialiser(), new GreaterThanOrEqualInitialiser(),
+ new LeftShiftInitialiser(), new LessThanInitialiser(), new LessThanOrEqualInitialiser(),
+ new MinusMinusInitialiser(), new MultiplicationInitialiser(), new NegateInitialiser(),
+ new NotEqualInitialiser(), new PlusPlusInitialiser(), new RemainderInitialiser(),
+ new RightShiftInitialiser(), new SubtractionInitialiser(), new UnsignedRightShiftInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAdditionInitialiser.class, IAdditiveOperatorInitialiser.class,
+ IAssignmentAndInitialiser.class, IAssignmentDivisionInitialiser.class,
+ IAssignmentExclusiveOrInitialiser.class, IAssignmentInitialiser.class,
+ IAssignmentLeftShiftInitialiser.class, IAssignmentMinusInitialiser.class,
+ IAssignmentModuloInitialiser.class, IAssignmentMultiplicationInitialiser.class,
+ IAssignmentOperatorInitialiser.class, IAssignmentOrInitialiser.class, IAssignmentPlusInitialiser.class,
+ IAssignmentRightShiftInitialiser.class, IAssignmentUnsignedRightShiftInitialiser.class,
+ IComplementInitialiser.class, IDivisionInitialiser.class, IEqualInitialiser.class,
+ IEqualityOperatorInitialiser.class, IGreaterThanInitialiser.class, IGreaterThanOrEqualInitialiser.class,
+ ILeftShiftInitialiser.class, ILessThanInitialiser.class, ILessThanOrEqualInitialiser.class,
+ IMinusMinusInitialiser.class, IMultiplicationInitialiser.class,
+ IMultiplicativeOperatorInitialiser.class, INegateInitialiser.class, INotEqualInitialiser.class,
+ IOperatorInitialiser.class, IPlusPlusInitialiser.class, IRelationOperatorInitialiser.class,
+ IRemainderInitialiser.class, IRightShiftInitialiser.class, IShiftOperatorInitialiser.class,
+ ISubtractionInitialiser.class, IUnaryModificationOperatorInitialiser.class,
+ IUnaryOperatorInitialiser.class, IUnsignedRightShiftInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java
new file mode 100644
index 0000000000..520890cb30
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.OperatorsFactory;
+import org.emftext.language.java.operators.PlusPlus;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PlusPlusInitialiser extends AbstractInitialiserBase implements IPlusPlusInitialiser {
+ @Override
+ public IPlusPlusInitialiser newInitialiser() {
+ return new PlusPlusInitialiser();
+ }
+
+ @Override
+ public PlusPlus instantiate() {
+ return OperatorsFactory.eINSTANCE.createPlusPlus();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java
new file mode 100644
index 0000000000..4445daa0d9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.OperatorsFactory;
+import org.emftext.language.java.operators.Remainder;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class RemainderInitialiser extends AbstractInitialiserBase implements IRemainderInitialiser {
+ @Override
+ public IRemainderInitialiser newInitialiser() {
+ return new RemainderInitialiser();
+ }
+
+ @Override
+ public Remainder instantiate() {
+ return OperatorsFactory.eINSTANCE.createRemainder();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java
new file mode 100644
index 0000000000..b5f2ca2e96
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.OperatorsFactory;
+import org.emftext.language.java.operators.RightShift;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class RightShiftInitialiser extends AbstractInitialiserBase implements IRightShiftInitialiser {
+ @Override
+ public IRightShiftInitialiser newInitialiser() {
+ return new RightShiftInitialiser();
+ }
+
+ @Override
+ public RightShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createRightShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java
new file mode 100644
index 0000000000..d50fb0e26b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.OperatorsFactory;
+import org.emftext.language.java.operators.Subtraction;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SubtractionInitialiser extends AbstractInitialiserBase implements ISubtractionInitialiser {
+ @Override
+ public ISubtractionInitialiser newInitialiser() {
+ return new SubtractionInitialiser();
+ }
+
+ @Override
+ public Subtraction instantiate() {
+ return OperatorsFactory.eINSTANCE.createSubtraction();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java
new file mode 100644
index 0000000000..74cf34179c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.operators;
+
+import org.emftext.language.java.operators.OperatorsFactory;
+import org.emftext.language.java.operators.UnsignedRightShift;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class UnsignedRightShiftInitialiser extends AbstractInitialiserBase implements IUnsignedRightShiftInitialiser {
+ @Override
+ public IUnsignedRightShiftInitialiser newInitialiser() {
+ return new UnsignedRightShiftInitialiser();
+ }
+
+ @Override
+ public UnsignedRightShift instantiate() {
+ return OperatorsFactory.eINSTANCE.createUnsignedRightShift();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java
new file mode 100644
index 0000000000..cf32b47e60
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.operators}.
+ */
+package cipm.consistency.initialisers.jamopp.operators;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java
new file mode 100644
index 0000000000..d1ece94497
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * Contains {@link IInitialiser} implementations for Java-related
+ * {@link EObject} implementors used by JaMoPP. Sub-packages contain concrete
+ * implementations and interfaces of concrete initialisers for their
+ * corresponding {@link EObject} implementor.
+ */
+package cipm.consistency.initialisers.jamopp;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java
new file mode 100644
index 0000000000..ca4b3746cd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.ParametersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.parameters.CatchParameter;
+
+public class CatchParameterInitialiser extends AbstractInitialiserBase implements ICatchParameterInitialiser {
+ @Override
+ public CatchParameter instantiate() {
+ return ParametersFactory.eINSTANCE.createCatchParameter();
+ }
+
+ @Override
+ public ICatchParameterInitialiser newInitialiser() {
+ return new CatchParameterInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java
new file mode 100644
index 0000000000..635d2c97eb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.CatchParameter;
+import org.emftext.language.java.types.TypeReference;
+
+public interface ICatchParameterInitialiser extends IOrdinaryParameterInitialiser {
+ @Override
+ public CatchParameter instantiate();
+
+ public default boolean addTypeReference(CatchParameter cp, TypeReference tRef) {
+ if (tRef != null) {
+ cp.getTypeReferences().add(tRef);
+ return cp.getTypeReferences().contains(tRef);
+ }
+ return true;
+ }
+
+ public default boolean addTypeReferences(CatchParameter cp, TypeReference[] tRefs) {
+ return this.doMultipleModifications(cp, tRefs, this::addTypeReference);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java
new file mode 100644
index 0000000000..b831bd0828
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java
@@ -0,0 +1,8 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+
+public interface IOrdinaryParameterInitialiser extends IParameterInitialiser {
+ @Override
+ public OrdinaryParameter instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java
new file mode 100644
index 0000000000..fd25c1bfc1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.Parameter;
+
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+import cipm.consistency.initialisers.jamopp.variables.IVariableInitialiser;
+
+public interface IParameterInitialiser extends IAnnotableAndModifiableInitialiser, IVariableInitialiser {
+ @Override
+ public Parameter instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java
new file mode 100644
index 0000000000..8c6d958efc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.Parameter;
+import org.emftext.language.java.parameters.Parametrizable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IParametrizableInitialiser extends ICommentableInitialiser {
+ @Override
+ public Parametrizable instantiate();
+
+ public default boolean addParameter(Parametrizable parametrizable, Parameter param) {
+ if (param != null) {
+ parametrizable.getParameters().add(param);
+ return parametrizable.getParameters().contains(param);
+ }
+ return true;
+ }
+
+ public default boolean addParameters(Parametrizable parametrizable, Parameter[] params) {
+ return this.doMultipleModifications(parametrizable, params, this::addParameter);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java
new file mode 100644
index 0000000000..fc2f373c85
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.literals.This;
+import org.emftext.language.java.parameters.ReceiverParameter;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+public interface IReceiverParameterInitialiser extends IAnnotableInitialiser, IParameterInitialiser {
+ @Override
+ public ReceiverParameter instantiate();
+
+ public default boolean setOuterTypeReference(ReceiverParameter rp, TypeReference otRef) {
+ rp.setOuterTypeReference(otRef);
+ return (otRef == null && rp.getOuterTypeReference() == null) || rp.getOuterTypeReference().equals(otRef);
+ }
+
+ public default boolean setThisReference(ReceiverParameter rp, This thisRef) {
+ rp.setThisReference(thisRef);
+ return (thisRef == null && rp.getThisReference() == null) || rp.getThisReference().equals(thisRef);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java
new file mode 100644
index 0000000000..47e04cbfbc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.VariableLengthParameter;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+public interface IVariableLengthParameterInitialiser extends IAnnotableInitialiser, IParameterInitialiser {
+ @Override
+ public VariableLengthParameter instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java
new file mode 100644
index 0000000000..6bc970f605
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.ParametersFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+
+public class OrdinaryParameterInitialiser extends AbstractInitialiserBase implements IOrdinaryParameterInitialiser {
+ @Override
+ public OrdinaryParameter instantiate() {
+ return ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ }
+
+ @Override
+ public IOrdinaryParameterInitialiser newInitialiser() {
+ return new OrdinaryParameterInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java
new file mode 100644
index 0000000000..d94531ce06
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ParametersInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new CatchParameterInitialiser(), new OrdinaryParameterInitialiser(),
+ new ReceiverParameterInitialiser(), new VariableLengthParameterInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { ICatchParameterInitialiser.class, IOrdinaryParameterInitialiser.class,
+ IParameterInitialiser.class, IParametrizableInitialiser.class, IReceiverParameterInitialiser.class,
+ IVariableLengthParameterInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java
new file mode 100644
index 0000000000..89bb051bbb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.ParametersFactory;
+import org.emftext.language.java.parameters.ReceiverParameter;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ReceiverParameterInitialiser extends AbstractInitialiserBase implements IReceiverParameterInitialiser {
+ @Override
+ public ReceiverParameter instantiate() {
+ return ParametersFactory.eINSTANCE.createReceiverParameter();
+ }
+
+ @Override
+ public IReceiverParameterInitialiser newInitialiser() {
+ return new ReceiverParameterInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java
new file mode 100644
index 0000000000..486a338bc8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.parameters;
+
+import org.emftext.language.java.parameters.ParametersFactory;
+import org.emftext.language.java.parameters.VariableLengthParameter;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class VariableLengthParameterInitialiser extends AbstractInitialiserBase
+ implements IVariableLengthParameterInitialiser {
+ @Override
+ public VariableLengthParameter instantiate() {
+ return ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ }
+
+ @Override
+ public IVariableLengthParameterInitialiser newInitialiser() {
+ return new VariableLengthParameterInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java
new file mode 100644
index 0000000000..a8f067bfae
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.parameters}.
+ */
+package cipm.consistency.initialisers.jamopp.parameters;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java
new file mode 100644
index 0000000000..0064816943
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java
@@ -0,0 +1,37 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.references.Argumentable;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link Argumentable} instances.
+ *
+ * {@code argable.getArgumentTypes().add(...)} cannot be used to modify argable.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IArgumentableInitialiser extends ICommentableInitialiser {
+ @Override
+ public Argumentable instantiate();
+
+ /**
+ * Adds the given expression arg to argable as an argument. Uses
+ * {@code argable.getArguments().add(...)} to do so.
+ *
+ * @see {@link IArgumentableInitialiser}
+ */
+ public default boolean addArgument(Argumentable argable, Expression arg) {
+ if (arg != null) {
+ argable.getArguments().add(arg);
+ return argable.getArguments().contains(arg);
+ }
+ return true;
+ }
+
+ public default boolean addArguments(Argumentable argable, Expression[] args) {
+ return this.doMultipleModifications(argable, args, this::addArgument);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java
new file mode 100644
index 0000000000..76280b6bd6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ElementReference;
+import org.emftext.language.java.references.ReferenceableElement;
+
+public interface IElementReferenceInitialiser extends IReferenceInitialiser {
+ @Override
+ public ElementReference instantiate();
+
+ public default boolean setContainedTarget(ElementReference eref, ReferenceableElement conTarget) {
+ eref.setContainedTarget(conTarget);
+ return (conTarget == null && eref.getContainedTarget() == null) || eref.getContainedTarget().equals(conTarget);
+ }
+
+ public default boolean setTarget(ElementReference eref, ReferenceableElement target) {
+ eref.setTarget(target);
+ return (target == null && eref.getTarget() == null) || eref.getTarget().equals(target);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java
new file mode 100644
index 0000000000..87e073b44c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java
@@ -0,0 +1,12 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.IdentifierReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser;
+
+public interface IIdentifierReferenceInitialiser
+ extends IAnnotableInitialiser, IArrayTypeableInitialiser, IElementReferenceInitialiser {
+ @Override
+ public IdentifierReference instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java
new file mode 100644
index 0000000000..4bb409b0e8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.MethodCall;
+
+import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser;
+
+public interface IMethodCallInitialiser
+ extends IElementReferenceInitialiser, IArgumentableInitialiser, ICallTypeArgumentableInitialiser {
+ @Override
+ public MethodCall instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java
new file mode 100644
index 0000000000..56f511fb1c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.PackageReference;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface IPackageReferenceInitialiser
+ extends INamespaceAwareElementInitialiser, IReferenceableElementInitialiser {
+ @Override
+ public PackageReference instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java
new file mode 100644
index 0000000000..34a58ea332
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.PrimitiveTypeReference;
+import org.emftext.language.java.types.PrimitiveType;
+
+import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser;
+
+public interface IPrimitiveTypeReferenceInitialiser extends IArrayTypeableInitialiser, IReferenceInitialiser {
+ @Override
+ public PrimitiveTypeReference instantiate();
+
+ public default boolean setPrimitiveType(PrimitiveTypeReference ptr, PrimitiveType pt) {
+ ptr.setPrimitiveType(pt);
+ return (pt == null && ptr.getPrimitiveType() == null) || ptr.getPrimitiveType().equals(pt);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java
new file mode 100644
index 0000000000..8d15264afb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java
@@ -0,0 +1,34 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.arrays.ArraySelector;
+import org.emftext.language.java.references.Reference;
+
+import cipm.consistency.initialisers.jamopp.expressions.IPrimaryExpressionInitialiser;
+import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementExtensionInitialiser;
+
+public interface IReferenceInitialiser
+ extends IPrimaryExpressionInitialiser, ITypeArgumentableInitialiser, ITypedElementExtensionInitialiser {
+
+ @Override
+ public Reference instantiate();
+
+ public default boolean addArraySelector(Reference ref, ArraySelector arrSel) {
+ if (arrSel != null) {
+ ref.getArraySelectors().add(arrSel);
+ return ref.getArraySelectors().contains(arrSel);
+ }
+ return true;
+ }
+
+ public default boolean addArraySelectors(Reference ref, ArraySelector[] arrSels) {
+ return this.doMultipleModifications(ref, arrSels, this::addArraySelector);
+ }
+
+ public default boolean setNext(Reference ref, Reference next) {
+ ref.setNext(next);
+ return (next == null && ref.getNext() == null)
+ || (ref.getNext().equals(next) && ref.getNext().getPrevious().equals(ref)
+ && next.getPrevious().equals(ref) && next.getPrevious().getNext().equals(next));
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java
new file mode 100644
index 0000000000..22aeb4f6a0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReferenceableElement;
+
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+
+public interface IReferenceableElementInitialiser extends INamedElementInitialiser {
+ @Override
+ public ReferenceableElement instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java
new file mode 100644
index 0000000000..0683251183
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReflectiveClassReference;
+
+public interface IReflectiveClassReferenceInitialiser extends IReferenceInitialiser {
+ @Override
+ public ReflectiveClassReference instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java
new file mode 100644
index 0000000000..82a1453360
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.literals.Self;
+import org.emftext.language.java.references.SelfReference;
+
+public interface ISelfReferenceInitialiser extends IReferenceInitialiser {
+ @Override
+ public SelfReference instantiate();
+
+ public default boolean setSelf(SelfReference sref, Self self) {
+ sref.setSelf(self);
+ return (self == null && sref.getSelf() == null) || sref.getSelf().equals(self);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java
new file mode 100644
index 0000000000..877ce754d3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.StringReference;
+
+public interface IStringReferenceInitialiser extends IReferenceInitialiser {
+ @Override
+ public StringReference instantiate();
+
+ public default boolean setValue(StringReference sref, String val) {
+ sref.setValue(val);
+ return (val == null && sref.getValue() == null) || sref.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java
new file mode 100644
index 0000000000..3d5c954823
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.TextBlockReference;
+
+public interface ITextBlockReferenceInitialiser extends IReferenceInitialiser {
+ @Override
+ public TextBlockReference instantiate();
+
+ public default boolean setValue(TextBlockReference tbref, String val) {
+ tbref.setValue(val);
+ return (val == null && tbref.getValue() == null) || tbref.getValue().equals(val);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java
new file mode 100644
index 0000000000..4d29328559
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.IdentifierReference;
+import org.emftext.language.java.references.ReferencesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class IdentifierReferenceInitialiser extends AbstractInitialiserBase implements IIdentifierReferenceInitialiser {
+ @Override
+ public IIdentifierReferenceInitialiser newInitialiser() {
+ return new IdentifierReferenceInitialiser();
+ }
+
+ @Override
+ public IdentifierReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createIdentifierReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java
new file mode 100644
index 0000000000..3a32a11a52
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.MethodCall;
+import org.emftext.language.java.references.ReferencesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class MethodCallInitialiser extends AbstractInitialiserBase implements IMethodCallInitialiser {
+ @Override
+ public IMethodCallInitialiser newInitialiser() {
+ return new MethodCallInitialiser();
+ }
+
+ @Override
+ public MethodCall instantiate() {
+ return ReferencesFactory.eINSTANCE.createMethodCall();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java
new file mode 100644
index 0000000000..ba4e23bc0e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.PackageReference;
+import org.emftext.language.java.references.ReferencesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PackageReferenceInitialiser extends AbstractInitialiserBase implements IPackageReferenceInitialiser {
+ @Override
+ public IPackageReferenceInitialiser newInitialiser() {
+ return new PackageReferenceInitialiser();
+ }
+
+ @Override
+ public PackageReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createPackageReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java
new file mode 100644
index 0000000000..030fd1b9f1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.PrimitiveTypeReference;
+import org.emftext.language.java.references.ReferencesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class PrimitiveTypeReferenceInitialiser extends AbstractInitialiserBase
+ implements IPrimitiveTypeReferenceInitialiser {
+ @Override
+ public IPrimitiveTypeReferenceInitialiser newInitialiser() {
+ return new PrimitiveTypeReferenceInitialiser();
+ }
+
+ @Override
+ public PrimitiveTypeReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createPrimitiveTypeReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java
new file mode 100644
index 0000000000..21812110f5
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java
@@ -0,0 +1,27 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class ReferencesInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new IdentifierReferenceInitialiser(), new MethodCallInitialiser(),
+ new PackageReferenceInitialiser(), new PrimitiveTypeReferenceInitialiser(),
+ new ReflectiveClassReferenceInitialiser(), new SelfReferenceInitialiser(),
+ new StringReferenceInitialiser(), new TextBlockReferenceInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IArgumentableInitialiser.class, IElementReferenceInitialiser.class,
+ IIdentifierReferenceInitialiser.class, IMethodCallInitialiser.class, IPackageReferenceInitialiser.class,
+ IPrimitiveTypeReferenceInitialiser.class, IReferenceableElementInitialiser.class,
+ IReferenceInitialiser.class, IReflectiveClassReferenceInitialiser.class,
+ ISelfReferenceInitialiser.class, IStringReferenceInitialiser.class,
+ ITextBlockReferenceInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java
new file mode 100644
index 0000000000..e80574f949
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReferencesFactory;
+import org.emftext.language.java.references.ReflectiveClassReference;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ReflectiveClassReferenceInitialiser extends AbstractInitialiserBase
+ implements IReflectiveClassReferenceInitialiser {
+ @Override
+ public IReflectiveClassReferenceInitialiser newInitialiser() {
+ return new ReflectiveClassReferenceInitialiser();
+ }
+
+ @Override
+ public ReflectiveClassReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createReflectiveClassReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java
new file mode 100644
index 0000000000..bd74cbce4e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReferencesFactory;
+import org.emftext.language.java.references.SelfReference;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SelfReferenceInitialiser extends AbstractInitialiserBase implements ISelfReferenceInitialiser {
+ @Override
+ public ISelfReferenceInitialiser newInitialiser() {
+ return new SelfReferenceInitialiser();
+ }
+
+ @Override
+ public SelfReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createSelfReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java
new file mode 100644
index 0000000000..297e697e2d
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReferencesFactory;
+import org.emftext.language.java.references.StringReference;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class StringReferenceInitialiser extends AbstractInitialiserBase implements IStringReferenceInitialiser {
+ @Override
+ public IStringReferenceInitialiser newInitialiser() {
+ return new StringReferenceInitialiser();
+ }
+
+ @Override
+ public StringReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createStringReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java
new file mode 100644
index 0000000000..84058618fc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.references;
+
+import org.emftext.language.java.references.ReferencesFactory;
+import org.emftext.language.java.references.TextBlockReference;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class TextBlockReferenceInitialiser extends AbstractInitialiserBase implements ITextBlockReferenceInitialiser {
+ @Override
+ public ITextBlockReferenceInitialiser newInitialiser() {
+ return new TextBlockReferenceInitialiser();
+ }
+
+ @Override
+ public TextBlockReference instantiate() {
+ return ReferencesFactory.eINSTANCE.createTextBlockReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java
new file mode 100644
index 0000000000..054472ee11
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.references}.
+ */
+package cipm.consistency.initialisers.jamopp.references;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java
new file mode 100644
index 0000000000..0cb92ea3fc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.statements.Assert;
+
+public class AssertInitialiser extends AbstractInitialiserBase implements IAssertInitialiser {
+ @Override
+ public IAssertInitialiser newInitialiser() {
+ return new AssertInitialiser();
+ }
+
+ @Override
+ public Assert instantiate() {
+ return StatementsFactory.eINSTANCE.createAssert();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java
new file mode 100644
index 0000000000..b670690848
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.statements.Block;
+
+public class BlockInitialiser extends AbstractInitialiserBase implements IBlockInitialiser {
+ @Override
+ public Block instantiate() {
+ return StatementsFactory.eINSTANCE.createBlock();
+ }
+
+ @Override
+ public BlockInitialiser newInitialiser() {
+ return new BlockInitialiser();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java
new file mode 100644
index 0000000000..37ce6d458f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Break;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class BreakInitialiser extends AbstractInitialiserBase implements IBreakInitialiser {
+ @Override
+ public IBreakInitialiser newInitialiser() {
+ return new BreakInitialiser();
+ }
+
+ @Override
+ public Break instantiate() {
+ return StatementsFactory.eINSTANCE.createBreak();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java
new file mode 100644
index 0000000000..740a0c2d29
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.CatchBlock;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class CatchBlockInitialiser extends AbstractInitialiserBase implements ICatchBlockInitialiser {
+ @Override
+ public CatchBlock instantiate() {
+ return StatementsFactory.eINSTANCE.createCatchBlock();
+ }
+
+ @Override
+ public CatchBlockInitialiser newInitialiser() {
+ return new CatchBlockInitialiser();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java
new file mode 100644
index 0000000000..11dad2b732
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Condition;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ConditionInitialiser extends AbstractInitialiserBase implements IConditionInitialiser {
+ @Override
+ public IConditionInitialiser newInitialiser() {
+ return new ConditionInitialiser();
+ }
+
+ @Override
+ public Condition instantiate() {
+ return StatementsFactory.eINSTANCE.createCondition();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java
new file mode 100644
index 0000000000..e418655993
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Continue;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ContinueInitialiser extends AbstractInitialiserBase implements IContinueInitialiser {
+ @Override
+ public IContinueInitialiser newInitialiser() {
+ return new ContinueInitialiser();
+ }
+
+ @Override
+ public Continue instantiate() {
+ return StatementsFactory.eINSTANCE.createContinue();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java
new file mode 100644
index 0000000000..58fe39deef
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DefaultSwitchCase;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DefaultSwitchCaseInitialiser extends AbstractInitialiserBase implements IDefaultSwitchCaseInitialiser {
+ @Override
+ public IDefaultSwitchCaseInitialiser newInitialiser() {
+ return new DefaultSwitchCaseInitialiser();
+ }
+
+ @Override
+ public DefaultSwitchCase instantiate() {
+ return StatementsFactory.eINSTANCE.createDefaultSwitchCase();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java
new file mode 100644
index 0000000000..1b0e9bb27f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DefaultSwitchRule;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DefaultSwitchRuleInitialiser extends AbstractInitialiserBase implements IDefaultSwitchRuleInitialiser {
+ @Override
+ public IDefaultSwitchRuleInitialiser newInitialiser() {
+ return new DefaultSwitchRuleInitialiser();
+ }
+
+ @Override
+ public DefaultSwitchRule instantiate() {
+ return StatementsFactory.eINSTANCE.createDefaultSwitchRule();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java
new file mode 100644
index 0000000000..ee9ad76e93
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DoWhileLoop;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DoWhileLoopInitialiser extends AbstractInitialiserBase implements IDoWhileLoopInitialiser {
+ @Override
+ public IDoWhileLoopInitialiser newInitialiser() {
+ return new DoWhileLoopInitialiser();
+ }
+
+ @Override
+ public DoWhileLoop instantiate() {
+ return StatementsFactory.eINSTANCE.createDoWhileLoop();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java
new file mode 100644
index 0000000000..a17ca76ebc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.EmptyStatement;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class EmptyStatementInitialiser extends AbstractInitialiserBase implements IEmptyStatementInitialiser {
+ @Override
+ public IEmptyStatementInitialiser newInitialiser() {
+ return new EmptyStatementInitialiser();
+ }
+
+ @Override
+ public EmptyStatement instantiate() {
+ return StatementsFactory.eINSTANCE.createEmptyStatement();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java
new file mode 100644
index 0000000000..b6f75cf026
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.ExpressionStatement;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ExpressionStatementInitialiser extends AbstractInitialiserBase implements IExpressionStatementInitialiser {
+ @Override
+ public IExpressionStatementInitialiser newInitialiser() {
+ return new ExpressionStatementInitialiser();
+ }
+
+ @Override
+ public ExpressionStatement instantiate() {
+ return StatementsFactory.eINSTANCE.createExpressionStatement();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java
new file mode 100644
index 0000000000..8304afc693
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.ForEachLoop;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ForEachLoopInitialiser extends AbstractInitialiserBase implements IForEachLoopInitialiser {
+ @Override
+ public IForEachLoopInitialiser newInitialiser() {
+ return new ForEachLoopInitialiser();
+ }
+
+ @Override
+ public ForEachLoop instantiate() {
+ return StatementsFactory.eINSTANCE.createForEachLoop();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java
new file mode 100644
index 0000000000..0e436c73a0
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.ForLoop;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ForLoopInitialiser extends AbstractInitialiserBase implements IForLoopInitialiser {
+ @Override
+ public IForLoopInitialiser newInitialiser() {
+ return new ForLoopInitialiser();
+ }
+
+ @Override
+ public ForLoop instantiate() {
+ return StatementsFactory.eINSTANCE.createForLoop();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java
new file mode 100644
index 0000000000..27d9d01c51
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Assert;
+
+public interface IAssertInitialiser extends IConditionalInitialiser, IStatementInitialiser {
+ @Override
+ public Assert instantiate();
+
+ public default boolean setErrorMessage(Assert asrt, Expression errMsg) {
+ asrt.setErrorMessage(errMsg);
+ return (errMsg == null && asrt.getErrorMessage() == null) || asrt.getErrorMessage().equals(errMsg);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java
new file mode 100644
index 0000000000..5a4cdd242e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.BlockContainer;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IBlockContainerInitialiser extends ICommentableInitialiser {
+ @Override
+ public BlockContainer instantiate();
+
+ public default boolean setBlock(BlockContainer bc, Block block) {
+ bc.setBlock(block);
+ return (block == null && bc.getBlock() == null) || bc.getBlock().equals(block);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java
new file mode 100644
index 0000000000..207c1fdd41
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.StatementListContainer;
+
+import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IModifiableInitialiser;
+
+public interface IBlockInitialiser
+ extends IModifiableInitialiser, IMemberInitialiser, IStatementInitialiser, IStatementListContainerInitialiser {
+ @Override
+ public Block instantiate();
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java
new file mode 100644
index 0000000000..b72b475730
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Break;
+
+public interface IBreakInitialiser extends IJumpInitialiser {
+ @Override
+ public Break instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java
new file mode 100644
index 0000000000..98f65532cb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.statements.CatchBlock;
+import org.emftext.language.java.statements.StatementListContainer;
+
+public interface ICatchBlockInitialiser extends IBlockContainerInitialiser, IStatementListContainerInitialiser {
+
+ @Override
+ public CatchBlock instantiate();
+
+ public default boolean setParameter(CatchBlock cb, OrdinaryParameter param) {
+ cb.setParameter(param);
+ return (param == null && cb.getParameter() == null) || cb.getParameter().equals(param);
+ }
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return ((CatchBlock) slc).getBlock() != null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java
new file mode 100644
index 0000000000..ae6a2e1582
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Condition;
+import org.emftext.language.java.statements.Statement;
+
+public interface IConditionInitialiser
+ extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser {
+
+ @Override
+ public Condition instantiate();
+
+ public default boolean setElseStatement(Condition cond, Statement elseSt) {
+ cond.setElseStatement(elseSt);
+ return (elseSt == null && cond.getElseStatement() == null) || cond.getElseStatement().equals(elseSt);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java
new file mode 100644
index 0000000000..8db3161981
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Conditional;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IConditionalInitialiser extends ICommentableInitialiser {
+ @Override
+ public Conditional instantiate();
+
+ public default boolean setCondition(Conditional cond, Expression condExpr) {
+ cond.setCondition(condExpr);
+ return (condExpr == null && cond.getCondition() == null) || cond.getCondition().equals(condExpr);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java
new file mode 100644
index 0000000000..dd81b69440
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Continue;
+
+public interface IContinueInitialiser extends IJumpInitialiser {
+ @Override
+ public Continue instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java
new file mode 100644
index 0000000000..8f07ba5570
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DefaultSwitchCase;
+
+public interface IDefaultSwitchCaseInitialiser extends ISwitchCaseInitialiser {
+ @Override
+ public DefaultSwitchCase instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java
new file mode 100644
index 0000000000..86e44431dc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DefaultSwitchRule;
+
+public interface IDefaultSwitchRuleInitialiser extends ISwitchRuleInitialiser {
+ @Override
+ public DefaultSwitchRule instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java
new file mode 100644
index 0000000000..caae9d7f27
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.DoWhileLoop;
+
+public interface IDoWhileLoopInitialiser extends IWhileLoopInitialiser {
+ @Override
+ public DoWhileLoop instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java
new file mode 100644
index 0000000000..fa070eaecb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.EmptyStatement;
+
+public interface IEmptyStatementInitialiser extends IStatementInitialiser {
+ @Override
+ public EmptyStatement instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java
new file mode 100644
index 0000000000..3791acdb73
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.ExpressionStatement;
+
+public interface IExpressionStatementInitialiser extends IStatementInitialiser {
+ @Override
+ public ExpressionStatement instantiate();
+
+ public default boolean setExpression(ExpressionStatement es, Expression expr) {
+ es.setExpression(expr);
+ return (expr == null && es.getExpression() == null) || es.getExpression().equals(expr);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java
new file mode 100644
index 0000000000..38e92f8cdc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.parameters.OrdinaryParameter;
+import org.emftext.language.java.statements.ForEachLoop;
+
+public interface IForEachLoopInitialiser extends IStatementInitialiser, IStatementContainerInitialiser {
+ @Override
+ public ForEachLoop instantiate();
+
+ public default boolean setCollection(ForEachLoop fel, Expression col) {
+ fel.setCollection(col);
+ return (col == null && fel.getCollection() == null) || fel.getCollection().equals(col);
+ }
+
+ public default boolean setNext(ForEachLoop fel, OrdinaryParameter next) {
+ fel.setNext(next);
+ return (next == null && fel.getNext() == null) || fel.getNext().equals(next);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java
new file mode 100644
index 0000000000..e2dee19392
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java
@@ -0,0 +1,28 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.ForLoop;
+import org.emftext.language.java.statements.ForLoopInitializer;
+
+public interface IForLoopInitialiser
+ extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser {
+ @Override
+ public ForLoop instantiate();
+
+ public default boolean setInit(ForLoop fl, ForLoopInitializer init) {
+ fl.setInit(init);
+ return (init == null && fl.getInit() == null) || fl.getInit().equals(init);
+ }
+
+ public default boolean addUpdate(ForLoop fl, Expression update) {
+ if (update != null) {
+ fl.getUpdates().add(update);
+ return fl.getUpdates().contains(update);
+ }
+ return true;
+ }
+
+ public default boolean addUpdates(ForLoop fl, Expression[] updates) {
+ return this.doMultipleModifications(fl, updates, this::addUpdate);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java
new file mode 100644
index 0000000000..2218814fe6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.ForLoopInitializer;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IForLoopInitializerInitialiser extends ICommentableInitialiser {
+ @Override
+ public ForLoopInitializer instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java
new file mode 100644
index 0000000000..153371d275
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Jump;
+import org.emftext.language.java.statements.JumpLabel;
+
+public interface IJumpInitialiser extends IStatementInitialiser {
+ @Override
+ public Jump instantiate();
+
+ public default boolean setTarget(Jump jump, JumpLabel target) {
+ jump.setTarget(target);
+ return (target == null && jump.getTarget() == null) || jump.getTarget().equals(target);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java
new file mode 100644
index 0000000000..dc511cfd1e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java
@@ -0,0 +1,12 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.JumpLabel;
+
+import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser;
+
+public interface IJumpLabelInitialiser
+ extends INamedElementInitialiser, IStatementInitialiser, IStatementContainerInitialiser {
+ @Override
+ public JumpLabel instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java
new file mode 100644
index 0000000000..a4c09a2c4f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.LocalVariableStatement;
+import org.emftext.language.java.variables.LocalVariable;
+
+public interface ILocalVariableStatementInitialiser extends IStatementInitialiser {
+ @Override
+ public LocalVariableStatement instantiate();
+
+ public default boolean setVariable(LocalVariableStatement lvs, LocalVariable var) {
+ lvs.setVariable(var);
+ return (var == null && lvs.getVariable() == null) || lvs.getVariable().equals(var);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java
new file mode 100644
index 0000000000..6a1cf39269
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.NormalSwitchCase;
+
+public interface INormalSwitchCaseInitialiser extends IConditionalInitialiser, ISwitchCaseInitialiser {
+ @Override
+ public NormalSwitchCase instantiate();
+
+ public default boolean addAdditionalCondition(NormalSwitchCase nsc, Expression additionalCond) {
+ if (additionalCond != null) {
+ nsc.getAdditionalConditions().add(additionalCond);
+ return nsc.getAdditionalConditions().contains(additionalCond);
+ }
+ return true;
+ }
+
+ public default boolean addAdditionalConditions(NormalSwitchCase nsc, Expression[] additionalConds) {
+ return this.doMultipleModifications(nsc, additionalConds, this::addAdditionalCondition);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java
new file mode 100644
index 0000000000..fceb95bc6b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.NormalSwitchRule;
+
+public interface INormalSwitchRuleInitialiser extends IConditionalInitialiser, ISwitchRuleInitialiser {
+ @Override
+ public NormalSwitchRule instantiate();
+
+ public default boolean addAdditionalCondition(NormalSwitchRule nsr, Expression additionalCond) {
+ if (additionalCond != null) {
+ nsr.getAdditionalConditions().add(additionalCond);
+ return nsr.getAdditionalConditions().contains(additionalCond);
+ }
+ return true;
+ }
+
+ public default boolean addAdditionalConditions(NormalSwitchRule nsr, Expression[] additionalConds) {
+ return this.doMultipleModifications(nsr, additionalConds, this::addAdditionalCondition);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java
new file mode 100644
index 0000000000..37f860918c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Return;
+
+public interface IReturnInitialiser extends IStatementInitialiser {
+ @Override
+ public Return instantiate();
+
+ public default boolean setReturnValue(Return ret, Expression retVal) {
+ ret.setReturnValue(retVal);
+ return (retVal == null && ret.getReturnValue() == null) || ret.getReturnValue().equals(retVal);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java
new file mode 100644
index 0000000000..f48279bbb6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.StatementContainer;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IStatementContainerInitialiser extends ICommentableInitialiser {
+ @Override
+ public StatementContainer instantiate();
+
+ public default boolean setStatement(StatementContainer sc, Statement st) {
+ sc.setStatement(st);
+ return (st == null && sc.getStatement() == null) || sc.getStatement().equals(st);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java
new file mode 100644
index 0000000000..d42ae16503
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Statement;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IStatementInitialiser extends ICommentableInitialiser {
+ @Override
+ public Statement instantiate();
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java
new file mode 100644
index 0000000000..e0d241ab4e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java
@@ -0,0 +1,63 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Statement;
+import org.emftext.language.java.statements.StatementListContainer;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * create {@link StatementListContainer} instances.
+ *
+ * Not all implementors of {@link StatementListContainer} allow adding
+ * statements via {@code .getStatements().add(...)} as expected. Attempting to
+ * add statements that way can result in exceptions under circumstances. The
+ * method {@link #canContainStatements(StatementListContainer)} can be used to
+ * determine, whether this is possible.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IStatementListContainerInitialiser extends ICommentableInitialiser {
+ @Override
+ public StatementListContainer instantiate();
+
+ /**
+ * Attempts to add the given {@link Statement} st to the given
+ * {@link StatementListContainer} slc. Uses {@code slc.getStatements().add(st)}
+ * to do so.
+ *
+ * Note: Attempting to add a null statement will still return true, since there
+ * is no modification to be performed.
+ *
+ * @see {@link IStatementListContainerInitialiser}
+ * @see {@link #addStatementAssertion(StatementListContainer, Statement)}
+ */
+ public default boolean addStatement(StatementListContainer slc, Statement st) {
+ if (st != null) {
+ if (!this.canContainStatements(slc)) {
+ return false;
+ }
+ slc.getStatements().add(st);
+ return slc.getStatements().contains(st);
+ }
+ return true;
+ }
+
+ /**
+ * Extracted from {@link #addStatement(StatementListContainer, Statement)}
+ * because there are some implementors of {@link StatementListContainer}, which
+ * throw {@link NullPointerException} if {@code slc.getStatements().add(...)} is
+ * called without proper initialisation. Extracting this method allows such
+ * implementors to indicate, whether {@link Statement}s can be added to them via
+ * {@link #addStatement(StatementListContainer, Statement)} without issues.
+ *
+ * @return Whether {@link Statement}s can be added to the given
+ * {@link StatementListContainer} via
+ * {@link #addStatement(StatementListContainer, Statement)}.
+ */
+ public boolean canContainStatements(StatementListContainer slc);
+
+ public default boolean addStatements(StatementListContainer slc, Statement[] sts) {
+ return this.doMultipleModifications(slc, sts, this::addStatement);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java
new file mode 100644
index 0000000000..4703854963
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementListContainer;
+import org.emftext.language.java.statements.SwitchCase;
+
+public interface ISwitchCaseInitialiser extends IStatementListContainerInitialiser {
+ @Override
+ public SwitchCase instantiate();
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java
new file mode 100644
index 0000000000..66d349f11f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java
@@ -0,0 +1,29 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Switch;
+import org.emftext.language.java.statements.SwitchCase;
+
+import cipm.consistency.initialisers.jamopp.expressions.IUnaryModificationExpressionChildInitialiser;
+
+public interface ISwitchInitialiser extends IStatementInitialiser, IUnaryModificationExpressionChildInitialiser {
+ @Override
+ public Switch instantiate();
+
+ public default boolean addCase(Switch sw, SwitchCase swCase) {
+ if (swCase != null) {
+ sw.getCases().add(swCase);
+ return sw.getCases().contains(swCase);
+ }
+ return true;
+ }
+
+ public default boolean addCases(Switch sw, SwitchCase[] swCases) {
+ return this.doMultipleModifications(sw, swCases, this::addCase);
+ }
+
+ public default boolean setVariable(Switch sw, Expression var) {
+ sw.setVariable(var);
+ return (var == null && sw.getVariable() == null) || sw.getVariable().equals(var);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java
new file mode 100644
index 0000000000..63c08ecce6
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.SwitchRule;
+
+public interface ISwitchRuleInitialiser extends ISwitchCaseInitialiser {
+ @Override
+ public SwitchRule instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java
new file mode 100644
index 0000000000..384587e36c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.StatementListContainer;
+import org.emftext.language.java.statements.SynchronizedBlock;
+
+public interface ISynchronizedBlockInitialiser
+ extends IBlockContainerInitialiser, IStatementInitialiser, IStatementListContainerInitialiser {
+ @Override
+ public SynchronizedBlock instantiate();
+
+ public default boolean setLockProvider(SynchronizedBlock sb, Expression lockProvider) {
+ sb.setLockProvider(lockProvider);
+ return (lockProvider == null && sb.getLockProvider() == null) || sb.getLockProvider().equals(lockProvider);
+
+ }
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return ((SynchronizedBlock) slc).getBlock() != null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java
new file mode 100644
index 0000000000..9657f4950c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.Throw;
+
+public interface IThrowInitialiser extends IStatementInitialiser {
+ @Override
+ public Throw instantiate();
+
+ public default boolean setThrowable(Throw th, Expression throwable) {
+ th.setThrowable(throwable);
+ return (throwable == null && th.getThrowable() == null) || th.getThrowable().equals(throwable);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java
new file mode 100644
index 0000000000..e072c15912
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java
@@ -0,0 +1,47 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Block;
+import org.emftext.language.java.statements.CatchBlock;
+import org.emftext.language.java.statements.StatementListContainer;
+import org.emftext.language.java.statements.TryBlock;
+import org.emftext.language.java.variables.Resource;
+
+public interface ITryBlockInitialiser
+ extends IBlockContainerInitialiser, IStatementInitialiser, IStatementListContainerInitialiser {
+ @Override
+ public TryBlock instantiate();
+
+ public default boolean setFinallyBlock(TryBlock tb, Block finallyBlock) {
+ tb.setFinallyBlock(finallyBlock);
+ return (finallyBlock == null && tb.getFinallyBlock() == null) || tb.getFinallyBlock().equals(finallyBlock);
+ }
+
+ public default boolean addCatchBlock(TryBlock tb, CatchBlock cb) {
+ if (cb != null) {
+ tb.getCatchBlocks().add(cb);
+ return tb.getCatchBlocks().contains(cb);
+ }
+ return true;
+ }
+
+ public default boolean addCatchBlocks(TryBlock tb, CatchBlock[] cbs) {
+ return this.doMultipleModifications(tb, cbs, this::addCatchBlock);
+ }
+
+ public default boolean addResource(TryBlock tb, Resource res) {
+ if (res != null) {
+ tb.getResources().add(res);
+ return tb.getResources().contains(res);
+ }
+ return true;
+ }
+
+ public default boolean addResources(TryBlock tb, Resource[] ress) {
+ return this.doMultipleModifications(tb, ress, this::addResource);
+ }
+
+ @Override
+ public default boolean canContainStatements(StatementListContainer slc) {
+ return ((TryBlock) slc).getBlock() != null;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java
new file mode 100644
index 0000000000..a809a2ceed
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.WhileLoop;
+
+public interface IWhileLoopInitialiser
+ extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser {
+ @Override
+ public WhileLoop instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java
new file mode 100644
index 0000000000..ecc8972db9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.expressions.Expression;
+import org.emftext.language.java.statements.YieldStatement;
+
+public interface IYieldStatementInitialiser extends IStatementInitialiser {
+ @Override
+ public YieldStatement instantiate();
+
+ public default boolean setYieldExpression(YieldStatement ys, Expression yieldExpr) {
+ ys.setYieldExpression(yieldExpr);
+ return (yieldExpr == null && ys.getYieldExpression() == null) || ys.getYieldExpression().equals(yieldExpr);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java
new file mode 100644
index 0000000000..9d6e125b79
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.JumpLabel;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class JumpLabelInitialiser extends AbstractInitialiserBase implements IJumpLabelInitialiser {
+ @Override
+ public IJumpLabelInitialiser newInitialiser() {
+ return new JumpLabelInitialiser();
+ }
+
+ @Override
+ public JumpLabel instantiate() {
+ return StatementsFactory.eINSTANCE.createJumpLabel();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java
new file mode 100644
index 0000000000..42bdfa0eeb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.LocalVariableStatement;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LocalVariableStatementInitialiser extends AbstractInitialiserBase
+ implements ILocalVariableStatementInitialiser {
+ @Override
+ public ILocalVariableStatementInitialiser newInitialiser() {
+ return new LocalVariableStatementInitialiser();
+ }
+
+ @Override
+ public LocalVariableStatement instantiate() {
+ return StatementsFactory.eINSTANCE.createLocalVariableStatement();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java
new file mode 100644
index 0000000000..676e591ca4
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.NormalSwitchCase;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NormalSwitchCaseInitialiser extends AbstractInitialiserBase implements INormalSwitchCaseInitialiser {
+ @Override
+ public INormalSwitchCaseInitialiser newInitialiser() {
+ return new NormalSwitchCaseInitialiser();
+ }
+
+ @Override
+ public NormalSwitchCase instantiate() {
+ return StatementsFactory.eINSTANCE.createNormalSwitchCase();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java
new file mode 100644
index 0000000000..490d73eecc
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.NormalSwitchRule;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NormalSwitchRuleInitialiser extends AbstractInitialiserBase implements INormalSwitchRuleInitialiser {
+ @Override
+ public INormalSwitchRuleInitialiser newInitialiser() {
+ return new NormalSwitchRuleInitialiser();
+ }
+
+ @Override
+ public NormalSwitchRule instantiate() {
+ return StatementsFactory.eINSTANCE.createNormalSwitchRule();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java
new file mode 100644
index 0000000000..f090c97614
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.Return;
+import org.emftext.language.java.statements.StatementsFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ReturnInitialiser extends AbstractInitialiserBase implements IReturnInitialiser {
+ @Override
+ public IReturnInitialiser newInitialiser() {
+ return new ReturnInitialiser();
+ }
+
+ @Override
+ public Return instantiate() {
+ return StatementsFactory.eINSTANCE.createReturn();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java
new file mode 100644
index 0000000000..31064592f1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java
@@ -0,0 +1,38 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class StatementsInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new AssertInitialiser(), new BlockInitialiser(),
+ new BreakInitialiser(), new CatchBlockInitialiser(), new ConditionInitialiser(),
+ new ContinueInitialiser(), new DefaultSwitchCaseInitialiser(), new DefaultSwitchRuleInitialiser(),
+ new DoWhileLoopInitialiser(), new EmptyStatementInitialiser(), new ExpressionStatementInitialiser(),
+ new ForEachLoopInitialiser(), new ForLoopInitialiser(), new JumpLabelInitialiser(),
+ new LocalVariableStatementInitialiser(), new NormalSwitchCaseInitialiser(),
+ new NormalSwitchRuleInitialiser(), new ReturnInitialiser(), new SwitchInitialiser(),
+ new SynchronizedBlockInitialiser(), new ThrowInitialiser(), new TryBlockInitialiser(),
+ new WhileLoopInitialiser(), new YieldStatementInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAssertInitialiser.class, IBlockContainerInitialiser.class,
+ IBlockInitialiser.class, IBreakInitialiser.class, ICatchBlockInitialiser.class,
+ IConditionalInitialiser.class, IConditionInitialiser.class, IContinueInitialiser.class,
+ IDefaultSwitchCaseInitialiser.class, IDefaultSwitchRuleInitialiser.class, IDoWhileLoopInitialiser.class,
+ IEmptyStatementInitialiser.class, IExpressionStatementInitialiser.class, IForEachLoopInitialiser.class,
+ IForLoopInitialiser.class, IForLoopInitializerInitialiser.class, IJumpInitialiser.class,
+ IJumpLabelInitialiser.class, ILocalVariableStatementInitialiser.class,
+ INormalSwitchCaseInitialiser.class, INormalSwitchRuleInitialiser.class, IReturnInitialiser.class,
+ IStatementContainerInitialiser.class, IStatementInitialiser.class,
+ IStatementListContainerInitialiser.class, ISwitchCaseInitialiser.class, ISwitchInitialiser.class,
+ ISwitchRuleInitialiser.class, ISynchronizedBlockInitialiser.class, IThrowInitialiser.class,
+ ITryBlockInitialiser.class, IWhileLoopInitialiser.class, IYieldStatementInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java
new file mode 100644
index 0000000000..23900854d3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.Switch;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SwitchInitialiser extends AbstractInitialiserBase implements ISwitchInitialiser {
+ @Override
+ public ISwitchInitialiser newInitialiser() {
+ return new SwitchInitialiser();
+ }
+
+ @Override
+ public Switch instantiate() {
+ return StatementsFactory.eINSTANCE.createSwitch();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java
new file mode 100644
index 0000000000..e69411fe4f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.SynchronizedBlock;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class SynchronizedBlockInitialiser extends AbstractInitialiserBase implements ISynchronizedBlockInitialiser {
+ @Override
+ public SynchronizedBlock instantiate() {
+ return StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ }
+
+ @Override
+ public SynchronizedBlockInitialiser newInitialiser() {
+ return new SynchronizedBlockInitialiser();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java
new file mode 100644
index 0000000000..6e1f83a558
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.Throw;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ThrowInitialiser extends AbstractInitialiserBase implements IThrowInitialiser {
+ @Override
+ public IThrowInitialiser newInitialiser() {
+ return new ThrowInitialiser();
+ }
+
+ @Override
+ public Throw instantiate() {
+ return StatementsFactory.eINSTANCE.createThrow();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java
new file mode 100644
index 0000000000..bd47c7fefd
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.TryBlock;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class TryBlockInitialiser extends AbstractInitialiserBase implements ITryBlockInitialiser {
+ @Override
+ public TryBlock instantiate() {
+ return StatementsFactory.eINSTANCE.createTryBlock();
+ }
+
+ @Override
+ public TryBlockInitialiser newInitialiser() {
+ return new TryBlockInitialiser();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java
new file mode 100644
index 0000000000..99cb95be48
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.WhileLoop;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class WhileLoopInitialiser extends AbstractInitialiserBase implements IWhileLoopInitialiser {
+ @Override
+ public IWhileLoopInitialiser newInitialiser() {
+ return new WhileLoopInitialiser();
+ }
+
+ @Override
+ public WhileLoop instantiate() {
+ return StatementsFactory.eINSTANCE.createWhileLoop();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java
new file mode 100644
index 0000000000..ee424b5f10
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.statements;
+
+import org.emftext.language.java.statements.StatementsFactory;
+import org.emftext.language.java.statements.YieldStatement;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class YieldStatementInitialiser extends AbstractInitialiserBase implements IYieldStatementInitialiser {
+ @Override
+ public IYieldStatementInitialiser newInitialiser() {
+ return new YieldStatementInitialiser();
+ }
+
+ @Override
+ public YieldStatement instantiate() {
+ return StatementsFactory.eINSTANCE.createYieldStatement();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java
new file mode 100644
index 0000000000..b7cc4f581b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.statements}.
+ */
+package cipm.consistency.initialisers.jamopp.statements;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java
new file mode 100644
index 0000000000..83a7386521
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Boolean;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class BooleanInitialiser extends AbstractInitialiserBase implements IBooleanInitialiser {
+ @Override
+ public IBooleanInitialiser newInitialiser() {
+ return new BooleanInitialiser();
+ }
+
+ @Override
+ public Boolean instantiate() {
+ return TypesFactory.eINSTANCE.createBoolean();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java
new file mode 100644
index 0000000000..211e79bc08
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Byte;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ByteInitialiser extends AbstractInitialiserBase implements IByteInitialiser {
+ @Override
+ public IByteInitialiser newInitialiser() {
+ return new ByteInitialiser();
+ }
+
+ @Override
+ public Byte instantiate() {
+ return TypesFactory.eINSTANCE.createByte();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java
new file mode 100644
index 0000000000..2c77c2b86f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Char;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class CharInitialiser extends AbstractInitialiserBase implements ICharInitialiser {
+ @Override
+ public ICharInitialiser newInitialiser() {
+ return new CharInitialiser();
+ }
+
+ @Override
+ public Char instantiate() {
+ return TypesFactory.eINSTANCE.createChar();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java
new file mode 100644
index 0000000000..206be0b1f3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ClassifierReferenceInitialiser extends AbstractInitialiserBase implements IClassifierReferenceInitialiser {
+ @Override
+ public IClassifierReferenceInitialiser newInitialiser() {
+ return new ClassifierReferenceInitialiser();
+ }
+
+ @Override
+ public ClassifierReference instantiate() {
+ return TypesFactory.eINSTANCE.createClassifierReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java
new file mode 100644
index 0000000000..0a3d473594
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Double;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class DoubleInitialiser extends AbstractInitialiserBase implements IDoubleInitialiser {
+ @Override
+ public IDoubleInitialiser newInitialiser() {
+ return new DoubleInitialiser();
+ }
+
+ @Override
+ public Double instantiate() {
+ return TypesFactory.eINSTANCE.createDouble();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java
new file mode 100644
index 0000000000..4604a8c690
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Float;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class FloatInitialiser extends AbstractInitialiserBase implements IFloatInitialiser {
+ @Override
+ public IFloatInitialiser newInitialiser() {
+ return new FloatInitialiser();
+ }
+
+ @Override
+ public Float instantiate() {
+ return TypesFactory.eINSTANCE.createFloat();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java
new file mode 100644
index 0000000000..cd9283a50b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Boolean;
+
+public interface IBooleanInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Boolean instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java
new file mode 100644
index 0000000000..49b6ab9d60
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Byte;
+
+public interface IByteInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Byte instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java
new file mode 100644
index 0000000000..14ecb2aa30
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Char;
+
+public interface ICharInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Char instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java
new file mode 100644
index 0000000000..2a2045f616
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser;
+
+public interface IClassifierReferenceInitialiser
+ extends ITypeArgumentableInitialiser, IAnnotableInitialiser, ITypeReferenceInitialiser {
+ @Override
+ public ClassifierReference instantiate();
+
+ @Override
+ public default boolean canSetTarget(TypeReference tref) {
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java
new file mode 100644
index 0000000000..50e651be63
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Double;
+
+public interface IDoubleInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Double instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java
new file mode 100644
index 0000000000..9976df7438
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Float;
+
+public interface IFloatInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Float instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java
new file mode 100644
index 0000000000..cf80eaa051
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java
@@ -0,0 +1,14 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.InferableType;
+import org.emftext.language.java.types.TypeReference;
+
+public interface IInferableTypeInitialiser extends ITypedElementExtensionInitialiser, ITypeReferenceInitialiser {
+ @Override
+ public InferableType instantiate();
+
+ @Override
+ public default boolean canSetTarget(TypeReference tref) {
+ return true;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java
new file mode 100644
index 0000000000..6c573d4f45
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Int;
+
+public interface IIntInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Int instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java
new file mode 100644
index 0000000000..3836ab4ddb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Long;
+
+public interface ILongInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Long instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java
new file mode 100644
index 0000000000..86fe428c1b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java
@@ -0,0 +1,103 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.ClassifierReference;
+import org.emftext.language.java.types.NamespaceClassifierReference;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser;
+
+public interface INamespaceClassifierReferenceInitialiser
+ extends INamespaceAwareElementInitialiser, ITypeReferenceInitialiser {
+ @Override
+ public NamespaceClassifierReference instantiate();
+
+ @Override
+ public default boolean setTargetAssertion(TypeReference tref, Classifier target) {
+ if (target == null && tref.getTarget() == null) {
+ return true;
+ } else if (target == null) {
+ return false;
+ }
+
+ var castedTref = (NamespaceClassifierReference) tref;
+ var containerName = target.getContainingContainerName();
+ var nss = castedTref.getNamespaces();
+ var clsRefs = castedTref.getClassifierReferences();
+
+ /*
+ * Assertions for the implementation at
+ * https://github.com/DevBoost/JaMoPP/blob/master/Core/org.emftext.language.java
+ * /src/org/emftext/language/java/extensions/types/TypeReferenceExtension.java
+ */
+ return ITypeReferenceInitialiser.super.setTargetAssertion(tref, target) && nss != null && containerName != null
+ && nss.size() == containerName.size() && nss.containsAll(containerName) && clsRefs != null
+ && clsRefs.size() == 1 && clsRefs.stream().anyMatch((cr) -> cr.getTarget().equals(target));
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * In the case of {@link NamespaceClassifierReference}, this method:
+ *
+ * - Clears ALL {@link ClassifierReference} instances stored in tref,
+ *
- Sets target of tref ({@code tref.getTarget()}) to target,
+ *
- Internally constructs and adds a {@link ClassifierReference} pointing at
+ * target to tref.
+ *
+ * The overridden version of this method in {@link NamespaceClassifierReference}
+ * introduces no changes to its super version in
+ * {@link ITypeReferenceInitialiser}. It is overridden for the sake of providing
+ * commentary.
+ *
+ *
+ * @see {@link #canSetTarget(TypeReference)}
+ * @see {@link #canSetTargetTo(TypeReference, Classifier)}
+ * @see {@link #setTargetAssertion(TypeReference, Classifier)}
+ * @see {@link #addClassifierReference(NamespaceClassifierReference, ClassifierReference)}
+ */
+ @Override
+ public default boolean setTarget(TypeReference tref, Classifier target) {
+ return ITypeReferenceInitialiser.super.setTarget(tref, target);
+ }
+
+ /**
+ * This method:
+ *
+ *
+ * - Adds the given clsRef to {@code ncr.getClassifierReferences()},
+ *
- Replaces the target of ncr ({@code ncr.getTarget()}) with
+ * {@code clsRef.getTarget()}.
+ *
+ *
+ * Using this method modifies the target attribute of ncr
+ * ({@code ncr.getTarget()}). Therefore, it should normally NOT be used
+ * along with {@link #setTarget(TypeReference, Classifier)}, as they will modify
+ * the said target attribute in conflicting ways.
+ *
+ *
+ * @see {@link #setTarget(TypeReference, Classifier)}
+ */
+ public default boolean addClassifierReference(NamespaceClassifierReference ncr, ClassifierReference clsRef) {
+ if (clsRef != null) {
+ ncr.getClassifierReferences().add(clsRef);
+ return ncr.getClassifierReferences().contains(clsRef);
+ }
+ return true;
+ }
+
+ @Override
+ public default boolean canSetTarget(TypeReference tref) {
+ return true;
+ }
+
+ @Override
+ public default boolean canSetTargetTo(TypeReference tref, Classifier target) {
+ return ITypeReferenceInitialiser.super.canSetTargetTo(tref, target)
+ && target.getContainingContainerName() != null;
+ }
+
+ public default boolean addClassifierReferences(NamespaceClassifierReference ncr, ClassifierReference[] clsRefs) {
+ return this.doMultipleModifications(ncr, clsRefs, this::addClassifierReference);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java
new file mode 100644
index 0000000000..e649812315
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java
@@ -0,0 +1,46 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.PrimitiveType;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * instantiate {@link PrimitiveType}.
+ *
+ * The target attribute of primitive types ({@code tref.getTarget()}) are (as
+ * their name imply) primitives and thus not adjustable.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IPrimitiveTypeInitialiser extends IAnnotableInitialiser, ITypeInitialiser, ITypeReferenceInitialiser {
+ @Override
+ public PrimitiveType instantiate();
+
+ /**
+ * {@inheritDoc}
+ *
+ * In the case of {@link PrimitiveType}, this method does nothing, since the
+ * target attribute of primitive types ({@code tref.getTarget()}) are (as their
+ * name imply) primitives and thus not adjustable.
+ *
+ * This method is overridden to provide commentary, it introduces no changes to
+ * its super version in {@link ITypeReferenceInitialiser}.
+ */
+ @Override
+ public default boolean setTarget(TypeReference tref, Classifier target) {
+ return ITypeReferenceInitialiser.super.setTarget(tref, target);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see {@link IPrimitiveTypeInitialiser}
+ */
+ @Override
+ public default boolean canSetTarget(TypeReference tref) {
+ return false;
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java
new file mode 100644
index 0000000000..8cbe7f0650
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Short;
+
+public interface IShortInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Short instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java
new file mode 100644
index 0000000000..84ae8d086f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java
@@ -0,0 +1,10 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Type;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ITypeInitialiser extends ICommentableInitialiser {
+ @Override
+ public Type instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java
new file mode 100644
index 0000000000..639c10ca38
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java
@@ -0,0 +1,76 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.types.TypeReference;
+
+import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser;
+
+/**
+ * An interface meant to be implemented by initialisers, which are supposed to
+ * instantiate {@link TypeReference}.
+ *
+ * {@link TypeReference} itself does not have the target attribute, yet its
+ * implementors do. Its implementors' relations to that attribute vary.
+ * Therefore, whether the said attribute is modifiable in the individual
+ * implementors and the acceptable target types differ. Because of this, 2
+ * methods {@link #canSetTarget(TypeReference)} and
+ * {@link #canSetTargetTo(TypeReference, Classifier)} are provided.
+ *
+ * @author Alp Torac Genc
+ */
+public interface ITypeReferenceInitialiser extends IArrayTypeableInitialiser {
+ @Override
+ public TypeReference instantiate();
+
+ /**
+ * Since {@link TypeReference} itself does not have the "target" attribute and
+ * its implementors' relations to that attribute vary, this method is
+ * implemented as a template.
+ *
+ * Therefore, what this method does can change immensely between different
+ * implementors. Check the concrete implementations within implementors for
+ * further details.
+ *
+ * Attempting to set null as target will return true, regardless of the concrete
+ * implementor, since there is no modification to perform.
+ *
+ * @see {@link #canSetTarget(TypeReference)}
+ * @see {@link #canSetTargetTo(TypeReference, Classifier)}
+ * @see {@link #setTargetAssertion(TypeReference, Classifier)}
+ */
+ public default boolean setTarget(TypeReference tref, Classifier target) {
+ if (target != null && !this.canSetTargetTo(tref, target)) {
+ return false;
+ }
+
+ tref.setTarget(target);
+ return this.setTargetAssertion(tref, target);
+ }
+
+ /**
+ * @return Whether calling {@link #setTarget(TypeReference, Classifier)} with
+ * the given parameters results in the expected behaviour.
+ */
+ public default boolean setTargetAssertion(TypeReference tref, Classifier target) {
+ var cTarget = tref.getTarget();
+ return (target == null && cTarget == null) || cTarget.equals(target);
+ }
+
+ /**
+ * @return Whether {@code tref.setTarget(...)} method can be used to modify
+ * tref.
+ */
+ public boolean canSetTarget(TypeReference tref);
+
+ /**
+ * Expects {@link #canSetTarget(TypeReference)} to return true for tref, since
+ * otherwise its target attribute cannot be changed in the first place.
+ *
+ * @return Whether {@code tref.setTarget(target)} method can be used in the
+ * context of the given target parameter. Returns false if
+ * {@code target == null}.
+ */
+ public default boolean canSetTargetTo(TypeReference tref, Classifier target) {
+ return target != null && this.canSetTarget(tref);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java
new file mode 100644
index 0000000000..8a698e8f41
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java
@@ -0,0 +1,23 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.TypeReference;
+import org.emftext.language.java.types.TypedElementExtension;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ITypedElementExtensionInitialiser extends ICommentableInitialiser {
+ @Override
+ public TypedElementExtension instantiate();
+
+ public default boolean addActualTarget(TypedElementExtension tee, TypeReference actualTarget) {
+ if (actualTarget != null) {
+ tee.getActualTargets().add(actualTarget);
+ return tee.getActualTargets().contains(actualTarget);
+ }
+ return true;
+ }
+
+ public default boolean addActualTargets(TypedElementExtension tee, TypeReference[] actualTargets) {
+ return this.doMultipleModifications(tee, actualTargets, this::addActualTarget);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java
new file mode 100644
index 0000000000..df52424487
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java
@@ -0,0 +1,16 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.TypeReference;
+import org.emftext.language.java.types.TypedElement;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface ITypedElementInitialiser extends ICommentableInitialiser {
+ @Override
+ public TypedElement instantiate();
+
+ public default boolean setTypeReference(TypedElement te, TypeReference tRef) {
+ te.setTypeReference(tRef);
+ return (tRef == null && te.getTypeReference() == null) || te.getTypeReference().equals(tRef);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java
new file mode 100644
index 0000000000..d5d1f3b3a3
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java
@@ -0,0 +1,9 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Void;
+
+public interface IVoidInitialiser extends IPrimitiveTypeInitialiser {
+ @Override
+ public Void instantiate();
+
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java
new file mode 100644
index 0000000000..bbb6a942d8
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.InferableType;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class InferableTypeInitialiser extends AbstractInitialiserBase implements IInferableTypeInitialiser {
+ @Override
+ public IInferableTypeInitialiser newInitialiser() {
+ return new InferableTypeInitialiser();
+ }
+
+ @Override
+ public InferableType instantiate() {
+ return TypesFactory.eINSTANCE.createInferableType();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java
new file mode 100644
index 0000000000..129df2ac9b
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Int;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class IntInitialiser extends AbstractInitialiserBase implements IIntInitialiser {
+ @Override
+ public IIntInitialiser newInitialiser() {
+ return new IntInitialiser();
+ }
+
+ @Override
+ public Int instantiate() {
+ return TypesFactory.eINSTANCE.createInt();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java
new file mode 100644
index 0000000000..1725712870
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Long;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LongInitialiser extends AbstractInitialiserBase implements ILongInitialiser {
+ @Override
+ public ILongInitialiser newInitialiser() {
+ return new LongInitialiser();
+ }
+
+ @Override
+ public Long instantiate() {
+ return TypesFactory.eINSTANCE.createLong();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java
new file mode 100644
index 0000000000..0bfacb3583
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java
@@ -0,0 +1,19 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.NamespaceClassifierReference;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class NamespaceClassifierReferenceInitialiser extends AbstractInitialiserBase
+ implements INamespaceClassifierReferenceInitialiser {
+ @Override
+ public INamespaceClassifierReferenceInitialiser newInitialiser() {
+ return new NamespaceClassifierReferenceInitialiser();
+ }
+
+ @Override
+ public NamespaceClassifierReference instantiate() {
+ return TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java
new file mode 100644
index 0000000000..d877da4470
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.Short;
+import org.emftext.language.java.types.TypesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class ShortInitialiser extends AbstractInitialiserBase implements IShortInitialiser {
+ @Override
+ public IShortInitialiser newInitialiser() {
+ return new ShortInitialiser();
+ }
+
+ @Override
+ public Short instantiate() {
+ return TypesFactory.eINSTANCE.createShort();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java
new file mode 100644
index 0000000000..59c5691beb
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java
@@ -0,0 +1,27 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class TypesInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(new IInitialiser[] { new BooleanInitialiser(), new ByteInitialiser(), new CharInitialiser(),
+ new ClassifierReferenceInitialiser(), new DoubleInitialiser(), new FloatInitialiser(),
+ new InferableTypeInitialiser(), new IntInitialiser(), new LongInitialiser(),
+ new NamespaceClassifierReferenceInitialiser(), new ShortInitialiser(), new VoidInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IBooleanInitialiser.class, IByteInitialiser.class, ICharInitialiser.class,
+ IClassifierReferenceInitialiser.class, IDoubleInitialiser.class, IFloatInitialiser.class,
+ IInferableTypeInitialiser.class, IIntInitialiser.class, ILongInitialiser.class,
+ INamespaceClassifierReferenceInitialiser.class, IPrimitiveTypeInitialiser.class,
+ IShortInitialiser.class, ITypedElementExtensionInitialiser.class, ITypedElementInitialiser.class,
+ ITypeInitialiser.class, ITypeReferenceInitialiser.class, IVoidInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java
new file mode 100644
index 0000000000..fd67f75983
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.types;
+
+import org.emftext.language.java.types.TypesFactory;
+import org.emftext.language.java.types.Void;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class VoidInitialiser extends AbstractInitialiserBase implements IVoidInitialiser {
+ @Override
+ public IVoidInitialiser newInitialiser() {
+ return new VoidInitialiser();
+ }
+
+ @Override
+ public Void instantiate() {
+ return TypesFactory.eINSTANCE.createVoid();
+ }
+}
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java
new file mode 100644
index 0000000000..5ca4bd3583
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.types}.
+ */
+package cipm.consistency.initialisers.jamopp.types;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java
new file mode 100644
index 0000000000..7ef4411b58
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java
@@ -0,0 +1,202 @@
+package cipm.consistency.initialisers.jamopp.utiltests;
+
+import java.io.File;
+import java.nio.file.Paths;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.initialisers.IInitialiserPackage;
+import cipm.consistency.initialisers.jamopp.IJaMoPPUtilityTest;
+import cipm.consistency.initialisers.jamopp.JaMoPPInitialiserPackage;
+
+/**
+ * A test class, whose tests can be used to make sure no initialiser interfaces
+ * or concrete initialisers are missing.
+ *
+ * @author Alp Torac Genc
+ */
+public class UtilityTests implements IJaMoPPUtilityTest {
+ private static final Logger LOGGER = Logger.getLogger(UtilityTests.class);
+ /**
+ * Points at the parent package. Used by discovering methods in this class.
+ */
+ private static final File root = new File(Paths
+ .get(new File("").toPath().toString(), "src", UtilityTests.class.getPackageName()
+ .substring(0, UtilityTests.class.getPackageName().lastIndexOf(".")).replace(".", File.separator))
+ .toAbsolutePath().toUri());
+
+ @BeforeEach
+ public void setUp() {
+ Logger logger = this.getLogger();
+ logger.setLevel(Level.ALL);
+
+ logger = Logger.getRootLogger();
+ logger.removeAllAppenders();
+ ConsoleAppender ap = new ConsoleAppender(new PatternLayout("[%d{DATE}] %-5p: %c - %m%n"),
+ ConsoleAppender.SYSTEM_OUT);
+ logger.addAppender(ap);
+ }
+
+ public Logger getLogger() {
+ return LOGGER;
+ }
+
+ @Override
+ public IInitialiserPackage getUsedInitialiserPackage() {
+ return new JaMoPPInitialiserPackage();
+ }
+
+ private Collection getAllFiles() {
+ return this.getAllFiles(root);
+ }
+
+ /**
+ * The expected amount of concrete initialiser types.
+ *
+ * Note: Must be adapted, if new initialisers are added, which have concrete
+ * implementations.
+ */
+ private int getExpectedConcreteInitialiserCount() {
+ return 181;
+ }
+
+ /**
+ * The expected amount of initialiser types (abstract or concrete).
+ *
+ * Note: Must be adapted, if new initialisers are added.
+ */
+ private int getExpectedInitialiserCount() {
+ return 274;
+ }
+
+ /**
+ * Prints all interface types from {@link #getAllPossibleJaMoPPEObjectTypes()}.
+ *
+ *
+ * Does not test anything, just prints the said types.
+ */
+ @Test
+ public void printFullHierarchy() {
+ var hSet = this.getAllPossibleJaMoPPEObjectTypes();
+ this.getLogger().info(this.clsStreamToString(hSet.stream()));
+ }
+
+ /**
+ * Checks if all necessary concrete initialisers can be accessed under the used
+ * initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser types. The missing
+ * types can be found in the assertion message.
+ */
+ @Test
+ public void testAllConcreteInitialisersRegistered() {
+ var clss = this.getAllConcreteInitialiserCandidates();
+ Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), clss.size());
+ var registeredInits = this.getAllInitialiserInstances();
+ Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), registeredInits.size());
+
+ var matches = List.of(
+ clss.stream().filter((cls) -> registeredInits.stream().anyMatch((init) -> init.isInitialiserFor(cls)))
+ .toArray(Class>[]::new));
+
+ this.getLogger().info(matches.size() + " out of " + clss.size() + " concrete initialisers are registered");
+
+ if (matches.size() != clss.size()) {
+ Assertions.fail("Concrete initialisers not registered: "
+ + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls))));
+ }
+ }
+
+ /**
+ * Checks if all necessary initialiser interface types can be accessed under the
+ * used initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser interface types. The
+ * missing types can be found in the assertion message.
+ */
+ @Test
+ public void testAllInitialiserInterfacesRegistered() {
+ var clss = this.getAllInitialiserCandidates();
+ Assertions.assertEquals(this.getExpectedInitialiserCount(), clss.size());
+ var registeredInits = this.getAllInitialiserInterfaceTypes();
+ Assertions.assertEquals(this.getExpectedInitialiserCount(), registeredInits.size());
+
+ var matches = List.of(clss.stream()
+ .filter((cls) -> registeredInits.stream()
+ .anyMatch((init) -> this.getInitialiserInterfaceName(cls).equals(init.getSimpleName())))
+ .toArray(Class>[]::new));
+
+ this.getLogger().info(matches.size() + " out of " + clss.size() + " initialiser interfaces are registered");
+
+ if (matches.size() != clss.size()) {
+ Assertions.fail("Initialiser interfaces not registered: "
+ + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls))));
+ }
+ }
+
+ /**
+ * Checks if all concrete initialisers (SomethingInitialiser.java) files are
+ * implemented and present under {@link #root}.
+ *
+ * Prints the number of present concrete initialiser files. Information on the
+ * missing files can be found in the assertion message.
+ *
+ * Only checks whether the said files are present, does not inspect their
+ * content at all.
+ */
+ @Test
+ public void testAllConcreteInitialisersPresent() {
+ var intfcs = this.getAllConcreteInitialiserCandidates();
+ Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), intfcs.size());
+ var files = this.getAllFiles();
+
+ var matches = List.of(intfcs.stream().filter(
+ (ifc) -> files.stream().anyMatch((f) -> this.fileNameEquals(f, this.getConcreteInitialiserName(ifc))))
+ .toArray(Class>[]::new));
+ var count = matches.size();
+
+ this.getLogger().info(count + " out of " + intfcs.size() + " concrete initialiser files are present");
+
+ if (count != intfcs.size()) {
+ Assertions.fail("Concrete initialiser files missing for: "
+ + this.clsStreamToString(intfcs.stream().filter((ifc) -> !matches.contains(ifc))));
+ }
+ }
+
+ /**
+ * Checks if all interface initialisers (ISomethingInitialiser.java) files are
+ * implemented and present under {@link #root}.
+ *
+ * Prints the number of present initialiser files. Information on the missing
+ * files can be found in the assertion message.
+ *
+ * Only checks whether the said files are present, does not inspect their
+ * content at all.
+ */
+ @Test
+ public void testAllInitialiserInterfacesPresent() {
+ var intfcs = this.getAllInitialiserCandidates();
+ Assertions.assertEquals(this.getExpectedInitialiserCount(), intfcs.size());
+ var files = this.getAllFiles();
+
+ var matches = List.of(intfcs.stream().filter(
+ (ifc) -> files.stream().anyMatch((f) -> this.fileNameEquals(f, this.getInitialiserInterfaceName(ifc))))
+ .toArray(Class>[]::new));
+ var count = matches.size();
+
+ this.getLogger().info(count + " out of " + intfcs.size() + " initialiser files are present");
+
+ if (count != intfcs.size()) {
+ Assertions.fail("Initialiser files missing for: "
+ + this.clsStreamToString(intfcs.stream().filter((ifc) -> !matches.contains(ifc))));
+ }
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java
new file mode 100644
index 0000000000..14b60e3558
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains tests that check whether {@link IInitialiser}s are setup properly,
+ * i.e. if their source files are present and they can be accessed.
+ */
+package cipm.consistency.initialisers.jamopp.utiltests;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java
new file mode 100644
index 0000000000..76a66bf48c
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java
@@ -0,0 +1,20 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.VariablesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+import org.emftext.language.java.variables.AdditionalLocalVariable;
+
+public class AdditionalLocalVariableInitialiser extends AbstractInitialiserBase
+ implements IAdditionalLocalVariableInitialiser {
+ @Override
+ public AdditionalLocalVariable instantiate() {
+ return VariablesFactory.eINSTANCE.createAdditionalLocalVariable();
+ }
+
+ @Override
+ public IAdditionalLocalVariableInitialiser newInitialiser() {
+ return new AdditionalLocalVariableInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java
new file mode 100644
index 0000000000..13e776a491
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java
@@ -0,0 +1,13 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.AdditionalLocalVariable;
+
+import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+public interface IAdditionalLocalVariableInitialiser
+ extends IInitializableInitialiser, IReferenceableElementInitialiser, ITypedElementInitialiser {
+ @Override
+ public AdditionalLocalVariable instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java
new file mode 100644
index 0000000000..4120c4cd3e
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java
@@ -0,0 +1,25 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.AdditionalLocalVariable;
+import org.emftext.language.java.variables.LocalVariable;
+
+import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser;
+import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser;
+
+public interface ILocalVariableInitialiser
+ extends IAnnotableAndModifiableInitialiser, IInitializableInitialiser, IVariableInitialiser {
+ @Override
+ public LocalVariable instantiate();
+
+ public default boolean addAdditionalLocalVariable(LocalVariable lv, AdditionalLocalVariable alv) {
+ if (alv != null) {
+ lv.getAdditionalLocalVariables().add(alv);
+ return lv.getAdditionalLocalVariables().contains(alv);
+ }
+ return true;
+ }
+
+ public default boolean addAdditionalLocalVariables(LocalVariable lv, AdditionalLocalVariable[] alvs) {
+ return this.doMultipleModifications(lv, alvs, this::addAdditionalLocalVariable);
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java
new file mode 100644
index 0000000000..910b7b24f9
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java
@@ -0,0 +1,11 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.Resource;
+
+import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser;
+
+public interface IResourceInitialiser extends ICommentableInitialiser {
+ @Override
+ public Resource instantiate();
+
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java
new file mode 100644
index 0000000000..6805d0b414
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java
@@ -0,0 +1,22 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.Variable;
+
+import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser;
+import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser;
+import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser;
+
+/**
+ * An interface meant for {@link IInitialiser} implementors that are supposed to
+ * create {@link Variable} instances.
+ *
+ * Note: "createMethodCall..." methods in {@link Variable} do not modify
+ * {@link Variable} instances.
+ *
+ * @author Alp Torac Genc
+ */
+public interface IVariableInitialiser
+ extends IReferenceableElementInitialiser, ITypeArgumentableInitialiser, ITypedElementInitialiser {
+ @Override
+ public Variable instantiate();
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java
new file mode 100644
index 0000000000..e878847187
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java
@@ -0,0 +1,18 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import org.emftext.language.java.variables.LocalVariable;
+import org.emftext.language.java.variables.VariablesFactory;
+
+import cipm.consistency.initialisers.AbstractInitialiserBase;
+
+public class LocalVariableInitialiser extends AbstractInitialiserBase implements ILocalVariableInitialiser {
+ @Override
+ public LocalVariable instantiate() {
+ return VariablesFactory.eINSTANCE.createLocalVariable();
+ }
+
+ @Override
+ public ILocalVariableInitialiser newInitialiser() {
+ return new LocalVariableInitialiser();
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java
new file mode 100644
index 0000000000..0081e1b4d1
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java
@@ -0,0 +1,21 @@
+package cipm.consistency.initialisers.jamopp.variables;
+
+import java.util.Collection;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+
+public class VariablesInitialiserPackage implements IInitialiserPackage {
+ @Override
+ public Collection getInitialiserInstances() {
+ return this.initCol(
+ new IInitialiser[] { new AdditionalLocalVariableInitialiser(), new LocalVariableInitialiser(), });
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection> getInitialiserInterfaceTypes() {
+ return this.initCol(new Class[] { IAdditionalLocalVariableInitialiser.class, ILocalVariableInitialiser.class,
+ IResourceInitialiser.class, IVariableInitialiser.class, });
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java
new file mode 100644
index 0000000000..63280c4546
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Contains {@link IInitialiser} implementations for
+ * {@link org.emftext.language.java.variables}.
+ */
+package cipm.consistency.initialisers.jamopp.variables;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java
new file mode 100644
index 0000000000..6904c86108
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java
@@ -0,0 +1,30 @@
+/**
+ * Contains interfaces for initialiser implementations (such as
+ * {@link cipm.consistency.initialisers.IInitialiser} as well as for classes
+ * that can be used to adapt them. Also has an interface
+ * {@link cipm.consistency.initialisers.IInitialiserPackage}, which can be
+ * implemented to access initialiser types and instances easier.
+ * {@link cipm.consistency.initialisers.IInitialiserPackage} defines a nestable
+ * structure that enables finding the proper initialisers as well as certain
+ * groups of initialisers. It is recommended to implement that interface for
+ * each package containing initialisers and to add all initialisers to that
+ * implementation.
+ *
+ * Initialisers are classes/interfaces, whose purpose is to instantiate,
+ * initialise and modify certain objects. Implementing initialisers similar to
+ * their designated objects, may help making the initialisers more flexible and
+ * can ease adding further initialisers later on. It is strongly recommended to
+ * define atomic modification methods in initialisers and re-using them, rather
+ * than defining complex modification methods.
+ *
+ * In order to make parameterised tests using initialisers as parameters
+ * possible, one can use
+ * {@link cipm.consistency.initialisers.IInitialiserAdapterStrategy} to adapt
+ * certain initialisers. This way, they can be used in such tests without
+ * throwing exceptions and without the need of type checking. The most common
+ * cause of such exceptions is initialisers not setting the required attributes
+ * while instantiating objects. In such cases, the said adapters can be used to
+ * have them set those attributes, so that using the instances in tests do not
+ * throw exceptions, due to their essential attributes not being set.
+ */
+package cipm.consistency.initialisers;
\ No newline at end of file
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java
new file mode 100644
index 0000000000..17c822ab98
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java
@@ -0,0 +1,353 @@
+package cipm.consistency.initialisers.tests;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.DummyModifiableObjInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.IDummyInitialiserWithoutMethods;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjFour;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjFourInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjOne;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjOneInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjThree;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjThreeInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjTwo;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjTwoInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjFourInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjOneInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjThreeInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjTwoInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyAlternateInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyNonTerminalObj;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyNonTerminalObjInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTerminalObj;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTerminalObjInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTopLevelObj;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTopLevelObjInitialiser;
+import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.IDummyAlternateInitialiser;
+
+/**
+ * Contains tests for (static/default) methods implemented in
+ * {@link IInitialiser}
+ *
+ * @author Alp Torac Genc
+ */
+public class IInitialiserTests {
+ /**
+ * Ensures that
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * throws null pointer exceptions if the object to be modified is null.
+ */
+ @Test
+ public void test_doMultipleModifications_NullObject() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertThrows(NullPointerException.class, () -> {
+ init.addAttrs(null, new Object[] { 1 });
+ });
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * throws exceptions, if null is passed as array of modification parameters.
+ * Also ensures that true is returned.
+ */
+ @Test
+ public void test_doMultipleModifications_NullModificationParams() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertTrue(init.addAttrs(init.instantiate(), null));
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * throws exceptions, if array of modification parameters is empty. Also ensures
+ * that true is returned.
+ */
+ @Test
+ public void test_doMultipleModifications_EmptyModificationParams() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] {}));
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * works for 1 proper modification parameter (passed via an array of size 1).
+ */
+ @Test
+ public void test_doMultipleModifications_SingleModification_Success() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] { 1 }));
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * works for 1 inappropriate modification parameter (passed via an array of size
+ * 1).
+ */
+ @Test
+ public void test_doMultipleModifications_SingleModification_Failure() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertFalse(init.addAttrs(init.instantiate(), new Object[] { null }));
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * works for its intended use case (i.e. summarising multiple modification
+ * method calls) with proper parameters.
+ */
+ @Test
+ public void test_doMultipleModifications_MultipleModifications_Success() {
+ var init = new DummyModifiableObjInitialiser();
+ Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] { 1, 2, 3 }));
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * successfully performs modifications till it fails.
+ */
+ @Test
+ public void test_doMultipleModifications_MultipleModifications_LateFailure() {
+ var init = new DummyModifiableObjInitialiser();
+ var obj = init.instantiate();
+ var attr1 = Integer.valueOf(1);
+ var attr2 = Integer.valueOf(2);
+
+ Assertions.assertFalse(init.addAttrs(obj, new Object[] { attr1, attr2, attr1 }));
+ var attrs = obj.getAttrs();
+ Assertions.assertTrue(attrs.contains(attr1));
+ Assertions.assertTrue(attrs.contains(attr2));
+ Assertions.assertEquals(2, attrs.size());
+ }
+
+ /**
+ * Check whether
+ * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)}
+ * fails early, if a modification fails, which is neither performed at the start
+ * nor at the end.
+ */
+ @Test
+ public void test_doMultipleModifications_MultipleModifications_FailEarly() {
+ var init = new DummyModifiableObjInitialiser();
+ var obj = init.instantiate();
+ var attr1 = Integer.valueOf(1);
+ var attr2 = Integer.valueOf(2);
+
+ Assertions.assertFalse(init.addAttrs(obj, new Object[] { attr1, attr1, attr2 }));
+ var attrs = obj.getAttrs();
+ Assertions.assertTrue(attrs.contains(attr1));
+ Assertions.assertFalse(attrs.contains(attr2));
+ Assertions.assertEquals(1, attrs.size());
+ }
+
+ /**
+ * Checks whether {@link IInitialiser#declaresModificationMethods(Class)}
+ * circumvents null pointer exceptions.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NullClass() {
+ Class extends IInitialiser> cls = null;
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(cls));
+ }
+
+ /**
+ * Checks whether {@link IInitialiser#declaresModificationMethods(IInitialiser)}
+ * circumvents null pointer exceptions.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NullInitialiser() {
+ IInitialiser init = null;
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(init));
+ }
+
+ /**
+ * Check whether a modification method implemented only in the interface of an
+ * initialiser can be found.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_InInterface() {
+ var init = new DummyObjOneInitialiser();
+ Assertions.assertFalse(init.declaresModificationMethods());
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(init));
+ Assertions.assertTrue(IInitialiser.declaresModificationMethods(IDummyObjOneInitialiser.class));
+ }
+
+ /**
+ * Check whether a modification method implemented only in the concrete class of
+ * an initialiser can be found.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_InClass() {
+ var init = new DummyObjTwoInitialiser();
+ Assertions.assertTrue(init.declaresModificationMethods());
+ Assertions.assertTrue(IInitialiser.declaresModificationMethods(init));
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjTwoInitialiser.class));
+ }
+
+ /**
+ * Check whether initialiser types with neither direct nor overridden methods
+ * cause exceptions.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NoMethods() {
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyInitialiserWithoutMethods.class));
+ }
+
+ /**
+ * Check whether initialisers with only an overridden instantiate() method are
+ * detected as initialisers without modification methods.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NoAdditionalMethods() {
+ var init = new DummyObjThreeInitialiser();
+ Assertions.assertFalse(init.declaresModificationMethods());
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(init));
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjThreeInitialiser.class));
+ }
+
+ /**
+ * Check whether initialisers with no additional modification methods can be
+ * detected, even if they do have other methods.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NoModificationMethods() {
+ var init = new DummyObjFourInitialiser();
+ Assertions.assertFalse(init.declaresModificationMethods());
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(init));
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjFourInitialiser.class));
+ }
+
+ /**
+ * Check whether initialisers with no direct modification methods are detected,
+ * i.e. initialisers that do inherit modification methods yet do not implement
+ * any in their own body.
+ */
+ @Test
+ public void test_DeclaresModificationMethods_NoDirectModificationMethods() {
+ var init = new DummyAlternateInitialiser();
+ Assertions.assertFalse(init.declaresModificationMethods());
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(init));
+ Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyAlternateInitialiser.class));
+ }
+
+ /**
+ * Check whether initialiser types with neither direct nor overridden methods
+ * cause exceptions.
+ */
+ @Test
+ public void test_IsInitialiserFor_NoMethods() {
+ Assertions.assertFalse(
+ IInitialiser.isInitialiserFor(IDummyInitialiserWithoutMethods.class, DummyNonTerminalObj.class));
+ Assertions.assertFalse(IInitialiser.isInitialiserFor(IDummyInitialiserWithoutMethods.class, null));
+ }
+
+ /**
+ * Check whether an initialiser, whose name does not contain the name of the
+ * object class it is supposed to instantiate, is still detected as its
+ * initialiser, if it has a proper instantiation method.
+ */
+ @Test
+ public void test_IsInitialiserFor_NameMismatch() {
+ Assertions.assertTrue(new DummyAlternateInitialiser().isInitialiserFor(DummyNonTerminalObj.class));
+ Assertions
+ .assertTrue(IInitialiser.isInitialiserFor(IDummyAlternateInitialiser.class, DummyNonTerminalObj.class));
+ }
+
+ /**
+ * Checks whether {@link IInitialiser#isInitialiserFor(Class, Class)}
+ * circumvents null pointer exceptions, which could be caused by the first
+ * parameter being null.
+ */
+ @Test
+ public void test_IsInitialiserFor_NullInitialiserClass() {
+ Class extends IInitialiser> initCls = null;
+ Assertions.assertFalse(IInitialiser.isInitialiserFor(initCls, DummyNonTerminalObj.class));
+ }
+
+ /**
+ * Checks whether {@link IInitialiser#isInitialiserFor(IInitialiser, Class)}
+ * circumvents null pointer exceptions, which could be caused by the first
+ * parameter being null.
+ */
+ @Test
+ public void test_IsInitialiserFor_NullInitialiser() {
+ IInitialiser init = null;
+ Assertions.assertFalse(IInitialiser.isInitialiserFor(init, DummyNonTerminalObj.class));
+ }
+
+ /**
+ * Checks whether isInitialiserFor methods circumvent null pointer exceptions,
+ * which could be caused by the class object parameter being null.
+ */
+ @Test
+ public void test_IsInitialiserFor_NullClass() {
+ Class> cls = null;
+
+ Assertions.assertFalse(IInitialiser.isInitialiserFor(new DummyObjOneInitialiser(), cls));
+ Assertions.assertFalse(IInitialiser.isInitialiserFor(DummyObjOneInitialiser.class, cls));
+ Assertions.assertFalse(new DummyObjOneInitialiser().isInitialiserFor(cls));
+ }
+
+ /**
+ * Check whether initialisers that are meant to instantiate certain objects can
+ * be detected, where the said objects (and their initialisers) have no type
+ * hierarchy.
+ */
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test_IsInitialiserFor_NoTypeHierarchy() {
+ var objClss = new Class[] { DummyObjOne.class, DummyObjTwo.class, DummyObjThree.class, DummyObjFour.class };
+ var initInterfaceClss = new Class[] { IDummyObjOneInitialiser.class, IDummyObjTwoInitialiser.class,
+ IDummyObjThreeInitialiser.class, IDummyObjFourInitialiser.class };
+ var initClss = new Class[] { DummyObjOneInitialiser.class, DummyObjTwoInitialiser.class,
+ DummyObjThreeInitialiser.class, DummyObjFourInitialiser.class };
+ var inits = new IInitialiser[] { new DummyObjOneInitialiser(), new DummyObjTwoInitialiser(),
+ new DummyObjThreeInitialiser(), new DummyObjFourInitialiser() };
+
+ // Test over all the classes given above, in order to make sure that
+ // other methods implemented in the classes/interfaces do not cause issues
+ for (int i = 0; i < objClss.length; i++) {
+ var cInitInterfaceCls = initInterfaceClss[i];
+ var cInitClss = initClss[i];
+ var cInit = inits[i];
+
+ for (int j = 0; j < objClss.length; j++) {
+ var cObjCls = objClss[j];
+
+ Assertions.assertEquals(i == j, cInit.isInitialiserFor(cObjCls));
+ Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInit, cObjCls));
+ Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInitClss, cObjCls));
+ Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInitInterfaceCls, cObjCls));
+ }
+ }
+ }
+
+ /**
+ * Check whether initialisers within a type hierarchy are correctly matched to
+ * the object class they are supposed to instantiate.
+ */
+ @Test
+ public void test_IsInitialiserFor_WithTypeHierarchy() {
+ var tlInit = new DummyTopLevelObjInitialiser();
+ var ntInit = new DummyNonTerminalObjInitialiser();
+ var tInit = new DummyTerminalObjInitialiser();
+
+ Assertions.assertFalse(tlInit.isInitialiserFor(DummyTerminalObj.class));
+ Assertions.assertFalse(tlInit.isInitialiserFor(DummyNonTerminalObj.class));
+ Assertions.assertTrue(tlInit.isInitialiserFor(DummyTopLevelObj.class));
+
+ Assertions.assertFalse(ntInit.isInitialiserFor(DummyTerminalObj.class));
+ Assertions.assertTrue(ntInit.isInitialiserFor(DummyNonTerminalObj.class));
+ Assertions.assertFalse(ntInit.isInitialiserFor(DummyTopLevelObj.class));
+
+ Assertions.assertTrue(tInit.isInitialiserFor(DummyTerminalObj.class));
+ Assertions.assertFalse(tInit.isInitialiserFor(DummyNonTerminalObj.class));
+ Assertions.assertFalse(tInit.isInitialiserFor(DummyTopLevelObj.class));
+
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java
new file mode 100644
index 0000000000..d7d68d6135
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java
@@ -0,0 +1,446 @@
+package cipm.consistency.initialisers.tests;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.initialisers.IInitialiserAdapterStrategy;
+import cipm.consistency.initialisers.IInitialiserBase;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserA;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserC;
+import cipm.consistency.initialisers.tests.dummy.packages.ObjAInitStrat;
+import cipm.consistency.initialisers.tests.dummy.packages.ObjCFirstInitStepStrat;
+import cipm.consistency.initialisers.tests.dummy.packages.ObjCSecondInitStepStrat;
+
+/**
+ * Contains tests for {@link IInitialiserBase} over dummy elements, with a focus
+ * on the interaction with {@link IInitialiserAdapterStrategy}.
+ *
+ * @author Alp Torac Genc
+ */
+public class InitialiserBaseTests {
+ /**
+ * Shortcut for {@code assertAdapted(init, true)}
+ */
+ private void assertAdapted(IInitialiserBase init) {
+ this.assertAdapted(init, true);
+ }
+
+ /**
+ * Assert that the given initialiser is being adapted by at least one adaptation
+ * strategy.
+ */
+ private void assertAdapted(IInitialiserBase init, boolean isAdapted) {
+ Assertions.assertEquals(init.getAdaptingStrategyCount(), init.getAdaptingStrategies().size());
+ Assertions.assertEquals(isAdapted, init.isAdapted());
+ Assertions.assertEquals(isAdapted, init.getAdaptingStrategyCount() > 0);
+ }
+
+ /**
+ * Assert that all given adaptation strategies are adapting the given
+ * initialiser.
+ */
+ private void assertAdaptedBy(IInitialiserAdapterStrategy[] strats, IInitialiserBase init) {
+ if (strats != null && strats.length > 0) {
+ var adaptingStrats = init.getAdaptingStrategies();
+ Assertions.assertEquals(strats.length, adaptingStrats.size());
+ this.assertAdapted(init);
+ for (var strat : strats) {
+ Assertions.assertTrue(adaptingStrats.contains(strat));
+ }
+ } else {
+ this.assertAdapted(init, false);
+ }
+ }
+
+ /**
+ * Add the given adaptation strategy to the given initialiser and make the
+ * necessary assertions before and after insertion.
+ */
+ private void addAndAssertAdded(IInitialiserAdapterStrategy strat, IInitialiserBase init) {
+ var priorStrats = init.getAdaptingStrategies();
+ Assertions.assertFalse(priorStrats.contains(strat));
+
+ var allStrats = new ArrayList();
+ allStrats.addAll(priorStrats);
+ this.assertAdaptedBy(allStrats.toArray(IInitialiserAdapterStrategy[]::new), init);
+
+ allStrats.add(strat);
+ init.addAdaptingStrategy(strat);
+ this.assertAdaptedBy(allStrats.toArray(IInitialiserAdapterStrategy[]::new), init);
+
+ Assertions.assertEquals(priorStrats.size() + 1, init.getAdaptingStrategyCount());
+ }
+
+ /**
+ * Test adding a non-empty array of adaptation strategies to an initialiser
+ * during its construction.
+ */
+ @Test
+ public void test_AddStrategiesToInitAtConstruction() {
+ var stratOne = new ObjCFirstInitStepStrat();
+ var stratTwo = new ObjCSecondInitStepStrat();
+ var stratArr = new IInitialiserAdapterStrategy[] { stratOne, stratTwo };
+
+ var init = new DummyInitialiserC(stratArr);
+
+ this.assertAdaptedBy(stratArr, init);
+ }
+
+ /**
+ * Test adding an empty array of adaptation strategies to an initialiser during
+ * its construction.
+ */
+ @Test
+ public void test_AddStrategiesToInitAtConstruction_EmptyArray() {
+ var stratArr = new IInitialiserAdapterStrategy[] {};
+
+ var init = new DummyInitialiserC(stratArr);
+
+ this.assertAdaptedBy(stratArr, init);
+ }
+
+ /**
+ * Test adding a null array of adaptation strategies to an initialiser during
+ * its construction.
+ */
+ @Test
+ public void test_AddStrategiesToInitAtConstruction_NullArray() {
+ var init = new DummyInitialiserC(null);
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test adding adaptation strategies to an initialiser. Strategies are added one
+ * at a time.
+ */
+ @Test
+ public void test_AddStrategy_OneAtATime() {
+ var init = new DummyInitialiserA();
+
+ this.assertAdapted(init, false);
+
+ var stratOne = new ObjAInitStrat();
+ init.addAdaptingStrategy(stratOne);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne }, init);
+
+ var stratTwo = new ObjAInitStrat();
+ init.addAdaptingStrategy(stratTwo);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init);
+ }
+
+ /**
+ * Test adding adaptation strategies to an initialiser. A strategy array is
+ * added to the initialiser.
+ */
+ @Test
+ public void test_AddStrategy_StrategyArray() {
+ var init = new DummyInitialiserA();
+ this.assertAdapted(init, false);
+
+ var stratOne = new ObjAInitStrat();
+ var stratTwo = new ObjAInitStrat();
+ var stratArr = new IInitialiserAdapterStrategy[] { stratOne, stratTwo };
+
+ init.addAdaptingStrategies(stratArr);
+ this.assertAdaptedBy(stratArr, init);
+ }
+
+ /**
+ * Test adding adaptation strategies to an initialiser. A strategy array with a
+ * null element is added to the initialiser.
+ */
+ @Test
+ public void test_AddStrategy_StrategyArrayWithNull() {
+ var init = new DummyInitialiserA();
+ this.assertAdapted(init, false);
+
+ var stratOne = new ObjAInitStrat();
+ var stratTwo = new ObjAInitStrat();
+ var stratArr = new IInitialiserAdapterStrategy[] { stratOne, null, stratTwo };
+
+ init.addAdaptingStrategies(stratArr);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init);
+ }
+
+ /**
+ * Test adding an empty array of adaptation strategies to an initialiser.
+ */
+ @Test
+ public void test_AddStrategy_EmptyArray() {
+ var init = new DummyInitialiserA();
+ this.assertAdapted(init, false);
+
+ var stratArr = new IInitialiserAdapterStrategy[] {};
+
+ init.addAdaptingStrategies(stratArr);
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test adding a null array (of adaptation strategies) to an initialiser.
+ */
+ @Test
+ public void test_AddStrategy_NullArray() {
+ var init = new DummyInitialiserA();
+ this.assertAdapted(init, false);
+
+ init.addAdaptingStrategies(null);
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test removing (existing) adaptation strategies from an initialiser.
+ */
+ @Test
+ public void test_RemoveAdapterStrategy() {
+ var init = new DummyInitialiserA();
+ var stratOne = new ObjAInitStrat();
+ var stratTwo = new ObjAInitStrat();
+ init.addAdaptingStrategy(stratOne);
+ init.addAdaptingStrategy(stratTwo);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init);
+
+ init.removeAdaptingStrategy(stratOne);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init);
+
+ init.removeAdaptingStrategy(stratTwo);
+ this.assertAdaptedBy(null, init);
+ }
+
+ /**
+ * Test removing a non-existent adaptation strategy from an initialiser.
+ */
+ @Test
+ public void test_RemoveAdapterStrategy_NonExistent() {
+ var init = new DummyInitialiserA();
+ var strat = new ObjAInitStrat();
+
+ this.assertAdapted(init, false);
+ init.removeAdaptingStrategy(strat);
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test removing a non-existent adaptation strategy from an initialiser.
+ */
+ @Test
+ public void test_RemoveAdapterStrategy_NullCheck() {
+ var init = new DummyInitialiserA();
+
+ this.assertAdapted(init, false);
+ init.removeAdaptingStrategy(null);
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test removing an existing adaptation strategy from an initialiser twice.
+ */
+ @Test
+ public void test_RemoveAdapterStrategy_Twice() {
+ var init = new DummyInitialiserA();
+ var stratOne = new ObjAInitStrat();
+ var stratTwo = new ObjAInitStrat();
+ init.addAdaptingStrategy(stratOne);
+ init.addAdaptingStrategy(stratTwo);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init);
+
+ init.removeAdaptingStrategy(stratOne);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init);
+ var stratsAfterFirstRemoval = init.getAdaptingStrategies();
+
+ init.removeAdaptingStrategy(stratOne);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init);
+
+ // Make sure that all other adapting initialisers are still there after the
+ // second removal attempt
+ Assertions.assertTrue(init.getAdaptingStrategies().containsAll(stratsAfterFirstRemoval));
+ }
+
+ /**
+ * Test cleaning all adaptation strategies from an initialiser, i.e. removing
+ * all such strategies at once.
+ */
+ @Test
+ public void test_CleanAdapterStrategy() {
+ var init = new DummyInitialiserA();
+ var stratOne = new ObjAInitStrat();
+ var stratTwo = new ObjAInitStrat();
+ init.addAdaptingStrategy(stratOne);
+ init.addAdaptingStrategy(stratTwo);
+ this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init);
+
+ init.cleanAdaptingStrategy();
+ this.assertAdapted(init, false);
+ }
+
+ /**
+ * Test new initialiser creation with adapting strategies, where the original
+ * initialiser has no adapting strategies.
+ */
+ @Test
+ public void test_NewInitialiserWithStrategy_NoStrategies() {
+ var init = new DummyInitialiserC();
+ this.assertAdapted(init, false);
+ var newInit = init.newInitialiserWithStrategies();
+ this.assertAdapted(newInit, false);
+
+ Assertions.assertFalse(init == newInit);
+ }
+
+ /**
+ * Test new initialiser creation with adapting strategies.
+ */
+ @Test
+ public void test_NewInitialiserWithStrategy() {
+ var init = new DummyInitialiserC();
+ var stratOne = new ObjCFirstInitStepStrat();
+ var stratTwo = new ObjCSecondInitStepStrat();
+
+ this.addAndAssertAdded(stratOne, init);
+ this.addAndAssertAdded(stratTwo, init);
+ this.assertAdapted(init, true);
+
+ var newInit = init.newInitialiserWithStrategies();
+ this.assertAdapted(newInit, true);
+
+ Assertions.assertFalse(init == newInit);
+ Assertions.assertFalse(newInit.getAdaptingStrategies().contains(stratOne));
+ Assertions.assertFalse(newInit.getAdaptingStrategies().contains(stratTwo));
+ }
+
+ /**
+ * Test new initialiser creation without adapting strategies, even though the
+ * original initialiser has adapting strategies.
+ */
+ @Test
+ public void test_NewInitialiser_WithStrategies() {
+ var init = new DummyInitialiserC();
+ var stratOne = new ObjCFirstInitStepStrat();
+ var stratTwo = new ObjCSecondInitStepStrat();
+
+ this.addAndAssertAdded(stratOne, init);
+ this.addAndAssertAdded(stratTwo, init);
+ this.assertAdapted(init, true);
+
+ var newInit = init.newInitialiser();
+ this.assertAdapted(newInit, false);
+
+ Assertions.assertFalse(init == newInit);
+ }
+
+ /**
+ * Test initialising an object generated from an initialiser without adapting
+ * it.
+ */
+ @Test
+ public void test_Initialisation_WithoutStrategy() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+ this.assertAdapted(init, false);
+ // No initialisation steps to fail here, so true
+ Assertions.assertTrue(init.initialise(obj));
+
+ Assertions.assertFalse(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from an initialiser without adapting it
+ * all the way.
+ */
+ @Test
+ public void test_SingleInitialisation_PartialSuccess() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init);
+ Assertions.assertTrue(init.initialise(obj));
+ Assertions.assertTrue(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from an initialiser with a failing
+ * adaptation strategy.
+ */
+ @Test
+ public void test_SingleInitialisation_Failure() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(false), init);
+ Assertions.assertFalse(init.initialise(obj));
+ Assertions.assertFalse(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from an adapted initialiser, where the
+ * first adaptation strategy succeeds but the second one fails.
+ */
+ @Test
+ public void test_SingleInitialisation_LateConflict() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init);
+ this.addAndAssertAdded(new ObjCSecondInitStepStrat(false), init);
+ Assertions.assertFalse(init.initialise(obj));
+ Assertions.assertTrue(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from an adapted initialiser, where the
+ * first adaptation strategy fails and stops the second one from working, even
+ * though the second one would succeed.
+ */
+ @Test
+ public void test_SingleInitialisation_FailEarlyAtConflict() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(false), init);
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init);
+ Assertions.assertFalse(init.initialise(obj));
+ Assertions.assertFalse(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from a properly adapted initialiser.
+ */
+ @Test
+ public void test_SingleInitialisation_AtOnce() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init);
+ this.addAndAssertAdded(new ObjCSecondInitStepStrat(), init);
+ Assertions.assertTrue(init.initialise(obj));
+ Assertions.assertTrue(obj.isInitialisationStepOneDone());
+ Assertions.assertTrue(obj.isInitialisationStepTwoDone());
+ }
+
+ /**
+ * Test initialising an object generated from an initialiser but add necessary
+ * adaptation strategies over multiple steps.
+ */
+ @Test
+ public void test_MultipleInitialisations() {
+ var init = new DummyInitialiserC();
+ var obj = init.instantiate();
+
+ this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init);
+ Assertions.assertTrue(init.initialise(obj));
+ Assertions.assertTrue(obj.isInitialisationStepOneDone());
+ Assertions.assertFalse(obj.isInitialisationStepTwoDone());
+
+ this.addAndAssertAdded(new ObjCSecondInitStepStrat(), init);
+ Assertions.assertTrue(init.initialise(obj));
+ Assertions.assertTrue(obj.isInitialisationStepOneDone());
+ Assertions.assertTrue(obj.isInitialisationStepTwoDone());
+ }
+}
diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java
new file mode 100644
index 0000000000..8f8db7ac7f
--- /dev/null
+++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java
@@ -0,0 +1,199 @@
+package cipm.consistency.initialisers.tests;
+
+import java.util.Collection;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import cipm.consistency.initialisers.IInitialiser;
+import cipm.consistency.initialisers.IInitialiserPackage;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyAggregateInitialiserPackageOne;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyAggregateInitialiserPackageTwo;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserA;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserB;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserC;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserD;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserE;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageA;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageB;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageCD;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyObjA;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyObjB;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyObjC;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyObjD;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyObjE;
+import cipm.consistency.initialisers.tests.dummy.packages.DummyTopLevelInitialiserPackage;
+
+/**
+ * Contains tests for {@link IInitialiserPackage} over dummy elements. The aim
+ * is to ensure that initialiser discovery works on certain package structures
+ * as intended.
+ *
+ * Check the used dummy elements to get more information on their structure.
+ *
+ * @author Alp Torac Genc
+ */
+public class InitialiserPackageTests {
+ /**
+ * Assert that the initialiser for objects of type cls is/is not reachable from
+ * pac.
+ */
+ private void assertInitialiserReachableFrom(Class> cls, IInitialiserPackage pac, boolean isReachable) {
+ var init = pac.getInitialiserInstanceFor(cls);
+ var initCls = pac.getInitialiserInterfaceTypeFor(cls);
+
+ Assertions.assertEquals(isReachable, init != null);
+ Assertions.assertEquals(isReachable, initCls != null);
+
+ if (isReachable) {
+ Assertions.assertTrue(init.isInitialiserFor(cls));
+ Assertions.assertTrue(init.getClass().equals(initCls));
+ }
+ }
+
+ /**
+ * A variant of
+ * {@link #assertInitialiserReachableFrom(Class, IInitialiserPackage, boolean)},
+ * where the final parameter is true.
+ */
+ private void assertInitialiserReachableFrom(Class> cls, IInitialiserPackage pac) {
+ this.assertInitialiserReachableFrom(cls, pac, true);
+ }
+
+ /**
+ * Asserts either that the expected elements are in col or that col contains
+ * elements of same types as expected elements.
+ */
+ private void assertContentEqualsByClass(T[] expectedElems, Collection