diff --git a/org.framed.iorm.editpolicymodel.edit/.classpath b/org.framed.iorm.editpolicymodel.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..22f30643cba38503dfc820a64bc4225fd8c743ba
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.framed.iorm.editpolicymodel.edit/.gitignore b/org.framed.iorm.editpolicymodel.edit/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/org.framed.iorm.editpolicymodel.edit/.project b/org.framed.iorm.editpolicymodel.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..57b35c4dc280144034641473cd67429ba3617ad9
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.framed.iorm.editpolicymodel.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.framed.iorm.editpolicymodel.edit/META-INF/MANIFEST.MF b/org.framed.iorm.editpolicymodel.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..2abfdb23e56d3430e3ca757537cd25d7c8bd953b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.framed.iorm.editpolicymodel.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: editpolicymodel.provider.editpolicymodelEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: editpolicymodel.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.framed.iorm.editpolicymodel;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.framed.iorm.model;visibility:=reexport,
+ org.framed.iorm.model.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.framed.iorm.editpolicymodel.edit/build.properties b/org.framed.iorm.editpolicymodel.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6e3e902e8086aa47bba4a55e03192123bc8436ed
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bdb8c8410cd164e4679919ddbc310eab519278a1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4388857c5efde0c251943aa1d2f0ae44fe164212
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..944a638ff8bd988ea9c19f8fa2fc218dfce0fc3b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..24850669d3e7f77fcc377ccf10488f5675c68ae2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4388857c5efde0c251943aa1d2f0ae44fe164212
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8ee387a3ce098b74d29d76ef4005710845f6ed
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f1bc279050bfebe458f1a3dddf7c07c0cba444f6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8a34e95b34f5c408cbfccb8e2d58be90368d2995
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..37db3e582f3910396fd0119976fcaf1023feb7c6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ff5397fa2a2aebf8109630fb09cf86d7aaf9bec6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..944a638ff8bd988ea9c19f8fa2fc218dfce0fc3b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a31e5142add7f49c9be1e2fa87e1668b5f3e0879
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0669409fbd0654de1b14423aaf1a2325ccd12269
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dcdeb6ef0cc9615f86898d49897aff7a0bd01522
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0aa23c2e565e235d6dec3a421a64e8c32485dbf2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_leftRule_TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bdb8c8410cd164e4679919ddbc310eab519278a1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4388857c5efde0c251943aa1d2f0ae44fe164212
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..944a638ff8bd988ea9c19f8fa2fc218dfce0fc3b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..24850669d3e7f77fcc377ccf10488f5675c68ae2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4388857c5efde0c251943aa1d2f0ae44fe164212
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8ee387a3ce098b74d29d76ef4005710845f6ed
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f1bc279050bfebe458f1a3dddf7c07c0cba444f6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8a34e95b34f5c408cbfccb8e2d58be90368d2995
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..37db3e582f3910396fd0119976fcaf1023feb7c6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ff5397fa2a2aebf8109630fb09cf86d7aaf9bec6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..944a638ff8bd988ea9c19f8fa2fc218dfce0fc3b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a31e5142add7f49c9be1e2fa87e1668b5f3e0879
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0669409fbd0654de1b14423aaf1a2325ccd12269
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dcdeb6ef0cc9615f86898d49897aff7a0bd01522
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0aa23c2e565e235d6dec3a421a64e8c32485dbf2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryConstraintRule_rightRule_TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..65c0cbe832669cce9f0bb430663167b4df3930e7
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0056d63c98232b9ccfd7714ce4d3d2480f928f8e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5c5a999f886e3b929df623268800d0ba5d4cecdf
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b24124ac7a71778dcb498d96cddd5053281cebeb
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d1e5fce69bfcf958f59275a59bd5f4923f4692a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0056d63c98232b9ccfd7714ce4d3d2480f928f8e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5204d4b6a99516aeb1a9d70411f8012ae9684c01
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8997497557c1fa26a8bfaa59c4cc2cba6bd7595f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_leftRule_TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..65c0cbe832669cce9f0bb430663167b4df3930e7
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0056d63c98232b9ccfd7714ce4d3d2480f928f8e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5c5a999f886e3b929df623268800d0ba5d4cecdf
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b24124ac7a71778dcb498d96cddd5053281cebeb
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d1e5fce69bfcf958f59275a59bd5f4923f4692a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0056d63c98232b9ccfd7714ce4d3d2480f928f8e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5204d4b6a99516aeb1a9d70411f8012ae9684c01
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8997497557c1fa26a8bfaa59c4cc2cba6bd7595f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateBinaryFeatureRule_rightRule_TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateModel_policies_Policy.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateModel_policies_Policy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dd7b99881d7502fe6231cb1bc4e34bdc75358858
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateModel_policies_Policy.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b2b20e53ddd9d564200d0fc2b2096dd335fcff13
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..223e215586cd1ed586901c4ea03db1a978d27f37
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db04142ade3f9571e6aa5edbad01b6c3f8d7652c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..014b83a419e331739d3782ce08d53514f156eb1a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..223e215586cd1ed586901c4ea03db1a978d27f37
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b954c54bf0553c42c690d7837e7c867ca5b27c9
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7253e5b3dc71da8f13ea54d821f7e856c195e6ad
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2eae982b37cc5fe7206fb7dd897e8c0765f791a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5bfbb66ec7501857a70dad1aac2d1228d352f0ad
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9c351cc5ec8888bd35fad339ae75274e2dae5b03
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db04142ade3f9571e6aa5edbad01b6c3f8d7652c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d01836d01e406e1da79acd6f62538f714b2c396f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1d6c3b9e88557f6417d389e4815257c7f9d83cd1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2cafabf8033a9484fececb2980e58684b0247bcc
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c39f97857ce9ee4dc4f6941a559eb280ecf7dedd
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryConstraintRule_rules_TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e9b333df51f50ac0688cfc7189d65f12add47e06
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16dbb0e6769173330138b3e3c307a700bdcfe83a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..df7afd72faff7722378d2e7e5f8d4e520c1c3e59
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0062ded58add417b0079a3c990c276865c3af733
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ba6791249066d427497277b12ccf5d9ee98b665f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16dbb0e6769173330138b3e3c307a700bdcfe83a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cfb2d6e244d92376e284f7a6a7a37a40999641a4
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e268a9e4429250b626a3bc50a1dc7fb68295c2c2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateNaryFeatureRule_rules_TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3cc3c1b0c50afe436f1e8d10162b308cf68948df
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8f7d7ca62aca12227bedde682ecb5d6169f8212c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..19ae1446ad8b8924f1e2281d5df6c16f1e893a58
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5694faf3635979736128cfe3e55d09ad24d5fbc1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8f7d7ca62aca12227bedde682ecb5d6169f8212c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..535fd3825892ffa2a8b3b75ec542f783f1cbed9c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2f9f86f07131fc54f9f337ffaa75eb1d9220b563
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a488171ffed1c00f3c4a75a256004d5f80d69fa4
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..65e9a41807f7a448b15e2b038cb1af59ac7b000e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b446c03e5730c9b7def6b810e0b2f8368285641c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..19ae1446ad8b8924f1e2281d5df6c16f1e893a58
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3e3b45a82b4059837740bbcd25d1812ddfb32416
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f2eedabaf1519a23bd85f71a48861eeae1fbfec0
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c69e87c3c2ee792a296cc4ba69f6298ebac097d2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fb31e4b052870ef16e83dda4417cdae34e7297b3
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_constraintRule_TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..946cda2c3638b11eec31026e579608db32a7141f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e01fab445e08617c0c0c17bba6c526ebcc08b88a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f0b400c3f014d9ec584b43eb3efd44d037a67d61
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8e8c9603553a09b90f06a2a439dcf2c70b21aa40
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..31a5c1d45512bd8f5f8063908e64ef36bb558e74
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e01fab445e08617c0c0c17bba6c526ebcc08b88a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..09329608c9af820219dabd13b634fd0a4f0d4b08
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e0077899a2871a43facf640cfa9ea76c4221c688
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreatePolicy_featureRule_TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b61a66864fb7c788fbc0b04c86344306e7b0c7fd
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57fa1bbb6eb46818734c374c7dd090aaf9f254c2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..64ea1744a2e94fb96cf6f4090fcba8595a964316
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4937a9c8b59d21e99eb3ddbf17046fdb2c147cca
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57fa1bbb6eb46818734c374c7dd090aaf9f254c2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d56a04bddf1dea2014e520f41042568e2226198e
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..997e434522761bb0741f11f33b621c2db8f51096
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3daea53959d1125f28a3891c89b438a110ada9e3
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..327451149c2180bfb3d349e160dd69593534fd3b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..15849811ea967913ded6aa37f39326c8efbec633
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..64ea1744a2e94fb96cf6f4090fcba8595a964316
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c200e691abd4deb48fdbbe790765c9a97d5e30a1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4455fd045196097cf030c1ad8af358d567d98115
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..aced3dd98f86d8ff23e843b7ad19d3b887fae850
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1ed27624c11be000e64c53c3d5dcc1c0f3dadc5b
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryConstraintRule_rule_TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b806b6dcf6cd017d188e02867f46ffa24d1fc980
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..decea7bad6ac8e698fff47e25f89cf30eb9ce1a2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..01c271236da5e9c429d23a2c3bc5afa4c9b64e13
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..282ee0352e4ab28d4dd669f461de03ef9899952f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cf5dedc743584e361658fe9684dc2ebb31328b03
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..decea7bad6ac8e698fff47e25f89cf30eb9ce1a2
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d6e65ce8a1cded8cc21a23838f2fbf562bfaab5f
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4e8a6db4db81536d51689f0836e5228c3351e153
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/ctool16/CreateUnaryFeatureRule_rule_TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/AndFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ContainsCompartment.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ContainsCompartment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ContainsCompartment.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/FalseFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/ImplicationFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/InType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/InType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/InType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsFeature.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsFeature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsFeature.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsParent.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsParent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsParent.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsSourceType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsSourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsSourceType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..30f0c48da8d4450f7e94a696c4de0a7cc41aa728
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/IsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/LogicalFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Model.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Model.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Model.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/NotFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/OrFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Policy.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Policy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/Policy.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTarget.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTarget.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTarget.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTargetType.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTargetType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/SourceEqualsTargetType.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueConstraintRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueConstraintRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2124f3e3ab2646fd6aec35b94fe003b565ba4c2c
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueConstraintRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueFeatureRule.gif b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueFeatureRule.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.edit/icons/full/obj16/TrueFeatureRule.gif differ
diff --git a/org.framed.iorm.editpolicymodel.edit/plugin.properties b/org.framed.iorm.editpolicymodel.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..cf48b07b84d6b6ab9430296029a09832932bbd91
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/plugin.properties
@@ -0,0 +1,135 @@
+#
+
+pluginName = editpolicymodel Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Model_type = Model
+_UI_Policy_type = Policy
+_UI_ContainsCompartment_type = Contains Compartment
+_UI_IsTarget_type = Is Target
+_UI_IsParent_type = Is Parent
+_UI_FeatureRule_type = Feature Rule
+_UI_IsFeature_type = Is Feature
+_UI_ConstraintRule_type = Constraint Rule
+_UI_IsTargetType_type = Is Target Type
+_UI_UnaryConstraintRule_type = Unary Constraint Rule
+_UI_NotConstraintRule_type = Not Constraint Rule
+_UI_AndConstraintRule_type = And Constraint Rule
+_UI_BinaryConstraintRule_type = Binary Constraint Rule
+_UI_TrueConstraintRule_type = True Constraint Rule
+_UI_FalseConstraintRule_type = False Constraint Rule
+_UI_OrConstraintRule_type = Or Constraint Rule
+_UI_ImplicationConstraintRule_type = Implication Constraint Rule
+_UI_IsSourceType_type = Is Source Type
+_UI_TypeArgumentRule_type = Type Argument Rule
+_UI_NaryConstraintRule_type = Nary Constraint Rule
+_UI_LogicalConstraintRule_type = Logical Constraint Rule
+_UI_TrueFeatureRule_type = True Feature Rule
+_UI_NotFeatureRule_type = Not Feature Rule
+_UI_FalseFeatureRule_type = False Feature Rule
+_UI_NaryFeatureRule_type = Nary Feature Rule
+_UI_BinaryFeatureRule_type = Binary Feature Rule
+_UI_LogicalFeatureRule_type = Logical Feature Rule
+_UI_ImplicationFeatureRule_type = Implication Feature Rule
+_UI_UnaryFeatureRule_type = Unary Feature Rule
+_UI_OrFeatureRule_type = Or Feature Rule
+_UI_AndFeatureRule_type = And Feature Rule
+_UI_SourceEqualsTarget_type = Source Equals Target
+_UI_SourceEqualsTargetType_type = Source Equals Target Type
+_UI_InType_type = In Type
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Model_policies_feature = Policies
+_UI_Policy_override_feature = Override
+_UI_Policy_action_feature = Action
+_UI_Policy_actionType_feature = Action Type
+_UI_Policy_featureRule_feature = Feature Rule
+_UI_Policy_constraintRule_feature = Constraint Rule
+_UI_IsFeature_featureName_feature = Feature Name
+_UI_UnaryConstraintRule_rule_feature = Rule
+_UI_BinaryConstraintRule_leftRule_feature = Left Rule
+_UI_BinaryConstraintRule_rightRule_feature = Right Rule
+_UI_TypeArgumentRule_type_feature = Type
+_UI_NaryConstraintRule_rules_feature = Rules
+_UI_NaryFeatureRule_rules_feature = Rules
+_UI_BinaryFeatureRule_rightRule_feature = Right Rule
+_UI_BinaryFeatureRule_leftRule_feature = Left Rule
+_UI_UnaryFeatureRule_rule_feature = Rule
+_UI_Unknown_feature = Unspecified
+
+_UI_ActionEnum_Create_literal = Create
+_UI_ActionEnum_Add_literal = Add
+_UI_ActionEnum_Start_literal = Start
+_UI_ActionEnum_Reconnect_literal = Reconnect
+_UI_ActionEnum_Execute_literal = Execute
+_UI_ActionEnum_Direct_Edit_literal = Direct_Edit
+_UI_ActionEnum_Create_Property_literal = Create_Property
+_UI_ActionEnum_Create_Attribute_literal = Create_Attribute
+_UI_ActionEnum_Add_Property_literal = Add_Property
+_UI_ActionEnum_Create_Operation_literal = Create_Operation
+_UI_TypeEnum_Acyclic_literal = Acyclic
+_UI_TypeEnum_CompartmentType_literal = CompartmentType
+_UI_TypeEnum_Irreflexive_literal = Irreflexive
+_UI_TypeEnum_RoleProhibition_literal = RoleProhibition
+_UI_TypeEnum_RoleImplication_literal = RoleImplication
+_UI_TypeEnum_RoleGroup_literal = RoleGroup
+_UI_TypeEnum_RoleEquivalence_literal = RoleEquivalence
+_UI_TypeEnum_RoleType_literal = RoleType
+_UI_TypeEnum_RelationshipImplication_literal = RelationshipImplication
+_UI_TypeEnum_RelationshipExclusion_literal = RelationshipExclusion
+_UI_TypeEnum_Relationship_literal = Relationship
+_UI_TypeEnum_Reflexive_literal = Reflexive
+_UI_TypeEnum_Group_literal = Group
+_UI_TypeEnum_Inheritance_literal = Inheritance
+_UI_TypeEnum_Fulfillment_literal = Fulfillment
+_UI_TypeEnum_DataType_literal = DataType
+_UI_TypeEnum_Cyclic_literal = Cyclic
+_UI_TypeEnum_NaturalType_literal = NaturalType
+_UI_FeatureNameEnum_Roles_literal = Roles
+_UI_FeatureNameEnum_Role_Types_literal = Role_Types
+_UI_FeatureNameEnum_Role_Structure_literal = Role_Structure
+_UI_FeatureNameEnum_Role_Properties_literal = Role_Properties
+_UI_FeatureNameEnum_Role_Prohibition_literal = Role_Prohibition
+_UI_FeatureNameEnum_Role_Inheritance_literal = Role_Inheritance
+_UI_FeatureNameEnum_Role_Implication_literal = Role_Implication
+_UI_FeatureNameEnum_Role_Equivalence_literal = Role_Equivalence
+_UI_FeatureNameEnum_Role_Constraints_literal = Role_Constraints
+_UI_FeatureNameEnum_Role_Behavior_literal = Role_Behavior
+_UI_FeatureNameEnum_RML_Feature_Model_literal = RML_Feature_Model
+_UI_FeatureNameEnum_Relationships_literal = Relationships
+_UI_FeatureNameEnum_Relationship_Constraints_literal = Relationship_Constraints
+_UI_FeatureNameEnum_Relationship_Cardinality_literal = Relationship_Cardinality
+_UI_FeatureNameEnum_Players_literal = Players
+_UI_FeatureNameEnum_Playable_by_Defining_Compartment_literal = Playable_by_Defining_Compartment
+_UI_FeatureNameEnum_Playable_literal = Playable
+_UI_FeatureNameEnum_Parthood_Constraints_literal = Parthood_Constraints
+_UI_FeatureNameEnum_On_Relationships_literal = On_Relationships
+_UI_FeatureNameEnum_On_Compartments_literal = On_Compartments
+_UI_FeatureNameEnum_Occurrence_Constraints_literal = Occurrence_Constraints
+_UI_FeatureNameEnum_Naturals_literal = Naturals
+_UI_FeatureNameEnum_Intra_Relationship_Constraints_literal = Intra_Relationship_Constraints
+_UI_FeatureNameEnum_Inter_Relationship_Constraints_literal = Inter_Relationship_Constraints
+_UI_FeatureNameEnum_Group_Constraints_literal = Group_Constraints
+_UI_FeatureNameEnum_Dependent_literal = Dependent
+_UI_FeatureNameEnum_Dates_literal = Dates
+_UI_FeatureNameEnum_Data_Types_literal = Data_Types
+_UI_FeatureNameEnum_Compartments_literal = Compartments
+_UI_FeatureNameEnum_Contains_Compartments_literal = Contains_Compartments
+_UI_FeatureNameEnum_Compartment_Types_literal = Compartment_Types
+_UI_FeatureNameEnum_Compartment_Structure_literal = Compartment_Structure
+_UI_FeatureNameEnum_Compartment_Properties_literal = Compartment_Properties
+_UI_FeatureNameEnum_Compartment_Inheritance_literal = Compartment_Inheritance
+_UI_FeatureNameEnum_Compartment_Behavior_literal = Compartment_Behavior
+_UI_FeatureNameEnum_Participants_literal = Participants
+_UI_FeatureNameEnum_Data_Type_Inheritance_literal = Data_Type_Inheritance
diff --git a/org.framed.iorm.editpolicymodel.edit/plugin.xml b/org.framed.iorm.editpolicymodel.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5b1a97c4080d5567642ddf6c69524e737612cdab
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated editpolicymodel -->
+      <factory
+            uri="http://framed/editpolicymodel"
+            class="editpolicymodel.provider.editpolicymodelItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..44a2f6c34628d9e6d9dc4e0202cc167f65f6c00b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.AndConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndConstraintRuleItemProvider extends NaryConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AndConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns AndConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AndConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AndConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f4b8bc8bdaf489255f30ccb743441698fc9fd864
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/AndFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.AndFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndFeatureRuleItemProvider extends NaryFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AndFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns AndFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AndFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AndFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ea87acdf14ee2be45e4b1c71039c26fcd2e4911
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryConstraintRuleItemProvider.java
@@ -0,0 +1,301 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.BinaryConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.BinaryConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BinaryConstraintRuleItemProvider extends LogicalConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE);
+			childrenFeatures.add(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BinaryConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BinaryConstraintRule.class)) {
+			case editpolicymodelPackage.BINARY_CONSTRAINT_RULE__LEFT_RULE:
+			case editpolicymodelPackage.BINARY_CONSTRAINT_RULE__RIGHT_RULE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createContainsCompartment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsParent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsSourceType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createInType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createContainsCompartment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsParent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsSourceType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createInType()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE ||
+			childFeature == editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4447dc54e3494149815bc832d67bf3e1e056dd4a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/BinaryFeatureRuleItemProvider.java
@@ -0,0 +1,231 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.BinaryFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.BinaryFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BinaryFeatureRuleItemProvider extends LogicalFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE);
+			childrenFeatures.add(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BinaryFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BinaryFeatureRule.class)) {
+			case editpolicymodelPackage.BINARY_FEATURE_RULE__RIGHT_RULE:
+			case editpolicymodelPackage.BINARY_FEATURE_RULE__LEFT_RULE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndFeatureRule()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE ||
+			childFeature == editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8814142783697a826031f403267ef6d8e6f4a3ac
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ConstraintRuleItemProvider.java
@@ -0,0 +1,109 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.ConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConstraintRuleItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return editpolicymodelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ContainsCompartmentItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ContainsCompartmentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9004f7d6bbf3ba4cb49e985ed902d6790c35e448
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ContainsCompartmentItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.ContainsCompartment} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainsCompartmentItemProvider extends ConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ContainsCompartmentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ContainsCompartment.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ContainsCompartment"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ContainsCompartment_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..042c4d1bb20912935746d0b333447fd9f5cc0409
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.FalseConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseConstraintRuleItemProvider extends LogicalConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FalseConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FalseConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FalseConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_FalseConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..43c48ffe3c987a36d203310516e8e92b548eebc0
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FalseFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.FalseFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseFeatureRuleItemProvider extends LogicalFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FalseFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FalseFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FalseFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_FalseFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..800142ff3806cd608699ae229db9a80bf3f59c2b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/FeatureRuleItemProvider.java
@@ -0,0 +1,109 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.FeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FeatureRuleItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_FeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return editpolicymodelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..505e3af06e8895110f4add5abd7a0c2430a65969
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationConstraintRuleItemProvider.java
@@ -0,0 +1,119 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.ImplicationConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImplicationConstraintRuleItemProvider extends BinaryConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImplicationConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ImplicationConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ImplicationConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ImplicationConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__LEFT_RULE ||
+			childFeature == editpolicymodelPackage.Literals.BINARY_CONSTRAINT_RULE__RIGHT_RULE;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..45ebcfc84df89d483d0bd8cc60e5ff5cbc038b77
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ImplicationFeatureRuleItemProvider.java
@@ -0,0 +1,119 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.ImplicationFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImplicationFeatureRuleItemProvider extends BinaryFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImplicationFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ImplicationFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ImplicationFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ImplicationFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__RIGHT_RULE ||
+			childFeature == editpolicymodelPackage.Literals.BINARY_FEATURE_RULE__LEFT_RULE;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/InTypeItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/InTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7135e23b91afdb23c19524ba5683d373198f6269
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/InTypeItemProvider.java
@@ -0,0 +1,101 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.InType;
+import editpolicymodel.TypeEnum;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.InType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InTypeItemProvider extends TypeArgumentRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns InType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((InType)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InType_type") :
+			getString("_UI_InType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsFeatureItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsFeatureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bcdb646c51570887f3f4903cd6d474fd07cd4933
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsFeatureItemProvider.java
@@ -0,0 +1,134 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.FeatureNameEnum;
+import editpolicymodel.IsFeature;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.IsFeature} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsFeatureItemProvider extends FeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsFeatureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addFeatureNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Feature Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFeatureNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IsFeature_featureName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IsFeature_featureName_feature", "_UI_IsFeature_type"),
+				 editpolicymodelPackage.Literals.IS_FEATURE__FEATURE_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns IsFeature.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsFeature"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		FeatureNameEnum labelValue = ((IsFeature)object).getFeatureName();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IsFeature_type") :
+			getString("_UI_IsFeature_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IsFeature.class)) {
+			case editpolicymodelPackage.IS_FEATURE__FEATURE_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsParentItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsParentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b14c7b9056c9544929968dc6ad545c6f0a006e3
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsParentItemProvider.java
@@ -0,0 +1,101 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.IsParent;
+import editpolicymodel.TypeEnum;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.IsParent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsParentItemProvider extends TypeArgumentRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsParentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsParent.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsParent"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((IsParent)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IsParent_type") :
+			getString("_UI_IsParent_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsSourceTypeItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsSourceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7f2bf37d5bdce62e2cffb00f1b975c8c16ebe96d
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsSourceTypeItemProvider.java
@@ -0,0 +1,101 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.IsSourceType;
+import editpolicymodel.TypeEnum;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.IsSourceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsSourceTypeItemProvider extends TypeArgumentRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsSourceTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsSourceType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsSourceType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((IsSourceType)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IsSourceType_type") :
+			getString("_UI_IsSourceType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..be60d8d91d7412353144fc015faeac507bfdab65
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetItemProvider.java
@@ -0,0 +1,101 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.IsTarget;
+import editpolicymodel.TypeEnum;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.IsTarget} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsTargetItemProvider extends TypeArgumentRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsTargetItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsTarget.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsTarget"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((IsTarget)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IsTarget_type") :
+			getString("_UI_IsTarget_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetTypeItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fadaa640dfe54e0a0b4e9e8261a955186541a29f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/IsTargetTypeItemProvider.java
@@ -0,0 +1,101 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.IsTargetType;
+import editpolicymodel.TypeEnum;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.IsTargetType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsTargetTypeItemProvider extends TypeArgumentRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsTargetTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsTargetType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsTargetType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((IsTargetType)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IsTargetType_type") :
+			getString("_UI_IsTargetType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9c535fb8c07059c1d9b4ae2c96d24839c1df69d4
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.LogicalConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LogicalConstraintRuleItemProvider extends ConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LogicalConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LogicalConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LogicalConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5ec07311930facd335b2479691252ca98fa5f0a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/LogicalFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.LogicalFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LogicalFeatureRuleItemProvider extends FeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LogicalFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LogicalFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LogicalFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ModelItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ModelItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..de2cd48f798e2b275c49ecc0d49707bf6bb1805b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/ModelItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.Model;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.Model} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.MODEL__POLICIES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Model.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Model"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Model_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Model.class)) {
+			case editpolicymodelPackage.MODEL__POLICIES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.MODEL__POLICIES,
+				 editpolicymodelFactory.eINSTANCE.createPolicy()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return editpolicymodelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..dabf0d4e90b7db72c407313b6d1408fbc43cf927
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryConstraintRuleItemProvider.java
@@ -0,0 +1,201 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.NaryConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.NaryConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NaryConstraintRuleItemProvider extends LogicalConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NaryConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_NaryConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(NaryConstraintRule.class)) {
+			case editpolicymodelPackage.NARY_CONSTRAINT_RULE__RULES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createContainsCompartment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createIsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createIsParent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createIsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createNotConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createAndConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createTrueConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createFalseConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createOrConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createIsSourceType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_CONSTRAINT_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createInType()));
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f96c5624d515c59dbf3170a1ebbb32b168ba8b1
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NaryFeatureRuleItemProvider.java
@@ -0,0 +1,166 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.NaryFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.NaryFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NaryFeatureRuleItemProvider extends LogicalFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NaryFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_NaryFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(NaryFeatureRule.class)) {
+			case editpolicymodelPackage.NARY_FEATURE_RULE__RULES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createIsFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createTrueFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createNotFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createFalseFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createOrFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.NARY_FEATURE_RULE__RULES,
+				 editpolicymodelFactory.eINSTANCE.createAndFeatureRule()));
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a0536b85959d04e67c35c411f8dcbe43451b764
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.NotConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotConstraintRuleItemProvider extends UnaryConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns NotConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NotConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_NotConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d5f7c9f93172555a3419b3a1d83717fa84f3e08
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/NotFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.NotFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotFeatureRuleItemProvider extends UnaryFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns NotFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NotFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_NotFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2d87b97e854cf44d96cba7b85a3721d93cf374b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.OrConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrConstraintRuleItemProvider extends NaryConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns OrConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OrConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_OrConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ea2e7f6615a80aa5499134cf7b485b01a3b1b93
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/OrFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.OrFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrFeatureRuleItemProvider extends NaryFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns OrFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OrFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_OrFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/PolicyItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/PolicyItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..59dbda72810f828a544328acb011f57b2fb48407
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/PolicyItemProvider.java
@@ -0,0 +1,360 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.Policy;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.Policy} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PolicyItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PolicyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOverridePropertyDescriptor(object);
+			addActionPropertyDescriptor(object);
+			addActionTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Override feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOverridePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Policy_override_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Policy_override_feature", "_UI_Policy_type"),
+				 editpolicymodelPackage.Literals.POLICY__OVERRIDE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Action feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addActionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Policy_action_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Policy_action_feature", "_UI_Policy_type"),
+				 editpolicymodelPackage.Literals.POLICY__ACTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Action Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addActionTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Policy_actionType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Policy_actionType_feature", "_UI_Policy_type"),
+				 editpolicymodelPackage.Literals.POLICY__ACTION_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE);
+			childrenFeatures.add(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Policy.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Policy"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Boolean labelValue = ((Policy)object).getOverride();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Policy_type") :
+			getString("_UI_Policy_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Policy.class)) {
+			case editpolicymodelPackage.POLICY__OVERRIDE:
+			case editpolicymodelPackage.POLICY__ACTION:
+			case editpolicymodelPackage.POLICY__ACTION_TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case editpolicymodelPackage.POLICY__FEATURE_RULE:
+			case editpolicymodelPackage.POLICY__CONSTRAINT_RULE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__FEATURE_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createContainsCompartment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsParent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsSourceType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.POLICY__CONSTRAINT_RULE,
+				 editpolicymodelFactory.eINSTANCE.createInType()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return editpolicymodelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fdd66df7096283b09bf347ed7fd2d15a21ce1e7c
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.SourceEqualsTarget} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SourceEqualsTargetItemProvider extends ConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SourceEqualsTargetItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns SourceEqualsTarget.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SourceEqualsTarget"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_SourceEqualsTarget_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetTypeItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ae53f3f8c7bdcfee5ee2f9642b80ad39078695a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/SourceEqualsTargetTypeItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.SourceEqualsTargetType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SourceEqualsTargetTypeItemProvider extends ConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SourceEqualsTargetTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns SourceEqualsTargetType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SourceEqualsTargetType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_SourceEqualsTargetType_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb1cc6762ed12490205662676cfae30e0fc2862f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueConstraintRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.TrueConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueConstraintRuleItemProvider extends LogicalConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns TrueConstraintRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TrueConstraintRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_TrueConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc6d9a1ad45337ec00985269484f4d6deb907e95
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TrueFeatureRuleItemProvider.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.TrueFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueFeatureRuleItemProvider extends LogicalFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns TrueFeatureRule.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TrueFeatureRule"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_TrueFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TypeArgumentRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TypeArgumentRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..acea57e069ebd83c8fa71245e587c33aef60c1f5
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/TypeArgumentRuleItemProvider.java
@@ -0,0 +1,123 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.TypeArgumentRule;
+import editpolicymodel.TypeEnum;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.TypeArgumentRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypeArgumentRuleItemProvider extends ConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypeArgumentRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TypeArgumentRule_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TypeArgumentRule_type_feature", "_UI_TypeArgumentRule_type"),
+				 editpolicymodelPackage.Literals.TYPE_ARGUMENT_RULE__TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TypeEnum labelValue = ((TypeArgumentRule)object).getType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_TypeArgumentRule_type") :
+			getString("_UI_TypeArgumentRule_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(TypeArgumentRule.class)) {
+			case editpolicymodelPackage.TYPE_ARGUMENT_RULE__TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryConstraintRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryConstraintRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..01341d41235d4135ca48f6a458105d07b9c52266
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryConstraintRuleItemProvider.java
@@ -0,0 +1,201 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.UnaryConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.UnaryConstraintRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnaryConstraintRuleItemProvider extends LogicalConstraintRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryConstraintRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_UnaryConstraintRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(UnaryConstraintRule.class)) {
+			case editpolicymodelPackage.UNARY_CONSTRAINT_RULE__RULE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createContainsCompartment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsParent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsSourceType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_CONSTRAINT_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createInType()));
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryFeatureRuleItemProvider.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryFeatureRuleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5e03ef6c7070468d426f9e8f3c6e7f80a66dac41
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/UnaryFeatureRuleItemProvider.java
@@ -0,0 +1,166 @@
+/**
+ */
+package editpolicymodel.provider;
+
+
+import editpolicymodel.UnaryFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link editpolicymodel.UnaryFeatureRule} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnaryFeatureRuleItemProvider extends LogicalFeatureRuleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryFeatureRuleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_UnaryFeatureRule_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(UnaryFeatureRule.class)) {
+			case editpolicymodelPackage.UNARY_FEATURE_RULE__RULE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createIsFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createTrueFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createNotFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createFalseFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createOrFeatureRule()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(editpolicymodelPackage.Literals.UNARY_FEATURE_RULE__RULE,
+				 editpolicymodelFactory.eINSTANCE.createAndFeatureRule()));
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelEditPlugin.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..d475cd7cce3cf13ff34db9d917ba93f82a68dfb6
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelEditPlugin.java
@@ -0,0 +1,92 @@
+/**
+ */
+package editpolicymodel.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.framed.iorm.model.provider.ORMEditPlugin;
+
+/**
+ * This is the central singleton for the editpolicymodel edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class editpolicymodelEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final editpolicymodelEditPlugin INSTANCE = new editpolicymodelEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     ORMEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelItemProviderAdapterFactory.java b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff0e68b30029f6d4fe571587f788e71c731c721c
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.edit/src/editpolicymodel/provider/editpolicymodelItemProviderAdapterFactory.java
@@ -0,0 +1,775 @@
+/**
+ */
+package editpolicymodel.provider;
+
+import editpolicymodel.util.editpolicymodelAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelItemProviderAdapterFactory extends editpolicymodelAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.Model} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModelItemProvider modelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.Model}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createModelAdapter() {
+		if (modelItemProvider == null) {
+			modelItemProvider = new ModelItemProvider(this);
+		}
+
+		return modelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.Policy} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolicyItemProvider policyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.Policy}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPolicyAdapter() {
+		if (policyItemProvider == null) {
+			policyItemProvider = new PolicyItemProvider(this);
+		}
+
+		return policyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.ContainsCompartment} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ContainsCompartmentItemProvider containsCompartmentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.ContainsCompartment}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createContainsCompartmentAdapter() {
+		if (containsCompartmentItemProvider == null) {
+			containsCompartmentItemProvider = new ContainsCompartmentItemProvider(this);
+		}
+
+		return containsCompartmentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.IsTarget} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IsTargetItemProvider isTargetItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.IsTarget}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsTargetAdapter() {
+		if (isTargetItemProvider == null) {
+			isTargetItemProvider = new IsTargetItemProvider(this);
+		}
+
+		return isTargetItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.IsParent} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IsParentItemProvider isParentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.IsParent}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsParentAdapter() {
+		if (isParentItemProvider == null) {
+			isParentItemProvider = new IsParentItemProvider(this);
+		}
+
+		return isParentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.IsFeature} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IsFeatureItemProvider isFeatureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.IsFeature}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsFeatureAdapter() {
+		if (isFeatureItemProvider == null) {
+			isFeatureItemProvider = new IsFeatureItemProvider(this);
+		}
+
+		return isFeatureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.IsTargetType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IsTargetTypeItemProvider isTargetTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.IsTargetType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsTargetTypeAdapter() {
+		if (isTargetTypeItemProvider == null) {
+			isTargetTypeItemProvider = new IsTargetTypeItemProvider(this);
+		}
+
+		return isTargetTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.NotConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NotConstraintRuleItemProvider notConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.NotConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createNotConstraintRuleAdapter() {
+		if (notConstraintRuleItemProvider == null) {
+			notConstraintRuleItemProvider = new NotConstraintRuleItemProvider(this);
+		}
+
+		return notConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.AndConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AndConstraintRuleItemProvider andConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.AndConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAndConstraintRuleAdapter() {
+		if (andConstraintRuleItemProvider == null) {
+			andConstraintRuleItemProvider = new AndConstraintRuleItemProvider(this);
+		}
+
+		return andConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.TrueConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrueConstraintRuleItemProvider trueConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.TrueConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrueConstraintRuleAdapter() {
+		if (trueConstraintRuleItemProvider == null) {
+			trueConstraintRuleItemProvider = new TrueConstraintRuleItemProvider(this);
+		}
+
+		return trueConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.FalseConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FalseConstraintRuleItemProvider falseConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.FalseConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFalseConstraintRuleAdapter() {
+		if (falseConstraintRuleItemProvider == null) {
+			falseConstraintRuleItemProvider = new FalseConstraintRuleItemProvider(this);
+		}
+
+		return falseConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.OrConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OrConstraintRuleItemProvider orConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.OrConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createOrConstraintRuleAdapter() {
+		if (orConstraintRuleItemProvider == null) {
+			orConstraintRuleItemProvider = new OrConstraintRuleItemProvider(this);
+		}
+
+		return orConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.ImplicationConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImplicationConstraintRuleItemProvider implicationConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.ImplicationConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createImplicationConstraintRuleAdapter() {
+		if (implicationConstraintRuleItemProvider == null) {
+			implicationConstraintRuleItemProvider = new ImplicationConstraintRuleItemProvider(this);
+		}
+
+		return implicationConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.IsSourceType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IsSourceTypeItemProvider isSourceTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.IsSourceType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsSourceTypeAdapter() {
+		if (isSourceTypeItemProvider == null) {
+			isSourceTypeItemProvider = new IsSourceTypeItemProvider(this);
+		}
+
+		return isSourceTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.LogicalConstraintRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LogicalConstraintRuleItemProvider logicalConstraintRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.LogicalConstraintRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLogicalConstraintRuleAdapter() {
+		if (logicalConstraintRuleItemProvider == null) {
+			logicalConstraintRuleItemProvider = new LogicalConstraintRuleItemProvider(this);
+		}
+
+		return logicalConstraintRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.TrueFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrueFeatureRuleItemProvider trueFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.TrueFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrueFeatureRuleAdapter() {
+		if (trueFeatureRuleItemProvider == null) {
+			trueFeatureRuleItemProvider = new TrueFeatureRuleItemProvider(this);
+		}
+
+		return trueFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.NotFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NotFeatureRuleItemProvider notFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.NotFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createNotFeatureRuleAdapter() {
+		if (notFeatureRuleItemProvider == null) {
+			notFeatureRuleItemProvider = new NotFeatureRuleItemProvider(this);
+		}
+
+		return notFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.FalseFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FalseFeatureRuleItemProvider falseFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.FalseFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFalseFeatureRuleAdapter() {
+		if (falseFeatureRuleItemProvider == null) {
+			falseFeatureRuleItemProvider = new FalseFeatureRuleItemProvider(this);
+		}
+
+		return falseFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.LogicalFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LogicalFeatureRuleItemProvider logicalFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.LogicalFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLogicalFeatureRuleAdapter() {
+		if (logicalFeatureRuleItemProvider == null) {
+			logicalFeatureRuleItemProvider = new LogicalFeatureRuleItemProvider(this);
+		}
+
+		return logicalFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.ImplicationFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImplicationFeatureRuleItemProvider implicationFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.ImplicationFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createImplicationFeatureRuleAdapter() {
+		if (implicationFeatureRuleItemProvider == null) {
+			implicationFeatureRuleItemProvider = new ImplicationFeatureRuleItemProvider(this);
+		}
+
+		return implicationFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.OrFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OrFeatureRuleItemProvider orFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.OrFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createOrFeatureRuleAdapter() {
+		if (orFeatureRuleItemProvider == null) {
+			orFeatureRuleItemProvider = new OrFeatureRuleItemProvider(this);
+		}
+
+		return orFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.AndFeatureRule} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AndFeatureRuleItemProvider andFeatureRuleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.AndFeatureRule}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAndFeatureRuleAdapter() {
+		if (andFeatureRuleItemProvider == null) {
+			andFeatureRuleItemProvider = new AndFeatureRuleItemProvider(this);
+		}
+
+		return andFeatureRuleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.SourceEqualsTarget} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SourceEqualsTargetItemProvider sourceEqualsTargetItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.SourceEqualsTarget}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSourceEqualsTargetAdapter() {
+		if (sourceEqualsTargetItemProvider == null) {
+			sourceEqualsTargetItemProvider = new SourceEqualsTargetItemProvider(this);
+		}
+
+		return sourceEqualsTargetItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.SourceEqualsTargetType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SourceEqualsTargetTypeItemProvider sourceEqualsTargetTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.SourceEqualsTargetType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSourceEqualsTargetTypeAdapter() {
+		if (sourceEqualsTargetTypeItemProvider == null) {
+			sourceEqualsTargetTypeItemProvider = new SourceEqualsTargetTypeItemProvider(this);
+		}
+
+		return sourceEqualsTargetTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link editpolicymodel.InType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InTypeItemProvider inTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link editpolicymodel.InType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInTypeAdapter() {
+		if (inTypeItemProvider == null) {
+			inTypeItemProvider = new InTypeItemProvider(this);
+		}
+
+		return inTypeItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (modelItemProvider != null) modelItemProvider.dispose();
+		if (policyItemProvider != null) policyItemProvider.dispose();
+		if (containsCompartmentItemProvider != null) containsCompartmentItemProvider.dispose();
+		if (isTargetItemProvider != null) isTargetItemProvider.dispose();
+		if (isParentItemProvider != null) isParentItemProvider.dispose();
+		if (isFeatureItemProvider != null) isFeatureItemProvider.dispose();
+		if (isTargetTypeItemProvider != null) isTargetTypeItemProvider.dispose();
+		if (notConstraintRuleItemProvider != null) notConstraintRuleItemProvider.dispose();
+		if (andConstraintRuleItemProvider != null) andConstraintRuleItemProvider.dispose();
+		if (trueConstraintRuleItemProvider != null) trueConstraintRuleItemProvider.dispose();
+		if (falseConstraintRuleItemProvider != null) falseConstraintRuleItemProvider.dispose();
+		if (orConstraintRuleItemProvider != null) orConstraintRuleItemProvider.dispose();
+		if (implicationConstraintRuleItemProvider != null) implicationConstraintRuleItemProvider.dispose();
+		if (isSourceTypeItemProvider != null) isSourceTypeItemProvider.dispose();
+		if (logicalConstraintRuleItemProvider != null) logicalConstraintRuleItemProvider.dispose();
+		if (trueFeatureRuleItemProvider != null) trueFeatureRuleItemProvider.dispose();
+		if (notFeatureRuleItemProvider != null) notFeatureRuleItemProvider.dispose();
+		if (falseFeatureRuleItemProvider != null) falseFeatureRuleItemProvider.dispose();
+		if (logicalFeatureRuleItemProvider != null) logicalFeatureRuleItemProvider.dispose();
+		if (implicationFeatureRuleItemProvider != null) implicationFeatureRuleItemProvider.dispose();
+		if (orFeatureRuleItemProvider != null) orFeatureRuleItemProvider.dispose();
+		if (andFeatureRuleItemProvider != null) andFeatureRuleItemProvider.dispose();
+		if (sourceEqualsTargetItemProvider != null) sourceEqualsTargetItemProvider.dispose();
+		if (sourceEqualsTargetTypeItemProvider != null) sourceEqualsTargetTypeItemProvider.dispose();
+		if (inTypeItemProvider != null) inTypeItemProvider.dispose();
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.editor/.classpath b/org.framed.iorm.editpolicymodel.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..22f30643cba38503dfc820a64bc4225fd8c743ba
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.framed.iorm.editpolicymodel.editor/.gitignore b/org.framed.iorm.editpolicymodel.editor/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/org.framed.iorm.editpolicymodel.editor/.project b/org.framed.iorm.editpolicymodel.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..fe67e1e5ca1ee1fe3f517010a3f1364f74486783
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.framed.iorm.editpolicymodel.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.framed.iorm.editpolicymodel.editor/META-INF/MANIFEST.MF b/org.framed.iorm.editpolicymodel.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..165cac853e6f8a182bcf7b93f9462325e1cedb10
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.framed.iorm.editpolicymodel.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: editpolicymodel.presentation.editpolicymodelEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: editpolicymodel.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ org.framed.iorm.editpolicymodel.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.framed.iorm.model.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.framed.iorm.editpolicymodel.editor/build.properties b/org.framed.iorm.editpolicymodel.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..5fb07711cf83925e7397cec129f1646d14ce0686
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/org.framed.iorm.editpolicymodel.editor/icons/full/obj16/editpolicymodelModelFile.gif b/org.framed.iorm.editpolicymodel.editor/icons/full/obj16/editpolicymodelModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..feaa4ac36d0cd135b8efe429e09806171c334d81
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.editor/icons/full/obj16/editpolicymodelModelFile.gif differ
diff --git a/org.framed.iorm.editpolicymodel.editor/icons/full/wizban/Neweditpolicymodel.gif b/org.framed.iorm.editpolicymodel.editor/icons/full/wizban/Neweditpolicymodel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a5c66c3970d4fe8f59e9fedaf35e65c79b79fa54
Binary files /dev/null and b/org.framed.iorm.editpolicymodel.editor/icons/full/wizban/Neweditpolicymodel.gif differ
diff --git a/org.framed.iorm.editpolicymodel.editor/plugin.properties b/org.framed.iorm.editpolicymodel.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0dfcf4160be009765101231f7db7063da1f73193
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/plugin.properties
@@ -0,0 +1,53 @@
+#
+
+pluginName = editpolicymodel Editor
+providerName = www.example.org
+
+_UI_editpolicymodelEditor_menu = &editpolicymodel Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = Example EMF Model Creation Wizards
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_editpolicymodelModelWizard_label = editpolicymodel Model
+_UI_editpolicymodelModelWizard_description = Create a new editpolicymodel model
+
+_UI_editpolicymodelEditor_label = editpolicymodel Model Editor
+
+_UI_editpolicymodelEditorFilenameDefaultBase = My
+_UI_editpolicymodelEditorFilenameExtensions = editpolicymodel
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/org.framed.iorm.editpolicymodel.editor/plugin.xml b/org.framed.iorm.editpolicymodel.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e3bf97b8921a8441b70c86de31407bbc59700bda
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/plugin.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated editpolicymodel -->
+      <category
+            id="org.eclipse.emf.ecore.Wizard.category.ID"
+            name="%_UI_Wizard_category"/>
+      <wizard
+            id="editpolicymodel.presentation.editpolicymodelModelWizardID"
+            name="%_UI_editpolicymodelModelWizard_label"
+            class="editpolicymodel.presentation.editpolicymodelModelWizard"
+            category="org.eclipse.emf.ecore.Wizard.category.ID"
+            icon="icons/full/obj16/editpolicymodelModelFile.gif">
+         <description>%_UI_editpolicymodelModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated editpolicymodel -->
+      <editor
+            id="editpolicymodel.presentation.editpolicymodelEditorID"
+            name="%_UI_editpolicymodelEditor_label"
+            icon="icons/full/obj16/editpolicymodelModelFile.gif"
+            extensions="editpolicymodel"
+            class="editpolicymodel.presentation.editpolicymodelEditor"
+            contributorClass="editpolicymodel.presentation.editpolicymodelActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelActionBarContributor.java b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..174018f569be28fd701bd0e6dc57df3acbdc9f5f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelActionBarContributor.java
@@ -0,0 +1,423 @@
+/**
+ */
+package editpolicymodel.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the editpolicymodel model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					editpolicymodelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("editpolicymodel-settings"));
+		toolBarManager.add(new Separator("editpolicymodel-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelEditor_menu"), "editpolicymodelMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditor.java b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d78297f1b417f66fdf811c79540c8f1af19464f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditor.java
@@ -0,0 +1,1826 @@
+/**
+ */
+package editpolicymodel.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import editpolicymodel.provider.editpolicymodelItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.framed.iorm.featuremodel.provider.FeaturemodelItemProviderAdapterFactory;
+
+import org.framed.iorm.model.provider.OrmItemProviderAdapterFactory;
+
+
+/**
+ * This is an example of a editpolicymodel model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(editpolicymodelEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(editpolicymodelEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == editpolicymodelEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			protected boolean dispatching;
+
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+							dispatchUpdateProblemIndication();
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			protected void dispatchUpdateProblemIndication() {
+				if (updateProblemIndication && !dispatching) {
+					dispatching = true;
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 dispatching = false;
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				dispatchUpdateProblemIndication();
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(editpolicymodelEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == editpolicymodelEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					editpolicymodelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(editpolicymodelEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "org.framed.iorm.editpolicymodel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					editpolicymodelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				try {
+					markerHelper.updateMarkers(diagnostic);
+				}
+				catch (CoreException exception) {
+					editpolicymodelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new editpolicymodelItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new OrmItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FeaturemodelItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		boolean hasErrors = !resource.getErrors().isEmpty();
+		if (hasErrors || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING,
+					 "org.framed.iorm.editpolicymodel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "org.framed.iorm.editpolicymodel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				selectionViewer.setUseHashlookup(true);
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), editpolicymodelEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setUseHashlookup(true);
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					editpolicymodelEditor.this.setSelectionToViewer(selection);
+					editpolicymodelEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					List<Resource> resources = editingDomain.getResourceSet().getResources();
+					for (int i = 0; i < resources.size(); ++i) {
+						Resource resource = resources.get(i);
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			editpolicymodelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return editpolicymodelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return editpolicymodelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditorPlugin.java b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9e077838e9fdf2c7d554e2dcdf3d1b6420e4bff
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelEditorPlugin.java
@@ -0,0 +1,94 @@
+/**
+ */
+package editpolicymodel.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.framed.iorm.model.provider.ORMEditPlugin;
+
+/**
+ * This is the central singleton for the editpolicymodel editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class editpolicymodelEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final editpolicymodelEditorPlugin INSTANCE = new editpolicymodelEditorPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelEditorPlugin() {
+		super
+			(new ResourceLocator [] {
+				ORMEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelModelWizard.java b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..c451d0e7ff0a400b17a74509a429e3a8a7015256
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.editor/src/editpolicymodel/presentation/editpolicymodelModelWizard.java
@@ -0,0 +1,627 @@
+/**
+ */
+package editpolicymodel.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+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.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+import editpolicymodel.provider.editpolicymodelEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected editpolicymodelPackage _editpolicymodelPackage = editpolicymodelPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected editpolicymodelFactory _editpolicymodelFactory = _editpolicymodelPackage.geteditpolicymodelFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected editpolicymodelModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected editpolicymodelModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(editpolicymodelEditorPlugin.INSTANCE.getImage("full/wizban/Neweditpolicymodel")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : _editpolicymodelPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)_editpolicymodelPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = _editpolicymodelFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							editpolicymodelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), editpolicymodelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			editpolicymodelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class editpolicymodelModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public editpolicymodelModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(editpolicymodelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class editpolicymodelModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public editpolicymodelModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return editpolicymodelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				editpolicymodelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new editpolicymodelModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelModelWizard_label"));
+		newFileCreationPage.setDescription(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelModelWizard_description"));
+		newFileCreationPage.setFileName(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new editpolicymodelModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_editpolicymodelModelWizard_label"));
+		initialObjectCreationPage.setDescription(editpolicymodelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/org.framed.iorm.editpolicymodel.tests/.classpath b/org.framed.iorm.editpolicymodel.tests/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..22f30643cba38503dfc820a64bc4225fd8c743ba
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.framed.iorm.editpolicymodel.tests/.gitignore b/org.framed.iorm.editpolicymodel.tests/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/org.framed.iorm.editpolicymodel.tests/.project b/org.framed.iorm.editpolicymodel.tests/.project
new file mode 100644
index 0000000000000000000000000000000000000000..90e3ade064b4fbb4a8ffa5c2ea422c35c4a1254f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.framed.iorm.editpolicymodel.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.framed.iorm.editpolicymodel.tests/META-INF/MANIFEST.MF b/org.framed.iorm.editpolicymodel.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..a0292c30941e7f61810b5f4887a5933a3dff16a5
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.framed.iorm.editpolicymodel.tests;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: editpolicymodel.tests
+Require-Bundle: org.eclipse.core.runtime,
+ org.framed.iorm.editpolicymodel;visibility:=reexport,
+ org.framed.iorm.model;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.junit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.framed.iorm.editpolicymodel.tests/build.properties b/org.framed.iorm.editpolicymodel.tests/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..08af06857c21a3948890d7e06a46e84bdee7668a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/build.properties
@@ -0,0 +1,8 @@
+#
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/org.framed.iorm.editpolicymodel.tests/plugin.properties b/org.framed.iorm.editpolicymodel.tests/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ab1f467ce837121207d33a8aecbd07da91c1cbe9
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = editpolicymodel Tests
+providerName = www.example.org
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d34201917804cd2313b17a697f57c928a0b4169b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.AndConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>And Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndConstraintRuleTest extends NaryConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(AndConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new And Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AndConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this And Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected AndConstraintRule getFixture() {
+		return (AndConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createAndConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //AndConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..60e51d867d8d8024af1652afc4b95321f2cc0d01
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/AndFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.AndFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>And Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndFeatureRuleTest extends NaryFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(AndFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new And Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AndFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this And Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected AndFeatureRule getFixture() {
+		return (AndFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createAndFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //AndFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..28f2e96ea1c72b87710a64091573f5c7e68e808a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryConstraintRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.BinaryConstraintRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Binary Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class BinaryConstraintRuleTest extends LogicalConstraintRuleTest {
+
+	/**
+	 * Constructs a new Binary Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Binary Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected BinaryConstraintRule getFixture() {
+		return (BinaryConstraintRule)fixture;
+	}
+
+} //BinaryConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1cd456cbd77f3ad340ca09a443eea67d7ae21fdf
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/BinaryFeatureRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.BinaryFeatureRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Binary Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class BinaryFeatureRuleTest extends LogicalFeatureRuleTest {
+
+	/**
+	 * Constructs a new Binary Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Binary Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected BinaryFeatureRule getFixture() {
+		return (BinaryFeatureRule)fixture;
+	}
+
+} //BinaryFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e657ffd685beb40973998e8b0c3729c96cad57f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ConstraintRuleTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.ConstraintRule;
+
+import junit.framework.TestCase;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class ConstraintRuleTest extends TestCase {
+
+	/**
+	 * The fixture for this Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstraintRule fixture = null;
+
+	/**
+	 * Constructs a new Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void setFixture(ConstraintRule fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstraintRule getFixture() {
+		return fixture;
+	}
+
+} //ConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ContainsCompartmentTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ContainsCompartmentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d341e570d4591db38405073262194b96b277d847
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ContainsCompartmentTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.ContainsCompartment;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Contains Compartment</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainsCompartmentTest extends ConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ContainsCompartmentTest.class);
+	}
+
+	/**
+	 * Constructs a new Contains Compartment test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ContainsCompartmentTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Contains Compartment test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected ContainsCompartment getFixture() {
+		return (ContainsCompartment)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createContainsCompartment());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //ContainsCompartmentTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b42f5efacecaadb05eb8438293e7cc06eaa7ca1
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.FalseConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>False Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseConstraintRuleTest extends LogicalConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FalseConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new False Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FalseConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this False Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected FalseConstraintRule getFixture() {
+		return (FalseConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createFalseConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //FalseConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..213dbc1ef0d71b004d59bb2004e36a4b28c1fcc6
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FalseFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.FalseFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>False Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseFeatureRuleTest extends LogicalFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FalseFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new False Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FalseFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this False Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected FalseFeatureRule getFixture() {
+		return (FalseFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createFalseFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //FalseFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b631a67b34846af5bc2fca926beafc73c93238d
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/FeatureRuleTest.java
@@ -0,0 +1,55 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.FeatureRule;
+
+import junit.framework.TestCase;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class FeatureRuleTest extends TestCase {
+
+	/**
+	 * The fixture for this Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureRule fixture = null;
+
+	/**
+	 * Constructs a new Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void setFixture(FeatureRule fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureRule getFixture() {
+		return fixture;
+	}
+
+} //FeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2091ad1383158119950756158a44b29eaa26d339
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.ImplicationConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Implication Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImplicationConstraintRuleTest extends BinaryConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ImplicationConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Implication Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImplicationConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Implication Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected ImplicationConstraintRule getFixture() {
+		return (ImplicationConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createImplicationConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //ImplicationConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..37e0bd741ebf403f00b835ec4e686de950234d2b
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ImplicationFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.ImplicationFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Implication Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImplicationFeatureRuleTest extends BinaryFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ImplicationFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Implication Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImplicationFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Implication Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected ImplicationFeatureRule getFixture() {
+		return (ImplicationFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createImplicationFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //ImplicationFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/InTypeTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/InTypeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0d5a86e2d1b7f7bb8a0b515df2637d54197d772
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/InTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.InType;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>In Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InTypeTest extends TypeArgumentRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(InTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new In Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this In Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected InType getFixture() {
+		return (InType)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createInType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //InTypeTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsFeatureTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsFeatureTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9414d2a554e3940e826f6f7a6f7fa386b77b7bdf
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsFeatureTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.IsFeature;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsFeatureTest extends FeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsFeatureTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Feature test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsFeatureTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Feature test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected IsFeature getFixture() {
+		return (IsFeature)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createIsFeature());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //IsFeatureTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsParentTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsParentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8056dd9f8ae6355b6e3906d546f636c717c9431c
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsParentTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.IsParent;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Parent</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsParentTest extends TypeArgumentRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsParentTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Parent test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsParentTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Parent test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected IsParent getFixture() {
+		return (IsParent)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createIsParent());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //IsParentTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsSourceTypeTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsSourceTypeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..af495c95f7dbd7b9ae4c64b3189bc0d4328091d4
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsSourceTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.IsSourceType;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Source Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsSourceTypeTest extends TypeArgumentRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsSourceTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Source Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsSourceTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Source Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected IsSourceType getFixture() {
+		return (IsSourceType)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createIsSourceType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //IsSourceTypeTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..3481de8e862c7b780dba73a4446e4131f513f4bc
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.IsTarget;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Target</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsTargetTest extends TypeArgumentRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsTargetTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Target test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsTargetTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Target test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected IsTarget getFixture() {
+		return (IsTarget)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createIsTarget());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //IsTargetTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTypeTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTypeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..cdafd8fb6bae5911fc56ccc5a07cf00bf44e76e8
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/IsTargetTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.IsTargetType;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Target Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IsTargetTypeTest extends TypeArgumentRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsTargetTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Target Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IsTargetTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Target Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected IsTargetType getFixture() {
+		return (IsTargetType)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createIsTargetType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //IsTargetTypeTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e366784f1ecd739fcee142a8cd95df4bb904f7d1
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.LogicalConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Logical Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LogicalConstraintRuleTest extends ConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LogicalConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Logical Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Logical Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected LogicalConstraintRule getFixture() {
+		return (LogicalConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createLogicalConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //LogicalConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c6f631292b5581d846ab1b800f325851721224c0
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/LogicalFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.LogicalFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Logical Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LogicalFeatureRuleTest extends FeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LogicalFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Logical Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LogicalFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Logical Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected LogicalFeatureRule getFixture() {
+		return (LogicalFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createLogicalFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //LogicalFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ModelTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ModelTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f0687e944253f29a8ee0c09e57fd15f29c8a1df
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/ModelTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.Model;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelTest extends TestCase {
+
+	/**
+	 * The fixture for this Model test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Model fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ModelTest.class);
+	}
+
+	/**
+	 * Constructs a new Model test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModelTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Model test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void setFixture(Model fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Model test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Model getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createModel());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //ModelTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..57be1e156c5c6a2d104888efefcfa305b163adbf
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryConstraintRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.NaryConstraintRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Nary Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class NaryConstraintRuleTest extends LogicalConstraintRuleTest {
+
+	/**
+	 * Constructs a new Nary Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NaryConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Nary Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected NaryConstraintRule getFixture() {
+		return (NaryConstraintRule)fixture;
+	}
+
+} //NaryConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd6e2ec415083b7086cdc670a683f11b38834c62
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NaryFeatureRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.NaryFeatureRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Nary Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class NaryFeatureRuleTest extends LogicalFeatureRuleTest {
+
+	/**
+	 * Constructs a new Nary Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NaryFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Nary Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected NaryFeatureRule getFixture() {
+		return (NaryFeatureRule)fixture;
+	}
+
+} //NaryFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..621096eea1ea7af2137e361f42ba68998d7ec286
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.NotConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Not Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotConstraintRuleTest extends UnaryConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(NotConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Not Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Not Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected NotConstraintRule getFixture() {
+		return (NotConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createNotConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //NotConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..55820e9d37a06344301eb014d8819a1298d19fde
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/NotFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.NotFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Not Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotFeatureRuleTest extends UnaryFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(NotFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Not Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Not Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected NotFeatureRule getFixture() {
+		return (NotFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createNotFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //NotFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..28a8d3d5d71548ff04a70c7c4b6f8e262352c7ad
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.OrConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Or Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrConstraintRuleTest extends NaryConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(OrConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Or Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Or Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected OrConstraintRule getFixture() {
+		return (OrConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createOrConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //OrConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d684232ee29736c8cc010bf6bc982764591ea83f
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/OrFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.OrFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Or Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrFeatureRuleTest extends NaryFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(OrFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new Or Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Or Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected OrFeatureRule getFixture() {
+		return (OrFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createOrFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //OrFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/PolicyTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/PolicyTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c56482822f811fbb2b704a9257828dd2af2fb260
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/PolicyTest.java
@@ -0,0 +1,89 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.Policy;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.framework.TestCase;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Policy</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PolicyTest extends TestCase {
+
+	/**
+	 * The fixture for this Policy test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Policy fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PolicyTest.class);
+	}
+
+	/**
+	 * Constructs a new Policy test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PolicyTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Policy test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void setFixture(Policy fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Policy test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Policy getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createPolicy());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //PolicyTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e4ab72ed9920ad536784faef808cae766fb22f97
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.SourceEqualsTarget;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Source Equals Target</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SourceEqualsTargetTest extends ConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(SourceEqualsTargetTest.class);
+	}
+
+	/**
+	 * Constructs a new Source Equals Target test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SourceEqualsTargetTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Source Equals Target test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected SourceEqualsTarget getFixture() {
+		return (SourceEqualsTarget)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createSourceEqualsTarget());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //SourceEqualsTargetTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTypeTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTypeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d3fbe26d0dbc7af18a1102c5cb43c32235615461
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/SourceEqualsTargetTypeTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.SourceEqualsTargetType;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Source Equals Target Type</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SourceEqualsTargetTypeTest extends ConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(SourceEqualsTargetTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Source Equals Target Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SourceEqualsTargetTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Source Equals Target Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected SourceEqualsTargetType getFixture() {
+		return (SourceEqualsTargetType)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createSourceEqualsTargetType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //SourceEqualsTargetTypeTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f492f7e64ba239771335e872ed13508f3e3de4a
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueConstraintRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.TrueConstraintRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>True Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueConstraintRuleTest extends LogicalConstraintRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(TrueConstraintRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new True Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this True Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected TrueConstraintRule getFixture() {
+		return (TrueConstraintRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createTrueConstraintRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //TrueConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c9ed522bcb209736aa391849170f0ea67eab7968
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TrueFeatureRuleTest.java
@@ -0,0 +1,70 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.TrueFeatureRule;
+import editpolicymodel.editpolicymodelFactory;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>True Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueFeatureRuleTest extends LogicalFeatureRuleTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(TrueFeatureRuleTest.class);
+	}
+
+	/**
+	 * Constructs a new True Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this True Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected TrueFeatureRule getFixture() {
+		return (TrueFeatureRule)fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(editpolicymodelFactory.eINSTANCE.createTrueFeatureRule());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} //TrueFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TypeArgumentRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TypeArgumentRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a98591c1920c1f3afe7898581c451fb3ff7c8a75
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/TypeArgumentRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.TypeArgumentRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type Argument Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class TypeArgumentRuleTest extends ConstraintRuleTest {
+
+	/**
+	 * Constructs a new Type Argument Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypeArgumentRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Type Argument Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected TypeArgumentRule getFixture() {
+		return (TypeArgumentRule)fixture;
+	}
+
+} //TypeArgumentRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryConstraintRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryConstraintRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..5cee383edf2ebc826d79f4415795f2078311cf62
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryConstraintRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.UnaryConstraintRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Unary Constraint Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class UnaryConstraintRuleTest extends LogicalConstraintRuleTest {
+
+	/**
+	 * Constructs a new Unary Constraint Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryConstraintRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Unary Constraint Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected UnaryConstraintRule getFixture() {
+		return (UnaryConstraintRule)fixture;
+	}
+
+} //UnaryConstraintRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryFeatureRuleTest.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryFeatureRuleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b04d6efaf2167e6f83293e06353123a9dfbfadd7
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/UnaryFeatureRuleTest.java
@@ -0,0 +1,36 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.UnaryFeatureRule;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Unary Feature Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public abstract class UnaryFeatureRuleTest extends LogicalFeatureRuleTest {
+
+	/**
+	 * Constructs a new Unary Feature Rule test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryFeatureRuleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Unary Feature Rule test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected UnaryFeatureRule getFixture() {
+		return (UnaryFeatureRule)fixture;
+	}
+
+} //UnaryFeatureRuleTest
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelAllTests.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelAllTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..622aabaae72744fb34c4511e2fb90203f319ef41
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelAllTests.java
@@ -0,0 +1,46 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>editpolicymodel</b></em>' model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelAllTests extends TestSuite {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(suite());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Test suite() {
+		TestSuite suite = new editpolicymodelAllTests("editpolicymodel Tests");
+		return suite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelAllTests(String name) {
+		super(name);
+	}
+
+} //editpolicymodelAllTests
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelExample.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelExample.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d0939604f1cb5a3c2ff68660835b4607880ba29
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelExample.java
@@ -0,0 +1,121 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import editpolicymodel.Model;
+import editpolicymodel.editpolicymodelFactory;
+import editpolicymodel.editpolicymodelPackage;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.Diagnostic;
+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.util.Diagnostician;
+
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * A sample utility for the '<em><b>editpolicymodel</b></em>' package.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelExample {
+	/**
+	 * <!-- begin-user-doc -->
+	 * Load all the argument file paths or URIs as instances of the model.
+	 * <!-- end-user-doc -->
+	 * @param args the file paths or URIs.
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		// Create a resource set to hold the resources.
+		//
+		ResourceSet resourceSet = new ResourceSetImpl();
+		
+		// Register the appropriate resource factory to handle all file extensions.
+		//
+		resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
+			(Resource.Factory.Registry.DEFAULT_EXTENSION, 
+			 new XMIResourceFactoryImpl());
+
+		// Register the package to ensure it is available during loading.
+		//
+		resourceSet.getPackageRegistry().put
+			(editpolicymodelPackage.eNS_URI, 
+			 editpolicymodelPackage.eINSTANCE);
+        
+		// If there are no arguments, emit an appropriate usage message.
+		//
+		if (args.length == 0) {
+			System.out.println("Enter a list of file paths or URIs that have content like this:");
+			try {
+				Resource resource = resourceSet.createResource(URI.createURI("http:///My.editpolicymodel"));
+				Model root = editpolicymodelFactory.eINSTANCE.createModel();
+				resource.getContents().add(root);
+				resource.save(System.out, null);
+			}
+			catch (IOException exception) {
+				exception.printStackTrace();
+			}
+		}
+		else {
+			// Iterate over all the arguments.
+			//
+			for (int i = 0; i < args.length; ++i) {
+				// Construct the URI for the instance file.
+				// The argument is treated as a file path only if it denotes an existing file.
+				// Otherwise, it's directly treated as a URL.
+				//
+				File file = new File(args[i]);
+				URI uri = file.isFile() ? URI.createFileURI(file.getAbsolutePath()): URI.createURI(args[i]);
+
+				try {
+					// Demand load resource for this file.
+					//
+					Resource resource = resourceSet.getResource(uri, true);
+					System.out.println("Loaded " + uri);
+
+					// Validate the contents of the loaded resource.
+					//
+					for (EObject eObject : resource.getContents()) {
+						Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
+						if (diagnostic.getSeverity() != Diagnostic.OK) {
+							printDiagnostic(diagnostic, "");
+						}
+					}
+				}
+				catch (RuntimeException exception) {
+					System.out.println("Problem loading " + uri);
+					exception.printStackTrace();
+				}
+			}
+		}
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * Prints diagnostics with indentation.
+	 * <!-- end-user-doc -->
+	 * @param diagnostic the diagnostic to print.
+	 * @param indent the indentation for printing.
+	 * @generated
+	 */
+	protected static void printDiagnostic(Diagnostic diagnostic, String indent) {
+		System.out.print(indent);
+		System.out.println(diagnostic.getMessage());
+		for (Diagnostic child : diagnostic.getChildren()) {
+			printDiagnostic(child, indent + "  ");
+		}
+	}
+
+} //editpolicymodelExample
diff --git a/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelTests.java b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..97f16005973fc2ac726078fe342f2cfb81c447bf
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel.tests/src/editpolicymodel/tests/editpolicymodelTests.java
@@ -0,0 +1,46 @@
+/**
+ */
+package editpolicymodel.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>editpolicymodel</b></em>' package.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class editpolicymodelTests extends TestSuite {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(suite());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Test suite() {
+		TestSuite suite = new editpolicymodelTests("editpolicymodel Tests");
+		return suite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public editpolicymodelTests(String name) {
+		super(name);
+	}
+
+} //editpolicymodelTests
diff --git a/org.framed.iorm.editpolicymodel/model/editpolicymodel.ecore b/org.framed.iorm.editpolicymodel/model/editpolicymodel.ecore
index 0d77bca0fb0d98d6ae9c4da518be2f45914029c3..d9384a2ebc962a64ab26334272b63e965448c128 100644
--- a/org.framed.iorm.editpolicymodel/model/editpolicymodel.ecore
+++ b/org.framed.iorm.editpolicymodel/model/editpolicymodel.ecore
@@ -149,5 +149,5 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="SourceEqualsTarget" eSuperTypes="#//ConstraintRule"/>
   <eClassifiers xsi:type="ecore:EClass" name="SourceEqualsTargetType" eSuperTypes="#//ConstraintRule"/>
-  <eClassifiers xsi:type="ecore:EClass" name="InCompartment" eSuperTypes="#//ConstraintRule"/>
+  <eClassifiers xsi:type="ecore:EClass" name="InType" eSuperTypes="#//TypeArgumentRule"/>
 </ecore:EPackage>
diff --git a/org.framed.iorm.editpolicymodel/model/representations.aird b/org.framed.iorm.editpolicymodel/model/representations.aird
index c8613686854de17985566ad8cd2e1101fb349ad7..185f396385199a9b8281ab46a3bfdb6398c41927 100644
--- a/org.framed.iorm.editpolicymodel/model/representations.aird
+++ b/org.framed.iorm.editpolicymodel/model/representations.aird
@@ -90,7 +90,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_QL2zUxv9Eeir3aeVscTXqw"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_QL2MRRv9Eeir3aeVscTXqw" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL2MRhv9Eeir3aeVscTXqw" x="1547" y="1116"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL2MRhv9Eeir3aeVscTXqw" x="1464" y="828"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_QL4BdBv9Eeir3aeVscTXqw" type="2003" element="_QLGlYRv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_QL4Bdxv9Eeir3aeVscTXqw" type="5007"/>
@@ -99,7 +99,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_QL4oghv9Eeir3aeVscTXqw"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_QL4BdRv9Eeir3aeVscTXqw" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL4Bdhv9Eeir3aeVscTXqw" x="1176" y="1116"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL4Bdhv9Eeir3aeVscTXqw" x="1106" y="1116"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_QL5PkBv9Eeir3aeVscTXqw" type="2003" element="_QLHzgBv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_QL5Pkxv9Eeir3aeVscTXqw" type="5007"/>
@@ -108,7 +108,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_QL5Plhv9Eeir3aeVscTXqw"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_QL5PkRv9Eeir3aeVscTXqw" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL5Pkhv9Eeir3aeVscTXqw" x="1164" y="961"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL5Pkhv9Eeir3aeVscTXqw" x="1191" y="973"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_QL52oBv9Eeir3aeVscTXqw" type="2003" element="_QLIakBv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_QL52oxv9Eeir3aeVscTXqw" type="5007"/>
@@ -197,7 +197,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_QMBLZhv9Eeir3aeVscTXqw"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_QMBLYRv9Eeir3aeVscTXqw" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QMBLYhv9Eeir3aeVscTXqw" x="989" y="971"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QMBLYhv9Eeir3aeVscTXqw" x="1044" y="973"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_QMBLZxv9Eeir3aeVscTXqw" type="2003" element="_QLTZsBv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_QMBycBv9Eeir3aeVscTXqw" type="5007"/>
@@ -278,7 +278,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_QKVhgh2LEei8arfb2j0BMw"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_QKMXkR2LEei8arfb2j0BMw" fontColor="2697711" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKMXkh2LEei8arfb2j0BMw" x="984" y="1116" width="120" height="100"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QKMXkh2LEei8arfb2j0BMw" x="972" y="1116" width="120" height="100"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_01GZQB2LEei8arfb2j0BMw" type="2003" element="_00vM4B2LEei8arfb2j0BMw">
           <children xmi:type="notation:Node" xmi:id="_01HAUB2LEei8arfb2j0BMw" type="5007"/>
@@ -664,7 +664,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="__A5PUkJgEei5GdIMm-4mwA"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="__AveUUJgEei5GdIMm-4mwA" fontName="Cantarell" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AveUkJgEei5GdIMm-4mwA" x="1404" y="1116" width="120" height="100"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AveUkJgEei5GdIMm-4mwA" x="1236" y="1116" width="120" height="100"/>
         </children>
         <styles xmi:type="notation:DiagramStyle" xmi:id="_PSPqwhv9Eeir3aeVscTXqw"/>
         <edges xmi:type="notation:Edge" xmi:id="_QMJuQBv9Eeir3aeVscTXqw" type="4001" element="_QLkfcBv9Eeir3aeVscTXqw" source="_QLyh4Bv9Eeir3aeVscTXqw" target="_QLzI9Bv9Eeir3aeVscTXqw">
@@ -701,17 +701,17 @@
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_Aa_eUB2MEei8arfb2j0BMw" type="4001" element="_QKGQ8B2LEei8arfb2j0BMw" source="_QKMXkB2LEei8arfb2j0BMw" target="_01GZQB2LEei8arfb2j0BMw">
           <children xmi:type="notation:Node" xmi:id="_Aa_eVB2MEei8arfb2j0BMw" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aa_eVR2MEei8arfb2j0BMw" y="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aa_eVR2MEei8arfb2j0BMw" x="-22" y="-10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_Aa_eVh2MEei8arfb2j0BMw" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aa_eVx2MEei8arfb2j0BMw" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Aa_eVx2MEei8arfb2j0BMw" x="37" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_AbAFYB2MEei8arfb2j0BMw" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AbAFYR2MEei8arfb2j0BMw" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AbAFYR2MEei8arfb2j0BMw" x="1" y="10"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_Aa_eUR2MEei8arfb2j0BMw" routing="Tree"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_Aa_eUh2MEei8arfb2j0BMw" fontColor="2697711" fontName="Cantarell" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Aa_eUx2MEei8arfb2j0BMw" points="[-1, -49, 174, 314]$[-1, -295, 174, 68]$[-174, -295, 1, 68]$[-174, -314, 1, 49]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Aa_eUx2MEei8arfb2j0BMw" points="[0, -49, -155, 264]$[0, -241, -155, 72]$[156, -241, 1, 72]$[156, -264, 1, 49]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AbAFYh2MEei8arfb2j0BMw" id="(0.5,0.5)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fyo4cB2MEei8arfb2j0BMw" id="(0.4934840425531915,0.5)"/>
         </edges>
@@ -1197,17 +1197,17 @@
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_7rTOwC4jEei--d1NiPU4Dw" type="4001" element="_7rCJAC4jEei--d1NiPU4Dw" source="_d-_BgB2pEei8arfb2j0BMw" target="_QMAkVhv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_7rT10C4jEei--d1NiPU4Dw" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rT10S4jEei--d1NiPU4Dw" x="-108" y="-123"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rT10S4jEei--d1NiPU4Dw" x="-107" y="-123"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_7rUc4C4jEei--d1NiPU4Dw" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rUc4S4jEei--d1NiPU4Dw" x="-9" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rUc4S4jEei--d1NiPU4Dw" x="-8" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_7rUc4i4jEei--d1NiPU4Dw" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rUc4y4jEei--d1NiPU4Dw" x="-98" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rUc4y4jEei--d1NiPU4Dw" x="-96" y="10"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_7rTOwS4jEei--d1NiPU4Dw" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_7rTOwi4jEei--d1NiPU4Dw" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7rTOwy4jEei--d1NiPU4Dw" points="[0, 0, -425, 203]$[212, 0, -213, 203]$[212, -120, -213, 83]$[485, -120, 60, 83]$[485, -165, 60, 38]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7rTOwy4jEei--d1NiPU4Dw" points="[0, 0, -425, 203]$[212, 0, -213, 203]$[212, -120, -213, 83]$[483, -120, 58, 83]$[483, -165, 58, 38]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rVD8C4jEei--d1NiPU4Dw" id="(1.0,0.37755102040816324)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rVD8S4jEei--d1NiPU4Dw" id="(0.0,0.6122448979591837)"/>
         </edges>
@@ -1291,22 +1291,6 @@
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s_FNgDE6EeifDcVRz6UV5g" id="(0.6114649681528662,0.0)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s_FNgTE6EeifDcVRz6UV5g" id="(0.75,0.9)"/>
         </edges>
-        <edges xmi:type="notation:Edge" xmi:id="_BYc8kEJhEei5GdIMm-4mwA" type="4001" element="_BXeFIEJhEei5GdIMm-4mwA" source="__AveUEJgEei5GdIMm-4mwA" target="_QMAkVhv9Eeir3aeVscTXqw">
-          <children xmi:type="notation:Node" xmi:id="_BYexwEJhEei5GdIMm-4mwA" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BYexwUJhEei5GdIMm-4mwA" y="-10"/>
-          </children>
-          <children xmi:type="notation:Node" xmi:id="_BYf_4EJhEei5GdIMm-4mwA" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BYf_4UJhEei5GdIMm-4mwA" y="10"/>
-          </children>
-          <children xmi:type="notation:Node" xmi:id="_BYgm8EJhEei5GdIMm-4mwA" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BYgm8UJhEei5GdIMm-4mwA" y="10"/>
-          </children>
-          <styles xmi:type="notation:ConnectorStyle" xmi:id="_BYc8kUJhEei5GdIMm-4mwA" routing="Tree"/>
-          <styles xmi:type="notation:FontStyle" xmi:id="_BYc8kkJhEei5GdIMm-4mwA" fontName="Cantarell" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BYc8k0JhEei5GdIMm-4mwA" points="[0, 0, 203, 382]$[-203, -382, 0, 0]"/>
-          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BYh1EEJhEei5GdIMm-4mwA" id="(0.4745762711864407,0.0)"/>
-          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BYicIEJhEei5GdIMm-4mwA" id="(0.75,0.9)"/>
-        </edges>
         <edges xmi:type="notation:Edge" xmi:id="_iXelkEJlEei5GdIMm-4mwA" type="4001" element="_iWuXoEJlEei5GdIMm-4mwA" source="_QL2MRBv9Eeir3aeVscTXqw" target="_QMAkVhv9Eeir3aeVscTXqw">
           <children xmi:type="notation:Node" xmi:id="_iXfMoEJlEei5GdIMm-4mwA" type="6001">
             <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iXfMoUJlEei5GdIMm-4mwA" y="-10"/>
@@ -1323,6 +1307,22 @@
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iXfMpkJlEei5GdIMm-4mwA" id="(0.27205882352941174,0.0)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iXfMp0JlEei5GdIMm-4mwA" id="(0.75,0.9)"/>
         </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_RhVAoGwOEeiADrDVd9gLEg" type="4001" element="_BXeFIEJhEei5GdIMm-4mwA" source="__AveUEJgEei5GdIMm-4mwA" target="_01GZQB2LEei8arfb2j0BMw">
+          <children xmi:type="notation:Node" xmi:id="_RhkRMGwOEeiADrDVd9gLEg" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RhkRMWwOEeiADrDVd9gLEg" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_RhlfUGwOEeiADrDVd9gLEg" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RhlfUWwOEeiADrDVd9gLEg" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_RhmGYGwOEeiADrDVd9gLEg" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RhmGYWwOEeiADrDVd9gLEg" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_RhVAoWwOEeiADrDVd9gLEg" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_RhVAomwOEeiADrDVd9gLEg" fontName="Cantarell" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RhVAo2wOEeiADrDVd9gLEg" points="[0, 0, 274, 264]$[0, -364, 274, -100]$[-224, -364, 50, -100]$[-224, -313, 50, -49]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RhpwwGwOEeiADrDVd9gLEg" id="(0.4745762711864407,0.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RhpwwWwOEeiADrDVd9gLEg" id="(0.4934840425531915,0.5)"/>
+        </edges>
       </data>
     </ownedAnnotationEntries>
     <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_QK-CgBv9Eeir3aeVscTXqw" name="Model" tooltipText="" outgoingEdges="_QLkfcBv9Eeir3aeVscTXqw" width="12" height="10">
@@ -1526,7 +1526,7 @@
         <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
       </ownedElements>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_QLSLkRv9Eeir3aeVscTXqw" name="ConstraintRule" tooltipText="" incomingEdges="_UpKAwB2MEei8arfb2j0BMw _UtIakBwHEeir3aeVscTXqw _UhwAYC4jEei--d1NiPU4Dw _7rCJAC4jEei--d1NiPU4Dw _8wgjUC4jEei--d1NiPU4Dw _9pxGkC4jEei--d1NiPU4Dw _-S5jIC4jEei--d1NiPU4Dw _M4RVADEtEeiF0ru3Etlc_g _s9vJsDE6EeifDcVRz6UV5g _BXeFIEJhEei5GdIMm-4mwA _iWuXoEJlEei5GdIMm-4mwA" width="12" height="10">
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_QLSLkRv9Eeir3aeVscTXqw" name="ConstraintRule" tooltipText="" incomingEdges="_UpKAwB2MEei8arfb2j0BMw _UtIakBwHEeir3aeVscTXqw _UhwAYC4jEei--d1NiPU4Dw _7rCJAC4jEei--d1NiPU4Dw _8wgjUC4jEei--d1NiPU4Dw _9pxGkC4jEei--d1NiPU4Dw _-S5jIC4jEei--d1NiPU4Dw _M4RVADEtEeiF0ru3Etlc_g _s9vJsDE6EeifDcVRz6UV5g _iWuXoEJlEei5GdIMm-4mwA" width="12" height="10">
       <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//ConstraintRule"/>
       <semanticElements xmi:type="ecore:EClass" href="editpolicymodel.ecore#//ConstraintRule"/>
       <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -1749,7 +1749,7 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_00vM4B2LEei8arfb2j0BMw" name="TypeArgumentRule" tooltipText="" outgoingEdges="_UpKAwB2MEei8arfb2j0BMw" incomingEdges="_QKGQ8B2LEei8arfb2j0BMw _QLu3gxv9Eeir3aeVscTXqw _XfgucBy-EeiJONAgrNPLDA _X73TQBy-EeiJONAgrNPLDA" width="12" height="10">
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_00vM4B2LEei8arfb2j0BMw" name="TypeArgumentRule" tooltipText="" outgoingEdges="_UpKAwB2MEei8arfb2j0BMw" incomingEdges="_QKGQ8B2LEei8arfb2j0BMw _QLu3gxv9Eeir3aeVscTXqw _XfgucBy-EeiJONAgrNPLDA _X73TQBy-EeiJONAgrNPLDA _BXeFIEJhEei5GdIMm-4mwA" width="12" height="10">
       <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//TypeArgumentRule"/>
       <semanticElements xmi:type="ecore:EClass" href="editpolicymodel.ecore#//TypeArgumentRule"/>
       <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -2755,9 +2755,9 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-9CqEEJgEei5GdIMm-4mwA" name="InCompartment" tooltipText="" outgoingEdges="_BXeFIEJhEei5GdIMm-4mwA" width="12" height="10">
-      <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InCompartment"/>
-      <semanticElements xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InCompartment"/>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-9CqEEJgEei5GdIMm-4mwA" name="InType" tooltipText="" outgoingEdges="_BXeFIEJhEei5GdIMm-4mwA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InType"/>
+      <semanticElements xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InType"/>
       <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
       <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
       <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
@@ -2766,9 +2766,9 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
     </ownedDiagramElements>
-    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BXeFIEJhEei5GdIMm-4mwA" sourceNode="_-9CqEEJgEei5GdIMm-4mwA" targetNode="_QLSLkRv9Eeir3aeVscTXqw">
-      <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InCompartment"/>
-      <semanticElements xmi:type="ecore:EGenericType" href="editpolicymodel.ecore#//InCompartment/@eGenericSuperTypes.0"/>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BXeFIEJhEei5GdIMm-4mwA" sourceNode="_-9CqEEJgEei5GdIMm-4mwA" targetNode="_00vM4B2LEei8arfb2j0BMw">
+      <target xmi:type="ecore:EClass" href="editpolicymodel.ecore#//InType"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="editpolicymodel.ecore#//InType/@eGenericSuperTypes.0"/>
       <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BXesMEJhEei5GdIMm-4mwA" targetArrow="InputClosedArrow" routingStyle="tree">
         <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
         <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BXesMUJhEei5GdIMm-4mwA" showIcon="false">
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/InCompartment.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/InCompartment.java
deleted file mode 100644
index 4b0c5a03c925c48d63a099f45e94a6df1f071e4d..0000000000000000000000000000000000000000
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/InCompartment.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- */
-package editpolicymodel;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>In Compartment</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see editpolicymodel.editpolicymodelPackage#getInCompartment()
- * @model
- * @generated
- */
-public interface InCompartment extends ConstraintRule {
-} // InCompartment
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/InType.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/InType.java
new file mode 100644
index 0000000000000000000000000000000000000000..395f3cbfc9fa2c807eb46da5a30d6a238b84eda6
--- /dev/null
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/InType.java
@@ -0,0 +1,17 @@
+/**
+ */
+package editpolicymodel;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>In Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see editpolicymodel.editpolicymodelPackage#getInType()
+ * @model
+ * @generated
+ */
+public interface InType extends TypeArgumentRule {
+} // InType
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelFactory.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelFactory.java
index 218739653973d630ed5de6855779c733ab99007d..9c64e676bb50eb02dd50c204076ca60318dd4d4f 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelFactory.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelFactory.java
@@ -238,13 +238,13 @@ public interface editpolicymodelFactory extends EFactory {
 	SourceEqualsTargetType createSourceEqualsTargetType();
 
 	/**
-	 * Returns a new object of class '<em>In Compartment</em>'.
+	 * Returns a new object of class '<em>In Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>In Compartment</em>'.
+	 * @return a new object of class '<em>In Type</em>'.
 	 * @generated
 	 */
-	InCompartment createInCompartment();
+	InType createInType();
 
 	/**
 	 * Returns the package supported by this factory.
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelPackage.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelPackage.java
index 6088cc755d6bfd16909cbb98822b9ac98b4d8c92..a4faf987ed1d239d7d19f47ae2926730a6e67309 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelPackage.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/editpolicymodelPackage.java
@@ -1252,32 +1252,41 @@ public interface editpolicymodelPackage extends EPackage {
 	int SOURCE_EQUALS_TARGET_TYPE_OPERATION_COUNT = CONSTRAINT_RULE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link editpolicymodel.impl.InCompartmentImpl <em>In Compartment</em>}' class.
+	 * The meta object id for the '{@link editpolicymodel.impl.InTypeImpl <em>In Type</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see editpolicymodel.impl.InCompartmentImpl
-	 * @see editpolicymodel.impl.editpolicymodelPackageImpl#getInCompartment()
+	 * @see editpolicymodel.impl.InTypeImpl
+	 * @see editpolicymodel.impl.editpolicymodelPackageImpl#getInType()
 	 * @generated
 	 */
-	int IN_COMPARTMENT = 33;
+	int IN_TYPE = 33;
 
 	/**
-	 * The number of structural features of the '<em>In Compartment</em>' class.
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IN_TYPE__TYPE = TYPE_ARGUMENT_RULE__TYPE;
+
+	/**
+	 * The number of structural features of the '<em>In Type</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int IN_COMPARTMENT_FEATURE_COUNT = CONSTRAINT_RULE_FEATURE_COUNT + 0;
+	int IN_TYPE_FEATURE_COUNT = TYPE_ARGUMENT_RULE_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of operations of the '<em>In Compartment</em>' class.
+	 * The number of operations of the '<em>In Type</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int IN_COMPARTMENT_OPERATION_COUNT = CONSTRAINT_RULE_OPERATION_COUNT + 0;
+	int IN_TYPE_OPERATION_COUNT = TYPE_ARGUMENT_RULE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link editpolicymodel.ActionEnum <em>Action Enum</em>}' enum.
@@ -1817,14 +1826,14 @@ public interface editpolicymodelPackage extends EPackage {
 	EClass getSourceEqualsTargetType();
 
 	/**
-	 * Returns the meta object for class '{@link editpolicymodel.InCompartment <em>In Compartment</em>}'.
+	 * Returns the meta object for class '{@link editpolicymodel.InType <em>In Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>In Compartment</em>'.
-	 * @see editpolicymodel.InCompartment
+	 * @return the meta object for class '<em>In Type</em>'.
+	 * @see editpolicymodel.InType
 	 * @generated
 	 */
-	EClass getInCompartment();
+	EClass getInType();
 
 	/**
 	 * Returns the meta object for enum '{@link editpolicymodel.ActionEnum <em>Action Enum</em>}'.
@@ -2338,14 +2347,14 @@ public interface editpolicymodelPackage extends EPackage {
 		EClass SOURCE_EQUALS_TARGET_TYPE = eINSTANCE.getSourceEqualsTargetType();
 
 		/**
-		 * The meta object literal for the '{@link editpolicymodel.impl.InCompartmentImpl <em>In Compartment</em>}' class.
+		 * The meta object literal for the '{@link editpolicymodel.impl.InTypeImpl <em>In Type</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see editpolicymodel.impl.InCompartmentImpl
-		 * @see editpolicymodel.impl.editpolicymodelPackageImpl#getInCompartment()
+		 * @see editpolicymodel.impl.InTypeImpl
+		 * @see editpolicymodel.impl.editpolicymodelPackageImpl#getInType()
 		 * @generated
 		 */
-		EClass IN_COMPARTMENT = eINSTANCE.getInCompartment();
+		EClass IN_TYPE = eINSTANCE.getInType();
 
 		/**
 		 * The meta object literal for the '{@link editpolicymodel.ActionEnum <em>Action Enum</em>}' enum.
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InCompartmentImpl.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InTypeImpl.java
similarity index 57%
rename from org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InCompartmentImpl.java
rename to org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InTypeImpl.java
index 02e7c6f0449f90b04c2615e371279e70f2aff393..bc4afb22e0842bfdfa23ff385f8c6bc1af2e8172 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InCompartmentImpl.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/InTypeImpl.java
@@ -2,25 +2,25 @@
  */
 package editpolicymodel.impl;
 
-import editpolicymodel.InCompartment;
+import editpolicymodel.InType;
 import editpolicymodel.editpolicymodelPackage;
 
 import org.eclipse.emf.ecore.EClass;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>In Compartment</b></em>'.
+ * An implementation of the model object '<em><b>In Type</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class InCompartmentImpl extends ConstraintRuleImpl implements InCompartment {
+public class InTypeImpl extends TypeArgumentRuleImpl implements InType {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected InCompartmentImpl() {
+	protected InTypeImpl() {
 		super();
 	}
 
@@ -31,7 +31,7 @@ public class InCompartmentImpl extends ConstraintRuleImpl implements InCompartme
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return editpolicymodelPackage.Literals.IN_COMPARTMENT;
+		return editpolicymodelPackage.Literals.IN_TYPE;
 	}
 
-} //InCompartmentImpl
+} //InTypeImpl
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelFactoryImpl.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelFactoryImpl.java
index c98fc96d67c4fffcc6556004c2e22135016bb8f6..0d3a56cb45642215f1302ab8890213feac0641e1 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelFactoryImpl.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelFactoryImpl.java
@@ -81,7 +81,7 @@ public class editpolicymodelFactoryImpl extends EFactoryImpl implements editpoli
 			case editpolicymodelPackage.AND_FEATURE_RULE: return createAndFeatureRule();
 			case editpolicymodelPackage.SOURCE_EQUALS_TARGET: return createSourceEqualsTarget();
 			case editpolicymodelPackage.SOURCE_EQUALS_TARGET_TYPE: return createSourceEqualsTargetType();
-			case editpolicymodelPackage.IN_COMPARTMENT: return createInCompartment();
+			case editpolicymodelPackage.IN_TYPE: return createInType();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -370,9 +370,9 @@ public class editpolicymodelFactoryImpl extends EFactoryImpl implements editpoli
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public InCompartment createInCompartment() {
-		InCompartmentImpl inCompartment = new InCompartmentImpl();
-		return inCompartment;
+	public InType createInType() {
+		InTypeImpl inType = new InTypeImpl();
+		return inType;
 	}
 
 	/**
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelPackageImpl.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelPackageImpl.java
index a42aedf20452b5625ce019873daccb78c721b792..a1d60d2dae61adaac8e9cb3d6cdc952f1e3cd569 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelPackageImpl.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/impl/editpolicymodelPackageImpl.java
@@ -15,7 +15,7 @@ import editpolicymodel.FeatureNameEnum;
 import editpolicymodel.FeatureRule;
 import editpolicymodel.ImplicationConstraintRule;
 import editpolicymodel.ImplicationFeatureRule;
-import editpolicymodel.InCompartment;
+import editpolicymodel.InType;
 import editpolicymodel.IsFeature;
 import editpolicymodel.IsParent;
 import editpolicymodel.IsSourceType;
@@ -295,7 +295,7 @@ public class editpolicymodelPackageImpl extends EPackageImpl implements editpoli
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass inCompartmentEClass = null;
+	private EClass inTypeEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -828,8 +828,8 @@ public class editpolicymodelPackageImpl extends EPackageImpl implements editpoli
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getInCompartment() {
-		return inCompartmentEClass;
+	public EClass getInType() {
+		return inTypeEClass;
 	}
 
 	/**
@@ -969,7 +969,7 @@ public class editpolicymodelPackageImpl extends EPackageImpl implements editpoli
 
 		sourceEqualsTargetTypeEClass = createEClass(SOURCE_EQUALS_TARGET_TYPE);
 
-		inCompartmentEClass = createEClass(IN_COMPARTMENT);
+		inTypeEClass = createEClass(IN_TYPE);
 
 		// Create enums
 		actionEnumEEnum = createEEnum(ACTION_ENUM);
@@ -1034,7 +1034,7 @@ public class editpolicymodelPackageImpl extends EPackageImpl implements editpoli
 		andFeatureRuleEClass.getESuperTypes().add(this.getNaryFeatureRule());
 		sourceEqualsTargetEClass.getESuperTypes().add(this.getConstraintRule());
 		sourceEqualsTargetTypeEClass.getESuperTypes().add(this.getConstraintRule());
-		inCompartmentEClass.getESuperTypes().add(this.getConstraintRule());
+		inTypeEClass.getESuperTypes().add(this.getTypeArgumentRule());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1119,7 +1119,7 @@ public class editpolicymodelPackageImpl extends EPackageImpl implements editpoli
 
 		initEClass(sourceEqualsTargetTypeEClass, SourceEqualsTargetType.class, "SourceEqualsTargetType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-		initEClass(inCompartmentEClass, InCompartment.class, "InCompartment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(inTypeEClass, InType.class, "InType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		// Initialize enums and add enum literals
 		initEEnum(actionEnumEEnum, ActionEnum.class, "ActionEnum");
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelAdapterFactory.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelAdapterFactory.java
index cdd962e4eb65e446d2b5cd2a49abbf2916c8ef27..551d40412500524a011353860714136fcea096ef 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelAdapterFactory.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelAdapterFactory.java
@@ -200,8 +200,8 @@ public class editpolicymodelAdapterFactory extends AdapterFactoryImpl {
 				return createSourceEqualsTargetTypeAdapter();
 			}
 			@Override
-			public Adapter caseInCompartment(InCompartment object) {
-				return createInCompartmentAdapter();
+			public Adapter caseInType(InType object) {
+				return createInTypeAdapter();
 			}
 			@Override
 			public Adapter defaultCase(EObject object) {
@@ -686,16 +686,16 @@ public class editpolicymodelAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link editpolicymodel.InCompartment <em>In Compartment</em>}'.
+	 * Creates a new adapter for an object of class '{@link editpolicymodel.InType <em>In Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see editpolicymodel.InCompartment
+	 * @see editpolicymodel.InType
 	 * @generated
 	 */
-	public Adapter createInCompartmentAdapter() {
+	public Adapter createInTypeAdapter() {
 		return null;
 	}
 
diff --git a/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelSwitch.java b/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelSwitch.java
index 9372cb6bf731864fdbc799063bcf1de185087aa4..b480b7ff9421009e87cbb17b229db99ea613ce7b 100644
--- a/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelSwitch.java
+++ b/org.framed.iorm.editpolicymodel/src/editpolicymodel/util/editpolicymodelSwitch.java
@@ -323,10 +323,11 @@ public class editpolicymodelSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case editpolicymodelPackage.IN_COMPARTMENT: {
-				InCompartment inCompartment = (InCompartment)theEObject;
-				T result = caseInCompartment(inCompartment);
-				if (result == null) result = caseConstraintRule(inCompartment);
+			case editpolicymodelPackage.IN_TYPE: {
+				InType inType = (InType)theEObject;
+				T result = caseInType(inType);
+				if (result == null) result = caseTypeArgumentRule(inType);
+				if (result == null) result = caseConstraintRule(inType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -830,17 +831,17 @@ public class editpolicymodelSwitch<T> extends Switch<T> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>In Compartment</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>In Type</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>In Compartment</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>In Type</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseInCompartment(InCompartment object) {
+	public T caseInType(InType object) {
 		return null;
 	}
 
diff --git a/org.framed.iorm.ui/core/baseRules.ecl b/org.framed.iorm.ui/core/baseRules.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..1552f9e95b37e749af21dc23a1130db90adb5ba5
--- /dev/null
+++ b/org.framed.iorm.ui/core/baseRules.ecl
@@ -0,0 +1,22 @@
+//https://github.com/leondart/FRaMED/wiki/EditPolicy-Rules
+ 
+//base rules 
+Add RoleType (true) when InCompartment(); 
+Create RoleType (true) when InCompartment(); 
+
+Add NaturalType (true) when true;
+Add Group (true) when true;
+Create NaturalType (true) when true;
+Create Group (true) when true;
+
+Create RelationshipExclusion (true) when true;
+Create RelationshipImplication (true) when true;
+Create Inheritance (true) when true;
+Create Fulfillment (true) when true;
+Create Relationship (true) when true;
+
+//enable all context menues
+Execute CompartmentType (true) when true;
+Execute Relationship (true) when true;
+Execute Fulfillment (true) when true;
+Execute Inheritance (true) when true;
diff --git a/org.framed.iorm.ui/core/baseRules.editpolicy b/org.framed.iorm.ui/core/baseRules.editpolicy
index d1615af47ca77f65f3fe02713fec0b29608c7cfe..c17974c989254a1f0ead9313cd34255d5bc794da 100644
--- a/org.framed.iorm.ui/core/baseRules.editpolicy
+++ b/org.framed.iorm.ui/core/baseRules.editpolicy
@@ -2,11 +2,11 @@
 <editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
   <policies action="Add" actionType="RoleType">
     <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
   </policies>
   <policies actionType="RoleType">
     <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
   </policies>
   <policies action="Add" actionType="NaturalType">
     <featureRule xsi:type="editpolicymodel:TrueFeatureRule"/>
diff --git a/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl b/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..11f2042238d930de3e3aca12f8620ddb82a112b3
--- /dev/null
+++ b/org.framed.iorm.ui/core/fulfillment/Fulfillment.ecl
@@ -0,0 +1,9 @@
+//Fullfillment or Players?? 
+Add Fulfillment (Naturals) when IsSourceType(NaturalType) and IsTargetType(CompartmentType);
+Start Fulfillment (Naturals) when IsSourceType(NaturalType); 
+Add Fulfillment (Roles) when IsSourceType(RoleType) and IsTargetType(CompartmentType);
+Start Fulfillment (Roles) when IsSourceType(RoleType);
+Add Fulfillment (Compartments) when IsSourceType(CompartmentType) and IsTargetType(CompartmentType) and !SourceEqualsTarget();
+Start Fulfillment (Compartments) when IsSourceType(CompartmentType);
+Add Fulfillment (Dates) when IsSourceType(DataType);
+Start Fulfillment (Dates) when IsSourceType(DataType);
\ No newline at end of file
diff --git a/org.framed.iorm.ui/core/fulfillment/FulfillmentPattern.java b/org.framed.iorm.ui/core/fulfillment/FulfillmentPattern.java
index caaf0fbac81ee475a9499568e51bd4e957a0368c..e7d9e250bc5e60907e76d132f2f690e231f83c08 100644
--- a/org.framed.iorm.ui/core/fulfillment/FulfillmentPattern.java
+++ b/org.framed.iorm.ui/core/fulfillment/FulfillmentPattern.java
@@ -119,8 +119,6 @@ public class FulfillmentPattern extends FRaMEDConnectionPattern {
 				editFulfillmentFeature.execute(customContext);
 	}	}
 	
-	// add feature
-	// ~~~~~~~~~~~
 	/**
 	 * calculates if a fulfillment can be added to the pictogram diagram
 	 * <p>
@@ -133,7 +131,7 @@ public class FulfillmentPattern extends FRaMEDConnectionPattern {
 		if (addContext.getNewObject() instanceof Relation) {
 			Relation relation = (Relation) addContext.getNewObject();
 			if (relation.getType() == Type.FULFILLMENT)
-				   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext); //TODO: Add actual Type
+				   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, relation.getType());
 		}
 		return false;
 	}
diff --git a/org.framed.iorm.ui/core/inheritance/InheritancePattern.java b/org.framed.iorm.ui/core/inheritance/InheritancePattern.java
index 75429f1e32727fa4d01416ff4b08074fa736d2d9..5b6109860c2898a71a7fc95d077774b57648bda2 100644
--- a/org.framed.iorm.ui/core/inheritance/InheritancePattern.java
+++ b/org.framed.iorm.ui/core/inheritance/InheritancePattern.java
@@ -119,7 +119,7 @@ public class InheritancePattern extends FRaMEDConnectionPattern {
 		if(addContext.getNewObject() instanceof Relation) {
 		   Relation relation = (Relation) addContext.getNewObject();
 		   if(relation.getType() == Type.INHERITANCE)
-			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext); //Why is the Type not given ,Type.INHERITANCE
+			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, relation.getType());
 		}
 		return false;
 	}
@@ -178,19 +178,15 @@ public class InheritancePattern extends FRaMEDConnectionPattern {
 	    Anchor targetAnchor = createContext.getTargetAnchor();
 	    ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor);
 	    ModelElement target = UIUtil.getModelElementForAnchor(targetAnchor);
-	    //TODO: Check whether both elements have the same Model to Create In
 	    Model sM=getModelToCreateIn(source);
 	    Model tM=getModelToCreateIn(target);
 	    if(source instanceof org.framed.iorm.model.Shape && target instanceof org.framed.iorm.model.Shape) {
 			org.framed.iorm.model.Shape sourceShape = (org.framed.iorm.model.Shape) source;
 			org.framed.iorm.model.Shape targetShape = (org.framed.iorm.model.Shape) target;
-			if(sourceShape != null && targetShape != null) {
-				if(sourceShape.getContainer() == targetShape.getContainer() && //TODO: Fix this Check using sM == tM
-			       !(sourceShape.equals(targetShape))) { //TODO: Move this check to EditPolicy
-			    	if(types.contains(sourceShape.getType())) //TODO: Remove these tests and defer them to the EditPolicyHandler
-			    		if(targetShape.getType() == sourceShape.getType())
-							return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.INHERITANCE);
-		}	} 	}
+			if(sourceShape != null && targetShape != null && sM == tM) {
+			    if(types.contains(sourceShape.getType())) //TODO: Remove these tests and defer them to the EditPolicyHandler
+					return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.INHERITANCE);
+		}	}
 	    return false;
 	}
 	 
diff --git a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..f80f120a4722dcc385e6f44f2bf824fd45b6c0ba
--- /dev/null
+++ b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.ecl
@@ -0,0 +1,8 @@
+//compartmentTypes
+//If Compartment_Types is not set, then only one CompartmentType can be
+//added in the top-level view (This will be named RoleModel).
+Add CompartmentType (!Compartment_Types) when !InCompartment() and !ContainsCompartment();
+Create CompartmentType (!Compartment_Types) when !InCompartment() and !ContainsCompartment();
+Add CompartmentType (Compartment_Types) when !InCompartment();
+Create CompartmentType (Compartment_Types) when !InCompartment();
+ 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
index e0cca489274d707b6752fdbd8d7c7d4cd25ffb8d..a2754200a8eca9b89104e5b82a907ba8bb7ae406 100644
--- a/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
+++ b/org.framed.iorm.ui/modules/compartment/CompartmentTypes.editpolicy
@@ -6,7 +6,7 @@
     </featureRule>
     <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
       <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:InCompartment"/>
+        <rule xsi:type="editpolicymodel:InType"/>
       </rules>
       <rules xsi:type="editpolicymodel:NotConstraintRule">
         <rule xsi:type="editpolicymodel:ContainsCompartment"/>
@@ -19,7 +19,7 @@
     </featureRule>
     <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
       <rules xsi:type="editpolicymodel:NotConstraintRule">
-        <rule xsi:type="editpolicymodel:InCompartment"/>
+        <rule xsi:type="editpolicymodel:InType"/>
       </rules>
       <rules xsi:type="editpolicymodel:NotConstraintRule">
         <rule xsi:type="editpolicymodel:ContainsCompartment"/>
@@ -29,13 +29,13 @@
   <policies action="Add" actionType="CompartmentType">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
     <constraintRule xsi:type="editpolicymodel:NotConstraintRule">
-      <rule xsi:type="editpolicymodel:InCompartment"/>
+      <rule xsi:type="editpolicymodel:InType"/>
     </constraintRule>
   </policies>
   <policies actionType="CompartmentType">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Compartment_Types"/>
     <constraintRule xsi:type="editpolicymodel:NotConstraintRule">
-      <rule xsi:type="editpolicymodel:InCompartment"/>
+      <rule xsi:type="editpolicymodel:InType"/>
     </constraintRule>
   </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.ecl b/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..1c374da4dbfafa8ec611a4acbb305a2d3d114630
--- /dev/null
+++ b/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.ecl
@@ -0,0 +1,3 @@
+//ContainsCompartments
+Add CompartmentType (Contains_Compartments) when InCompartment();
+Create CompartmentType (Contains_Compartments) when InCompartment(); 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.editpolicy b/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.editpolicy
index cf4764fa5bad6b13c7f61b19b0624bec5da91f10..e10e6ed2c37b69579467d84cc93a7b5b90fd695d 100644
--- a/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.editpolicy
+++ b/org.framed.iorm.ui/modules/compartment/containts_compartments/ContainsCompartments.editpolicy
@@ -2,10 +2,10 @@
 <editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
   <policies action="Add" actionType="CompartmentType">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Contains_Compartments"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
   </policies>
   <policies actionType="CompartmentType">
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Contains_Compartments"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
   </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl b/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..35e295cc665591566f96c722aa674fe91080e6d0
--- /dev/null
+++ b/org.framed.iorm.ui/modules/compartment/inheritance/CompartmentInheritance.ecl
@@ -0,0 +1,4 @@
+//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance     
+Start Inheritance (Compartment_Inheritance) when IsSourceType(CompartmentType); 
+Add Inheritance (Compartment_Inheritance) when IsSourceType(CompartmentType) and !SourceEqualsTarget() and SourceEqualsTargetType(); //acyclic
+ 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl b/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..343a77e1d86e3a514025638a163a570f4256cd92
--- /dev/null
+++ b/org.framed.iorm.ui/modules/compartment/playing_own_roles/PlayingOwnRoles.ecl
@@ -0,0 +1,3 @@
+//Playing_own_roles
+Start Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType); //sourceEqualsTarget not available on Start
+Add Fulfillment (Playable_by_Defining_Compartment) when IsSourceType(CompartmentType) and SourceEqualsTarget();
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/compartment/properties/CompartmentTypeAttsAndOps.ecl b/org.framed.iorm.ui/modules/compartment/properties/CompartmentTypeAttsAndOps.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..b223b457ae50c185f1650be21668396cb1333c00
--- /dev/null
+++ b/org.framed.iorm.ui/modules/compartment/properties/CompartmentTypeAttsAndOps.ecl
@@ -0,0 +1,6 @@
+//Compartment Properties
+Create_Property CompartmentType (Compartment_Properties) when true;
+Create_Attribute CompartmentType (Compartment_Properties) when true;
+Create_Operation CompartmentType (Compartment_Behavior) when true;
+Add_Property CompartmentType (true) when true;
+ 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/datatype/DataTypes.ecl b/org.framed.iorm.ui/modules/datatype/DataTypes.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..10794ec2761904af770392c1e42499c952fb0efb
--- /dev/null
+++ b/org.framed.iorm.ui/modules/datatype/DataTypes.ecl
@@ -0,0 +1,3 @@
+//DataTypes
+Add DataType (Data_Types) when true;  
+Create DataType (Data_Types) when true;
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl b/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..625f62ad8ba7beccdc503f22b6cbad5514c534cd
--- /dev/null
+++ b/org.framed.iorm.ui/modules/datatype/inheritance/DataTypeInheritance.ecl
@@ -0,0 +1,3 @@
+//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance
+Start Inheritance (Data_Type_Inheritance) when IsSourceType(DataType);
+Add Inheritance (Data_Type_Inheritance) when IsSourceType(DataType) and !SourceEqualsTarget() and SourceEqualsTargetType(); // check acyclic
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/relationship/Relationship.ecl b/org.framed.iorm.ui/modules/relationship/Relationship.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..7ced21f03b49d4d4e5ec241d7664b383a76d58c3
--- /dev/null
+++ b/org.framed.iorm.ui/modules/relationship/Relationship.ecl
@@ -0,0 +1,6 @@
+//Relationships 
+Start Relationship (Relationships) when true;
+Add Relationship (Relationships) when true;
+ 
+Start Relationship (true) when IsSourceType(RoleType);//For Relationship-Relation Source and Target must be Role-Type	
+Add Relationship (true) when IsTargetType(RoleType) and IsSourceType(RoleType);
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java b/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java
index a64a1483a6a0032c1856ab3e11f64ab6b8bfa9bf..a964fb558790af3df8b208954363e4f3fbac3cbd 100644
--- a/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java
+++ b/org.framed.iorm.ui/modules/relationship/RelationshipPattern.java
@@ -160,9 +160,7 @@ public class RelationshipPattern extends FRaMEDConnectionPattern {
 			DeleteContext deleteContextForInterRelCon = new DeleteContext(connectionToDeleteAlso);
 			deleteConnectionFeature.delete(deleteContextForInterRelCon);
 	}	}
-	
-	//add feature
-	//~~~~~~~~~~~
+
 	/**
 	 * calculates if a relationship can be added to the pictogram diagram
 	 * <p>
@@ -174,7 +172,7 @@ public class RelationshipPattern extends FRaMEDConnectionPattern {
 		if(addContext.getNewObject() instanceof Relation) {
 		   Relation relation = (Relation) addContext.getNewObject();
 		   if(relation.getType() == Type.RELATIONSHIP) {
-			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext);
+			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, relation.getType());
 		}	}
 		return false;
 	}
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
index b286e42d23f4be0c35474d33d424007300c52073..ce8cc44ddb791f50d01080e50f3168c62b8fef53 100644
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/AbstractInterRelationshipConstraintPattern.java
@@ -77,8 +77,9 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 		Anchor newAnchor = context.getNewAnchor();
 		org.framed.iorm.model.ModelElement newRelation = UIUtil.getModelElementForAnchor(newAnchor);
 		if(newRelation != null) 
-			return (newRelation.getType() == Type.RELATIONSHIP);
-		return false; //TODO: Call EditPolicyHandler
+			//return (newRelation.getType() == Type.RELATIONSHIP);
+			return EditPolicyService.getHandler(this.getDiagram()).canReconnect(context, newRelation.getType());
+		return false;
 	}
 	
 	/**
@@ -110,7 +111,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 		if(addContext.getNewObject() instanceof Relation) {
 			Relation relation = (Relation) addContext.getNewObject();
 			if(relation.getType() == type) {
-				return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext); //Type use actual Type
+				return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type);
 			}   
 		}
 		return false;
@@ -163,12 +164,10 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 	    org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor);
 	    org.framed.iorm.model.ModelElement targetConnection = UIUtil.getModelElementForAnchor(targetAnchor);
 	    if(sourceConnection != null && targetConnection != null) {
-	    	if(sourceConnection.getContainer() == targetConnection.getContainer() &&
-	    	   !(sourceConnection.equals(targetConnection))) {
-	    		if(sourceConnection.getType() == Type.RELATIONSHIP)
-	    			if(targetConnection.getType() == sourceConnection.getType())
-						   return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, Type.RELATIONSHIP); //Use actual Type to check
-		}	}
+	    	if(sourceConnection.getContainer() == targetConnection.getContainer()) {
+				return EditPolicyService.getHandler(this.getDiagram()).canCreate(createContext, sourceConnection.getType() );
+	    	}	
+	    }
 	    return false;
 	}
 		
@@ -186,7 +185,7 @@ public abstract class AbstractInterRelationshipConstraintPattern extends FRaMEDC
 		org.framed.iorm.model.ModelElement sourceConnection = UIUtil.getModelElementForAnchor(sourceAnchor);
 		if(sourceConnection != null){	
 			if(sourceConnection.getType() == Type.RELATIONSHIP)
-				return true; //TODO: Call EditPolicyHandler
+				return EditPolicyService.getHandler(this.getDiagram()).canStart(createContext, sourceConnection.getType() );
 		}	
 		return false;
 	}
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..e846307e8b64362f01457d81c6a15144bf3298d2
--- /dev/null
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.ecl
@@ -0,0 +1,15 @@
+//InterRelationship 
+Add RelationshipExclusion (Inter_Relationship_Constraints) when true;
+Start RelationshipExclusion (Inter_Relationship_Constraints) when true;
+Add RelationshipImplication (Inter_Relationship_Constraints) when true;
+Start RelationshipImplication (Inter_Relationship_Constraints) when true;
+
+ 
+//IntraRelationshipConstraint
+/*
+ * Irreflexive,  Acyclic, cyclic, ...
+ */
+Add Irreflexive (Intra_Relationship_Constraints) when true;
+Start Irreflexive (Intra_Relationship_Constraints) when true;
+Add Irreflexive (Intra_Relationship_Constraints) when true;
+Start Irreflexive (Intra_Relationship_Constraints) when true;
diff --git a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
index 11bccd06e640c600bf61c753428ab2595e14ce3f..e1ca26c4231a435c667edae3fe0ce5a1a6995900 100644
--- a/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
+++ b/org.framed.iorm.ui/modules/relationship/inter_relationship_constraints/InterRelationship.editpolicy
@@ -16,4 +16,20 @@
     <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Inter_Relationship_Constraints"/>
     <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
   </policies>
+  <policies action="Add" actionType="Irreflexive">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
+  <policies action="Start" actionType="Irreflexive">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
+  <policies action="Add" actionType="Irreflexive">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
+  <policies action="Start" actionType="Irreflexive">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Intra_Relationship_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:TrueConstraintRule"/>
+  </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
index 237acf869dd87ac6a9d83f47650a864e7974a9e4..b6b3be648c6798989d20f6ddb9142b70b300a0d0 100644
--- a/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
+++ b/org.framed.iorm.ui/modules/relationship/intra_relationship_constraints/AbstractIntraRelationshipConstraintPattern.java
@@ -120,7 +120,7 @@ public abstract class AbstractIntraRelationshipConstraintPattern extends FRaMEDS
 		if(addContext.getNewObject() instanceof Relation) {
 		   Relation relation = (Relation) addContext.getNewObject();
 		   if(relation.getType() == type) {
-			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext);
+			   return EditPolicyService.getHandler(this.getDiagram()).canAdd(addContext, type);
 		}	}
 		return false;
 	}
diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..68cdb6f914514a3e9c97bcce731018a21430378a
--- /dev/null
+++ b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.ecl
@@ -0,0 +1,3 @@
+//groupConstraints/RoleGroup 
+Add RoleGroup (Group_Constraints) when InCompartment();  
+Create RoleGroup (Group_Constraints) when InCompartment();
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.editpolicy b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.editpolicy
new file mode 100644
index 0000000000000000000000000000000000000000..539cf64ee75b6dcefcbc98d4d33c8152a4132cbd
--- /dev/null
+++ b/org.framed.iorm.ui/modules/roletype/group_constraints/RoleGroup.editpolicy
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ASCII"?>
+<editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
+  <policies action="Add" actionType="RoleGroup">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Group_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
+  </policies>
+  <policies actionType="RoleGroup">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Group_Constraints"/>
+    <constraintRule xsi:type="editpolicymodel:InType"/>
+  </policies>
+</editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl b/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..5ad798c7088b3cdf250d75e572fb8d63b00e7b65
--- /dev/null
+++ b/org.framed.iorm.ui/modules/roletype/inheritance/RoleInheritance.ecl
@@ -0,0 +1,3 @@
+//Inheritance or Role_Inheritance/Data_Type_Inheritance/Compartment_Inheritance 
+Start Inheritance (Role_Inheritance) when IsSourceType(RoleType); 
+Add Inheritance (Role_Inheritance) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType();  //TODO, check acyclic 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/properties/RoleTypeAttsAndOps.ecl b/org.framed.iorm.ui/modules/roletype/properties/RoleTypeAttsAndOps.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..68c04876c869b3d4410740eb209cc8d8d36c47b4
--- /dev/null
+++ b/org.framed.iorm.ui/modules/roletype/properties/RoleTypeAttsAndOps.ecl
@@ -0,0 +1,5 @@
+//Role Structure 
+Create_Property RoleType (Role_Properties) when true;
+Create_Attribute RoleType (Role_Properties) when true;
+Create_Operation RoleType (Role_Behavior) when true;
+Add_Property RoleType (true) when true;
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl b/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl
new file mode 100644
index 0000000000000000000000000000000000000000..26b82a358e88fe806c3c28465ad4067f7d7d7dab
--- /dev/null
+++ b/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.ecl
@@ -0,0 +1,9 @@
+//RoleConstraints 
+Start RoleImplication (Role_Implication) when IsSourceType(RoleType); 
+Add RoleImplication (Role_Implication) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
+ 
+Start RoleEquivalence (Role_Equivalence) when IsSourceType(RoleType); 
+Add RoleEquivalence (Role_Equivalence) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
+
+Start RoleProhibition (Role_Prohibition) when IsSourceType(RoleType); 
+Add RoleProhibition (Role_Prohibition) when IsSourceType(RoleType) and !SourceEqualsTarget() and SourceEqualsTargetType(); 
\ No newline at end of file
diff --git a/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.editpolicy b/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.editpolicy
index 4c7187c49f5a6367bb0e22fea5da11f16292c0b6..f1fe0a70f79a5d60058d9cd735ac68a5c6dac0d0 100644
--- a/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.editpolicy
+++ b/org.framed.iorm.ui/modules/roletype/role_constraints/RoleConstraints.editpolicy
@@ -1,11 +1,51 @@
 <?xml version="1.0" encoding="ASCII"?>
 <editpolicymodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:editpolicymodel="http://framed/editpolicymodel">
-  <policies action="Add" actionType="RoleGroup">
-    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Group_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+  <policies action="Start" actionType="RoleImplication">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Implication"/>
+    <constraintRule xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
   </policies>
-  <policies actionType="RoleGroup">
-    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Group_Constraints"/>
-    <constraintRule xsi:type="editpolicymodel:InCompartment"/>
+  <policies action="Add" actionType="RoleImplication">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Implication"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
+        <rules xsi:type="editpolicymodel:NotConstraintRule">
+          <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+        </rules>
+      </rules>
+      <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+    </constraintRule>
+  </policies>
+  <policies action="Start" actionType="RoleEquivalence">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Equivalence"/>
+    <constraintRule xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
+  </policies>
+  <policies action="Add" actionType="RoleEquivalence">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Equivalence"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
+        <rules xsi:type="editpolicymodel:NotConstraintRule">
+          <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+        </rules>
+      </rules>
+      <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+    </constraintRule>
+  </policies>
+  <policies action="Start" actionType="RoleProhibition">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Prohibition"/>
+    <constraintRule xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
+  </policies>
+  <policies action="Add" actionType="RoleProhibition">
+    <featureRule xsi:type="editpolicymodel:IsFeature" featureName="Role_Prohibition"/>
+    <constraintRule xsi:type="editpolicymodel:AndConstraintRule">
+      <rules xsi:type="editpolicymodel:AndConstraintRule">
+        <rules xsi:type="editpolicymodel:IsSourceType" type="RoleType"/>
+        <rules xsi:type="editpolicymodel:NotConstraintRule">
+          <rule xsi:type="editpolicymodel:SourceEqualsTarget"/>
+        </rules>
+      </rules>
+      <rules xsi:type="editpolicymodel:SourceEqualsTargetType"/>
+    </constraintRule>
   </policies>
 </editpolicymodel:Model>
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
index 2e852cf148101478167f97870c0db518051377fe..6735388d7ae2eed975a08b3a88d4ddeb02b94e28 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/ConstraintRuleVisitor.java
@@ -15,13 +15,14 @@ import org.eclipse.graphiti.mm.pictograms.Shape;
 import org.framed.iorm.model.ModelElement;
 import org.framed.iorm.model.Type;
 import org.framed.iorm.ui.UIUtil;
+import org.framed.iorm.ui.exceptions.InvalidTypeOfEditorInputException;
 import org.framed.iorm.ui.exceptions.NoDiagramFoundException;
 
 import editpolicymodel.AndConstraintRule;
 import editpolicymodel.ConstraintRule;
 import editpolicymodel.ContainsCompartment;
 import editpolicymodel.FalseConstraintRule;
-import editpolicymodel.InCompartment;
+import editpolicymodel.InType;
 import editpolicymodel.IsSourceType;
 import editpolicymodel.IsTargetType;
 import editpolicymodel.NotConstraintRule;
@@ -79,8 +80,8 @@ public class ConstraintRuleVisitor {
 	 * @return Boolean
 	 */
 	public boolean checkRule(ConstraintRule rule) {
-		if (rule instanceof InCompartment) {
-			return isInCompartmentRuleVisitor((InCompartment) rule);
+		if (rule instanceof InType) {
+			return isInTypeRuleVisitor((InType) rule);
 		}
 
 		if (rule instanceof AndConstraintRule)
@@ -124,7 +125,7 @@ public class ConstraintRuleVisitor {
 		return true;
 	}
 
-	private boolean isInCompartmentRuleVisitor(InCompartment rule) {
+	private boolean isInTypeRuleVisitor(InType rule) {
 		ContainerShape container = null;
 		if (this.context instanceof AddContext) {
 			container = ((AddContext) this.context).getTargetContainer();
@@ -134,10 +135,19 @@ public class ConstraintRuleVisitor {
 		if (container == null)
 			return false;
 		// travers Containers to find the compartment type.
-		Diagram compartmentDiagram = findContainerDiagramOfType(container, Type.COMPARTMENT_TYPE);
+		Diagram compartmentDiagram = findContainerDiagramOfType(container, this.getTypeByLiteral(rule.getType().getLiteral()));
 		return compartmentDiagram != null;
 	}
 
+	private Type getTypeByLiteral(String typeString) {
+		for (Type type : Type.VALUES ) {
+			if(type.getLiteral().equals(typeString)) {
+				return type;
+			}
+		}
+		return null;
+	}
+	
 	/**
 	 * Returns the grouping reference (diagram kind) of the given container type, if
 	 * it exists. Note: this method is cached for better performance.
@@ -179,8 +189,7 @@ public class ConstraintRuleVisitor {
 			return null;
 		if (sourceShape instanceof Diagram)
 			return (Diagram) sourceShape;
-		throw new IllegalStateException(
-				"Invariant violated! findDiagramOfType found a sourceShape that was not a Diagram.");
+		throw new IllegalStateException("Invariant violated! findDiagramOfType found a sourceShape that was not a Diagram.");
 	}
 
 	private boolean andRuleVisitor(AndConstraintRule rule) {
@@ -212,22 +221,21 @@ public class ConstraintRuleVisitor {
 	}
 
 	private boolean containsCompartmentVisitor(ContainsCompartment rule) {
-		System.out.println("containsCompartmentVisitor: TODO: " + this.diagram.getChildren().toString());
-		if(this.context instanceof CreateContext) {
-			CreateContext ctx = (CreateContext)this.context;
-			System.out.println(ctx.getTargetContainer().eContents().toString());
-			for(Shape action : ctx.getTargetContainer().getChildren()) {
-				System.out.println(action.toString());
-				System.out.println(action.eResource());
-				System.out.println(action.getClass());
-
-			}
+		ContainerShape container = null;
+		if (this.context instanceof AddContext) {
+			container = ((AddContext) this.context).getTargetContainer();
+		} else if (this.context instanceof CreateContext) {
+			container = ((CreateContext) this.context).getTargetContainer();
 		}
-		return false;
+		if (container == null)
+			return false;
+		// travers Containers to find the compartment type.
+		Diagram compartmentDiagram = findContainerDiagramOfType(container, Type.COMPARTMENT_TYPE);
+		System.out.println("containsCompartmentVisitor: TODO: " + compartmentDiagram != null);
+		return compartmentDiagram != null;
 	}
 
 	private boolean sourceEqualsTargetVisitor(SourceEqualsTarget rule) {
-		// System.out.println("class is: " + this.context.getClass());
 		Anchor sourceAnchor = this.getSourceAnchorFromContext(this.context);
 		ModelElement source = UIUtil.getModelElementForAnchor(sourceAnchor);
 
diff --git a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
index 96992e8d548e3e5532ff83e9c4092d97704dec69..1872daee46da8ac91cf34c2ccb1f0f79efe5c11f 100644
--- a/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
+++ b/org.framed.iorm.ui/src/org/framed/iorm/ui/editPolicy/EditPolicyHandler.java
@@ -63,8 +63,6 @@ public class EditPolicyHandler {
 	 * @return
 	 */
 	private List<ConstraintRule> getConstraints(ActionEnum action, Type type) {
-		System.out.println("Action: " + action.toString() + ", Type: " + type.toString());
-
 		List<ConstraintRule> rules = new LinkedList<>();
 		
 		for(Policy policy: this.activatedPolicies) {
@@ -118,15 +116,7 @@ public class EditPolicyHandler {
 		}
 		return false;
 	}
-	
-	public boolean canAdd(IAddContext context) {
-		//new Object is either relation or shape
-		//TODO: if there are both options, then account for both or remove this method and use the concrete Type
-		Relation relation = (Relation) context.getNewObject();
-		Type type = relation.getType();
-		return this.canAdd(context, type);
-	}
-	
+
 	public boolean canAdd(IAddContext context, Type type) {
 		List<ConstraintRule> constraints = this.getConstraints(ActionEnum.ADD, type);
 		return this.checkConstraints(constraints, context, type);