Merge branch 'develop'
diff --git a/org.eclipse.rmf.ext.prostep/model/prostep.genmodel b/org.eclipse.rmf.ext.prostep/model/prostep.genmodel
index d6c04c7..6cb9bc7 100644
--- a/org.eclipse.rmf.ext.prostep/model/prostep.genmodel
+++ b/org.eclipse.rmf.ext.prostep/model/prostep.genmodel
@@ -6,8 +6,8 @@
     testsDirectory="" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
     copyrightFields="false" language="" operationReflection="true" importOrganizing="true">
   <foreignModel>prostep.ecore</foreignModel>
-  <genPackages prefix="Prostep" basePackage="org.eclipse.rmf.ext" resource="XML" disposableProviderFactory="true"
-      ecorePackage="prostep.ecore#/">
+  <genPackages prefix="Prostep" basePackage="org.eclipse.rmf.ext" disposableProviderFactory="true"
+      fileExtensions="" ecorePackage="prostep.ecore#/">
     <genClasses ecoreClass="prostep.ecore#//ExchangeConversation">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute prostep.ecore#//ExchangeConversation/identifier"/>
     </genClasses>
diff --git a/org.eclipse.rmf.ext.prostep/plugin.xml b/org.eclipse.rmf.ext.prostep/plugin.xml
index b064b2e..0050c96 100644
--- a/org.eclipse.rmf.ext.prostep/plugin.xml
+++ b/org.eclipse.rmf.ext.prostep/plugin.xml
@@ -23,11 +23,4 @@
             genModel="model/prostep.genmodel"/>
    </extension>
 
-   <extension point="org.eclipse.emf.ecore.extension_parser">
-      <!-- @generated prostep -->
-      <parser
-            type="prostep"
-            class="org.eclipse.rmf.ext.prostep.util.ProstepResourceFactoryImpl"/>
-   </extension>
-
 </plugin>
diff --git a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceFactoryImpl.java b/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceFactoryImpl.java
deleted file mode 100644
index 1c03a0a..0000000
--- a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceFactoryImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (c) 2014 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.ext.prostep.util;
-
-import org.eclipse.emf.common.util.URI;
-
-import org.eclipse.emf.ecore.resource.Resource;
-
-import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
-
-import org.eclipse.emf.ecore.xmi.XMLResource;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Resource Factory</b> associated with the package.
- * <!-- end-user-doc -->
- * @see org.eclipse.rmf.ext.prostep.util.ProstepResourceImpl
- * @generated
- */
-public class ProstepResourceFactoryImpl extends ResourceFactoryImpl {
-	/**
-	 * Creates an instance of the resource factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ProstepResourceFactoryImpl() {
-		super();
-	}
-
-	/**
-	 * Creates an instance of the resource.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Resource createResource(URI uri) {
-		XMLResource result = new ProstepResourceImpl(uri);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
-		return result;
-	}
-
-} //ProstepResourceFactoryImpl
diff --git a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceImpl.java b/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceImpl.java
deleted file mode 100644
index 9eee499..0000000
--- a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepResourceImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Copyright (c) 2014 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.ext.prostep.util;
-
-import org.eclipse.emf.common.util.URI;
-
-import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Resource </b> associated with the package.
- * <!-- end-user-doc -->
- * @see org.eclipse.rmf.ext.prostep.util.ProstepResourceFactoryImpl
- * @generated
- */
-public class ProstepResourceImpl extends XMLResourceImpl {
-	/**
-	 * Creates an instance of the resource.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param uri the URI of the new resource.
-	 * @generated
-	 */
-	public ProstepResourceImpl(URI uri) {
-		super(uri);
-	}
-
-} //ProstepResourceImpl
diff --git a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepXMLProcessor.java b/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepXMLProcessor.java
deleted file mode 100644
index e432912..0000000
--- a/org.eclipse.rmf.ext.prostep/src/org/eclipse/rmf/ext/prostep/util/ProstepXMLProcessor.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright (c) 2014 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.ext.prostep.util;
-
-import java.util.Map;
-
-import org.eclipse.emf.ecore.EPackage;
-
-import org.eclipse.emf.ecore.resource.Resource;
-
-import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
-
-import org.eclipse.rmf.ext.prostep.ProstepPackage;
-
-/**
- * This class contains helper methods to serialize and deserialize XML documents
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class ProstepXMLProcessor extends XMLProcessor {
-
-	/**
-	 * Public constructor to instantiate the helper.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ProstepXMLProcessor() {
-		super((EPackage.Registry.INSTANCE));
-		ProstepPackage.eINSTANCE.eClass();
-	}
-	
-	/**
-	 * Register for "*" and "xml" file extensions the ProstepResourceFactoryImpl factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected Map<String, Resource.Factory> getRegistrations() {
-		if (registrations == null) {
-			super.getRegistrations();
-			registrations.put(XML_EXTENSION, new ProstepResourceFactoryImpl());
-			registrations.put(STAR_EXTENSION, new ProstepResourceFactoryImpl());
-		}
-		return registrations;
-	}
-
-} //ProstepXMLProcessor
diff --git a/org.eclipse.rmf.releng.product/rmf-pror-standalone.product b/org.eclipse.rmf.releng.product/rmf-pror-standalone.product
index 9e5e776..7c0c172 100644
--- a/org.eclipse.rmf.releng.product/rmf-pror-standalone.product
+++ b/org.eclipse.rmf.releng.product/rmf-pror-standalone.product
@@ -23,7 +23,11 @@
    </configIni>
 
    <launcherArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+      <vmArgs>-Dosgi.framework.extensions=org.eclipse.fx.osgi
+-Defxclipse.osgi.hook.debug=true
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
    </launcherArgs>
 
    <windowImages i16="/org.eclipse.rmf.reqif10.pror.editor/icons/full/prorIcon/prorIcon16.png" i32="/org.eclipse.rmf.reqif10.pror.editor/icons/full/prorIcon/prorIcon32.png" i48="/org.eclipse.rmf.reqif10.pror.editor/icons/full/prorIcon/prorIcon48.png" i64="/org.eclipse.rmf.reqif10.pror.editor/icons/full/prorIcon/prorIcon64.png" i128="/org.eclipse.rmf.reqif10.pror.editor/icons/full/prorIcon/prorIcon128.png"/>
diff --git a/org.eclipse.rmf.releng.target/juno/juno-3.8.target b/org.eclipse.rmf.releng.target/juno/juno-3.8.target
index 7bdbc13..8d33c56 100644
--- a/org.eclipse.rmf.releng.target/juno/juno-3.8.target
+++ b/org.eclipse.rmf.releng.target/juno/juno-3.8.target
@@ -19,5 +19,9 @@
 <unit id="org.eclipse.platform.sdk" version="3.8.2.M20130131-0800"/>
 <repository location="http://download.eclipse.org/eclipse/updates/3.8"/>
 </location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sphinx.emf.serialization.feature.group" version="0.8.1.201409171422"/>
+<repository location="http://download.eclipse.org/sphinx/updates/releases/0.8.x"/>
+</location>
 </locations>
 </target>
diff --git a/org.eclipse.rmf.releng.target/juno/juno.target b/org.eclipse.rmf.releng.target/juno/juno.target
index c151a20..3395d1e 100644
--- a/org.eclipse.rmf.releng.target/juno/juno.target
+++ b/org.eclipse.rmf.releng.target/juno/juno.target
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="JUNO_4_2_2" sequenceNumber="17">
+<?pde version="3.8"?><target name="JUNO_4_2_2" sequenceNumber="18">
 <locations>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.emf.validation.sdk.feature.group" version="1.6.0.v20120328-0001-67T-96SGR75UNqZNTdeQnghI6uFA"/>
@@ -17,5 +17,9 @@
 <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
 <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/"/>
 </location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sphinx.emf.serialization.feature.group" version="0.8.1.201409171422"/>
+<repository location="http://download.eclipse.org/sphinx/updates/releases/0.8.x"/>
+</location>
 </locations>
 </target>
diff --git a/org.eclipse.rmf.releng.target/kepler/kepler.target b/org.eclipse.rmf.releng.target/kepler/kepler.target
index b0bb2c1..228321b 100644
--- a/org.eclipse.rmf.releng.target/kepler/kepler.target
+++ b/org.eclipse.rmf.releng.target/kepler/kepler.target
@@ -16,5 +16,9 @@
 <unit id="org.eclipse.emf.sdk.feature.group" version="2.9.1.v20130902-0605"/>
 <repository location="http://download.eclipse.org/releases/kepler/"/>
 </location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sphinx.emf.serialization.feature.group" version="0.8.1.201409171422"/>
+<repository location="http://download.eclipse.org/sphinx/updates/releases/0.8.x"/>
+</location>
 </locations>
 </target>
diff --git a/org.eclipse.rmf.releng.target/luna/luna.target b/org.eclipse.rmf.releng.target/luna/luna.target
index 126cfc6..ac2ddfc 100644
--- a/org.eclipse.rmf.releng.target/luna/luna.target
+++ b/org.eclipse.rmf.releng.target/luna/luna.target
@@ -18,5 +18,9 @@
 <unit id="org.apache.poi" version="3.9.0.v201405241750"/>
 <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository"/>
 </location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sphinx.emf.serialization.feature.group" version="0.8.1.201409171422"/>
+<repository location="http://download.eclipse.org/sphinx/updates/releases/0.8.x"/>
+</location>
 </locations>
 </target>
diff --git a/org.eclipse.rmf.releng.target/mars/mars.target b/org.eclipse.rmf.releng.target/mars/mars.target
index 5abed5b..0c89d82 100644
--- a/org.eclipse.rmf.releng.target/mars/mars.target
+++ b/org.eclipse.rmf.releng.target/mars/mars.target
@@ -2,15 +2,15 @@
 <?pde version="3.8"?><target name="MARS" sequenceNumber="22">
 <locations>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.sdk.ide" version="4.5.0.I20140918-0330"/>
-<unit id="org.eclipse.equinox.executable.feature.group" version="3.6.100.v20140918-0709"/>
+<unit id="org.eclipse.sdk.ide" version="0.0.0"/>
+<unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
 <repository location="http://download.eclipse.org/eclipse/updates/4.5milestones"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.sdk.feature.group" version="2.11.0.v20140929-0830"/>
-<unit id="org.eclipse.emf.validation.sdk.feature.group" version="1.9.0.201409241438"/>
-<unit id="org.eclipse.xsd.sdk.feature.group" version="2.10.0.v20140929-0830"/>
-<repository location="http://download.eclipse.org/releases/staging"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.xsd.sdk.feature.group" version="0.0.0"/>
+<repository location="http://download.eclipse.org/releases/mars"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="com.google.guava" version="15.0.0.v201403281430"/>
@@ -18,5 +18,9 @@
 <unit id="org.apache.poi" version="3.9.0.v201405241750"/>
 <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository"/>
 </location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sphinx.emf.serialization.feature.group" version="0.0.0"/>
+<repository location="http://download.eclipse.org/sphinx/updates/interim"/>
+</location>
 </locations>
 </target>
diff --git a/org.eclipse.rmf.releng/README.txt b/org.eclipse.rmf.releng/README.txt
index 431421b..6e121bb 100644
--- a/org.eclipse.rmf.releng/README.txt
+++ b/org.eclipse.rmf.releng/README.txt
@@ -1,3 +1,8 @@
 Building RMF from the command line.  Note that there is also a launch configuration in "launcher".
 
-mvn clean verify -P platform-indigo
+mvn clean verify -P platform-juno
+
+Tests take very long - to skip, add
+
+-Dmaven.test.skip=true 
+
diff --git a/org.eclipse.rmf.releng/launcher/LUNA.launch b/org.eclipse.rmf.releng/launcher/LUNA.launch
index e4fe2ef..57217ad 100644
--- a/org.eclipse.rmf.releng/launcher/LUNA.launch
+++ b/org.eclipse.rmf.releng/launcher/LUNA.launch
@@ -4,7 +4,7 @@
 <stringAttribute key="M2_GOALS" value="clean verify"/>
 <booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
 <booleanAttribute key="M2_OFFLINE" value="false"/>
-<stringAttribute key="M2_PROFILES" value="platform-kepler"/>
+<stringAttribute key="M2_PROFILES" value="platform-luna"/>
 <listAttribute key="M2_PROPERTIES"/>
 <stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
 <booleanAttribute key="M2_SKIP_TESTS" value="false"/>
diff --git a/org.eclipse.rmf.releng/pom.xml b/org.eclipse.rmf.releng/pom.xml
index 27209e8..a953e89 100644
--- a/org.eclipse.rmf.releng/pom.xml
+++ b/org.eclipse.rmf.releng/pom.xml
@@ -67,7 +67,7 @@
 		<module>../org.eclipse.rmf.reqif10.common</module>

 		<module>../org.eclipse.rmf.reqif10.constraints</module>

 		<module>../org.eclipse.rmf.reqif10.serialization</module>

-		<module>../org.eclipse.rmf.serialization</module>

+		

 		<module>../org.eclipse.rmf.ext.prostep</module>

 		

 		<module>../org.eclipse.rmf.reqif10.feature</module>

@@ -91,6 +91,7 @@
 		<module>../org.eclipse.rmf.reqif10.search</module>

 		<module>../org.eclipse.rmf.reqif10.search.edit</module>

 		<module>../org.eclipse.rmf.reqif10.search.ui</module>

+		<module>../org.eclipse.rmf.reqif10.search.test</module>

 		<module>../org.eclipse.rmf.reqif10.pror.genhtml</module>

 		<module>../org.eclipse.rmf.reqif10.csv.importer</module>

 		<module>../org.eclipse.rmf.reqif10.pror.feature</module>

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ProrXhtmlSimplifiedHelper.java b/org.eclipse.rmf.reqif10.common/src/org/eclipse/rmf/reqif10/common/util/ProrXhtmlSimplifiedHelper.java
similarity index 97%
rename from org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ProrXhtmlSimplifiedHelper.java
rename to org.eclipse.rmf.reqif10.common/src/org/eclipse/rmf/reqif10/common/util/ProrXhtmlSimplifiedHelper.java
index 5ce9c86..cc2085a 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ProrXhtmlSimplifiedHelper.java
+++ b/org.eclipse.rmf.reqif10.common/src/org/eclipse/rmf/reqif10/common/util/ProrXhtmlSimplifiedHelper.java
@@ -8,7 +8,7 @@
  * Contributors:

  *     Lukas Ladenberger - initial API and implementation

  ******************************************************************************/

-package org.eclipse.rmf.reqif10.pror.util;

+package org.eclipse.rmf.reqif10.common.util;

 

 import java.io.IOException;

 import java.io.StringWriter;

@@ -21,7 +21,6 @@
 import org.eclipse.emf.ecore.xmi.XMLResource;

 import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;

 import org.eclipse.rmf.reqif10.XhtmlContent;

-import org.eclipse.rmf.reqif10.common.util.ReqIF10XhtmlUtil;

 import org.eclipse.rmf.reqif10.xhtml.XhtmlDivType;

 import org.eclipse.rmf.reqif10.xhtml.XhtmlFactory;

 

diff --git a/org.eclipse.rmf.reqif10.csv.importer/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.csv.importer/META-INF/MANIFEST.MF
index aa3d3a5..a8e0ec2 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.csv.importer/META-INF/MANIFEST.MF
@@ -16,7 +16,6 @@
  org.eclipse.emf.databinding.edit,

  org.eclipse.core.databinding.property,

  org.eclipse.rmf.reqif10.pror.editor;bundle-version="0.12.0",

- org.eclipse.rmf.reqif10.xhtml.edit;bundle-version="0.12.0",

- org.eclipse.rmf.serialization;bundle-version="0.12.0"

+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.rmf.reqif10.csv.importer.CSVImporterPlugin$Implementation

diff --git a/org.eclipse.rmf.reqif10.csv.importer/about.html b/org.eclipse.rmf.reqif10.csv.importer/about.html
index c258ef5..3a8e6c6 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/about.html
+++ b/org.eclipse.rmf.reqif10.csv.importer/about.html
@@ -24,5 +24,17 @@
 indicated below, the terms and conditions of the EPL still apply to any source code in the Content
 and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
 
+<h3>Third Party Content</h3>
+
+The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor's license for terms and conditions of use.
+
+<h4>OpenCSV 1.8</h4>
+
+<p>The plug-in includes binaries of software developed by the <a href="http://opencsv.sourceforge.net">OpenCSV Project</a> ("Open CSV") at SourceForge.net.</p>
+
+<p>Your use of Open CSV is governed by the terms and conditions of the <a href="about_files/APACHE_LICENSE-2.0.html">Apache License 2.0</a>.</p>
+
+<p>The Open CSV source code can be downloaded from the <a href="http://downloads.sourceforge.net/opencsv/opencsv-1.8-src-with-libs.tar.gz?modtime=1185864370&big_mirror=0">Open CSV download area on SourceForge.net</a>.</p>
+
 </body>
 </html>
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.csv.importer/about_files/APACHE_LICENSE-2.0.html b/org.eclipse.rmf.reqif10.csv.importer/about_files/APACHE_LICENSE-2.0.html
new file mode 100644
index 0000000..4dd0005
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.csv.importer/about_files/APACHE_LICENSE-2.0.html
@@ -0,0 +1,188 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Apache License, Version 2.0</title>
+    <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License. -->
+  </head>
+
+  <body>
+      <div id="content" class="grid_16"><div class="section-content"><p>Apache License<br></br>Version 2.0, January 2004<br></br>
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a> </p>
+<p>TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION</p>
+<p><strong><a name="definitions">1. Definitions</a></strong>.</p>
+<p>"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.</p>
+<p>"Licensor" shall mean the copyright owner or entity authorized by the
+copyright owner that is granting the License.</p>
+<p>"Legal Entity" shall mean the union of the acting entity and all other
+entities that control, are controlled by, or are under common control with
+that entity. For the purposes of this definition, "control" means (i) the
+power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty
+percent (50%) or more of the outstanding shares, or (iii) beneficial
+ownership of such entity.</p>
+<p>"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.</p>
+<p>"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.</p>
+<p>"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled
+object code, generated documentation, and conversions to other media types.</p>
+<p>"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the
+Appendix below).</p>
+<p>"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent, as
+a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from, or
+merely link (or bind by name) to the interfaces of, the Work and Derivative
+Works thereof.</p>
+<p>"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor for
+inclusion in the Work by the copyright owner or by an individual or Legal
+Entity authorized to submit on behalf of the copyright owner. For the
+purposes of this definition, "submitted" means any form of electronic,
+verbal, or written communication sent to the Licensor or its
+representatives, including but not limited to communication on electronic
+mailing lists, source code control systems, and issue tracking systems that
+are managed by, or on behalf of, the Licensor for the purpose of discussing
+and improving the Work, but excluding communication that is conspicuously
+marked or otherwise designated in writing by the copyright owner as "Not a
+Contribution."</p>
+<p>"Contributor" shall mean Licensor and any individual or Legal Entity on
+behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.</p>
+<p><strong><a name="copyright">2. Grant of Copyright License</a></strong>. Subject to the
+terms and conditions of this License, each Contributor hereby grants to You
+a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of, publicly
+display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.</p>
+<p><strong><a name="patent">3. Grant of Patent License</a></strong>. Subject to the terms
+and conditions of this License, each Contributor hereby grants to You a
+perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made, use,
+offer to sell, sell, import, and otherwise transfer the Work, where such
+license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by
+combination of their Contribution(s) with the Work to which such
+Contribution(s) was submitted. If You institute patent litigation against
+any entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that the Work or a Contribution incorporated within the Work constitutes
+direct or contributory patent infringement, then any patent licenses
+granted to You under this License for that Work shall terminate as of the
+date such litigation is filed.</p>
+<p><strong><a name="redistribution">4. Redistribution</a></strong>. You may reproduce and
+distribute copies of the Work or Derivative Works thereof in any medium,
+with or without modifications, and in Source or Object form, provided that
+You meet the following conditions:</p>
+<ol style="list-style: lower-latin;">
+<li>You must give any other recipients of the Work or Derivative Works a
+copy of this License; and</li>
+
+<li>You must cause any modified files to carry prominent notices stating
+that You changed the files; and</li>
+
+<li>You must retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices from
+the Source form of the Work, excluding those notices that do not pertain to
+any part of the Derivative Works; and</li>
+
+<li>If the Work includes a "NOTICE" text file as part of its distribution,
+then any Derivative Works that You distribute must include a readable copy
+of the attribution notices contained within such NOTICE file, excluding
+those notices that do not pertain to any part of the Derivative Works, in
+at least one of the following places: within a NOTICE text file distributed
+as part of the Derivative Works; within the Source form or documentation,
+if provided along with the Derivative Works; or, within a display generated
+by the Derivative Works, if and wherever such third-party notices normally
+appear. The contents of the NOTICE file are for informational purposes only
+and do not modify the License. You may add Your own attribution notices
+within Derivative Works that You distribute, alongside or as an addendum to
+the NOTICE text from the Work, provided that such additional attribution
+notices cannot be construed as modifying the License.
+<br/>
+<br/>
+You may add Your own copyright statement to Your modifications and may
+provide additional or different license terms and conditions for use,
+reproduction, or distribution of Your modifications, or for any such
+Derivative Works as a whole, provided Your use, reproduction, and
+distribution of the Work otherwise complies with the conditions stated in
+this License.
+</li>
+
+</ol>
+
+<p><strong><a name="contributions">5. Submission of Contributions</a></strong>. Unless You
+explicitly state otherwise, any Contribution intentionally submitted for
+inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the
+terms of any separate license agreement you may have executed with Licensor
+regarding such Contributions.</p>
+<p><strong><a name="trademarks">6. Trademarks</a></strong>. This License does not grant
+permission to use the trade names, trademarks, service marks, or product
+names of the Licensor, except as required for reasonable and customary use
+in describing the origin of the Work and reproducing the content of the
+NOTICE file.</p>
+<p><strong><a name="no-warranty">7. Disclaimer of Warranty</a></strong>. Unless required by
+applicable law or agreed to in writing, Licensor provides the Work (and
+each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
+without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You
+are solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise
+of permissions under this License.</p>
+<p><strong><a name="no-liability">8. Limitation of Liability</a></strong>. In no event and
+under no legal theory, whether in tort (including negligence), contract, or
+otherwise, unless required by applicable law (such as deliberate and
+grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a result
+of this License or out of the use or inability to use the Work (including
+but not limited to damages for loss of goodwill, work stoppage, computer
+failure or malfunction, or any and all other commercial damages or losses),
+even if such Contributor has been advised of the possibility of such
+damages.</p>
+<p><strong><a name="additional">9. Accepting Warranty or Additional Liability</a></strong>.
+While redistributing the Work or Derivative Works thereof, You may choose
+to offer, and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this License.
+However, in accepting such obligations, You may act only on Your own behalf
+and on Your sole responsibility, not on behalf of any other Contributor,
+and only if You agree to indemnify, defend, and hold each Contributor
+harmless for any liability incurred by, or claims asserted against, such
+Contributor by reason of your accepting any such warranty or additional
+liability.</p>
+<p>END OF TERMS AND CONDITIONS</p>
+<h1 id="apply">APPENDIX: How to apply the Apache License to your work</h1>
+<p>To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included
+on the same "printed page" as the copyright notice for easier
+identification within third-party archives.</p>
+<div class="codehilite"><pre>Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+</pre></div></div></div>
+      <div class="clear"></div>
+    </div>
+  </body>
+</html>
diff --git a/org.eclipse.rmf.reqif10.csv.importer/build.properties b/org.eclipse.rmf.reqif10.csv.importer/build.properties
index f36eb1d..5f6937a 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/build.properties
+++ b/org.eclipse.rmf.reqif10.csv.importer/build.properties
@@ -8,7 +8,8 @@
                icons/,\

                epl-v10.html,\

                notice.html,\

-               about.html

+               about.html,\

+               about_files/

 jars.compile.order = .

 source.. = src/

 output.. = bin/

diff --git a/org.eclipse.rmf.reqif10.csv.importer/plugin.xml b/org.eclipse.rmf.reqif10.csv.importer/plugin.xml
index a1b369d..12fbc88 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/plugin.xml
+++ b/org.eclipse.rmf.reqif10.csv.importer/plugin.xml
@@ -31,7 +31,7 @@
          point="org.eclipse.ui.importWizards">

       <wizard

             category="org.eclipse.rmf.pror.import.category"

-            class="org.eclipse.rmf.reqif10.csv.importer.ui.wizards.CSVImportWziard"

+            class="org.eclipse.rmf.reqif10.csv.importer.ui.wizards.CSVImportWizard"

             icon="icons/full/obj16/excel.png"

             id="org.eclipse.rmf.reqif10.csv.importer.ui.wizard"

             name="CSV">

diff --git a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWziard.java b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWizard.java
similarity index 95%
rename from org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWziard.java
rename to org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWizard.java
index 63b71db..156730d 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWziard.java
+++ b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/CSVImportWizard.java
@@ -34,7 +34,7 @@
 import org.eclipse.rmf.reqif10.csv.importer.ui.wizards.pages.CSVMappingWizardPage;

 import org.eclipse.rmf.reqif10.csv.importer.utils.Importer;

 import org.eclipse.rmf.reqif10.csv.importer.utils.Utils;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IEditorReference;

 import org.eclipse.ui.IImportWizard;

@@ -42,12 +42,12 @@
 import org.eclipse.ui.PartInitException;

 import org.eclipse.ui.PlatformUI;

 

-public class CSVImportWziard extends Wizard implements IImportWizard {

+public class CSVImportWizard extends Wizard implements IImportWizard {

 

 	private CSVImportWizardPage importWizardPage;

 	private CSVMappingWizardPage mappingWizardPage;

 

-	public CSVImportWziard() {

+	public CSVImportWizard() {

 		setWindowTitle("CSV Import Wizard");

 		setNeedsProgressMonitor(true);

 	}

@@ -118,7 +118,7 @@
 				.getEditorReferences();

 		for (IEditorReference editorReference : editorReferences) {

 			IEditorPart editorPart = editorReference.getEditor(false);

-			if (editorPart instanceof Reqif10Editor) {

+			if (editorPart instanceof IReqifEditor) {

 				try {

 					uriMap.put(EditUIUtil.getURI(editorReference

 							.getEditorInput()),

diff --git a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/pages/RightMappingPart.java b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/pages/RightMappingPart.java
index e30aaf6..c0fede2 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/pages/RightMappingPart.java
+++ b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/ui/wizards/pages/RightMappingPart.java
@@ -150,7 +150,7 @@
 	}

 

 	private void createColumnMappingComboViewer(Composite composite) {

-		columnMappingComboViewer = createComboViewer("Column Mapping : ",

+		columnMappingComboViewer = createComboViewer("Column Mapping: ",

 				composite, columnMappingInput);

 	}

 

@@ -164,11 +164,11 @@
 	}

 

 	private void createAttributeNameTextWidget(Composite composite) {

-		attributeNameTextWidget = createText("Attribute name", composite);

+		attributeNameTextWidget = createText("Attribute Name:", composite);

 	}

 

 	private void createDataTypeComboViewer(Composite composite) {

-		dataTypeComboViewer = createComboViewer("Data Type : ", composite,

+		dataTypeComboViewer = createComboViewer("Data Type: ", composite,

 				DataType.values());

 	}

 

diff --git a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/utils/Utils.java b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/utils/Utils.java
index e7580af..e72db34 100644
--- a/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/utils/Utils.java
+++ b/org.eclipse.rmf.reqif10.csv.importer/src/org/eclipse/rmf/reqif10/csv/importer/utils/Utils.java
@@ -25,8 +25,7 @@
 import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.pror.configuration.provider.ConfigurationItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory;

-import org.eclipse.rmf.reqif10.xhtml.provider.XhtmlItemProviderAdapterFactory;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;

 

 import au.com.bytecode.opencsv.CSVReader;

 

@@ -56,7 +55,6 @@
 				.addAdapterFactory(new ResourceItemProviderAdapterFactory());

 		adapterFactory

 				.addAdapterFactory(new ReqIF10ItemProviderAdapterFactory());

-		adapterFactory.addAdapterFactory(new XhtmlItemProviderAdapterFactory());

 		adapterFactory

 				.addAdapterFactory(new ConfigurationItemProviderAdapterFactory());

 		adapterFactory

diff --git a/org.eclipse.rmf.reqif10.feature/feature.xml b/org.eclipse.rmf.reqif10.feature/feature.xml
index 7036646..4a6e2e3 100644
--- a/org.eclipse.rmf.reqif10.feature/feature.xml
+++ b/org.eclipse.rmf.reqif10.feature/feature.xml
@@ -28,15 +28,12 @@
          id="org.eclipse.rmf.reqif10.thirdparty.feature"
          version="0.0.0"/>
 
-   <plugin
-         id="org.eclipse.rmf.reqif10"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
+   <requires>
+      <import feature="org.eclipse.sphinx.emf.serialization" version="0.8.1.201409171422" match="greaterOrEqual"/>
+   </requires>
 
    <plugin
-         id="org.eclipse.rmf.serialization"
+         id="org.eclipse.rmf.reqif10"
          download-size="0"
          install-size="0"
          version="0.0.0"
diff --git a/org.eclipse.rmf.reqif10.pror.edit/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.pror.edit/META-INF/MANIFEST.MF
index 8df6512..766a132 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.pror.edit/META-INF/MANIFEST.MF
@@ -8,9 +8,10 @@
 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Export-Package: org.eclipse.rmf.reqif10.pror.configuration.provider,or

- g.eclipse.rmf.reqif10.pror.edit.presentation.service,org.eclipse.rmf.

- reqif10.pror.provider,org.eclipse.rmf.reqif10.pror.util

+Export-Package: org.eclipse.rmf.reqif10.pror.configuration.provider,

+ org.eclipse.rmf.reqif10.pror.edit.presentation.service,

+ org.eclipse.rmf.reqif10.pror.provider,

+ org.eclipse.rmf.reqif10.pror.util

 Require-Bundle: org.eclipse.core.runtime,

  org.eclipse.emf.edit;visibility:=reexport,

  org.eclipse.emf.ecore;visibility:=reexport,

diff --git a/org.eclipse.rmf.reqif10.pror.edit/icons/full/obj16/UnifiedColumn.png b/org.eclipse.rmf.reqif10.pror.edit/icons/full/obj16/UnifiedColumn.png
new file mode 100644
index 0000000..155a22b
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.edit/icons/full/obj16/UnifiedColumn.png
Binary files differ
diff --git a/org.eclipse.rmf.reqif10.pror.edit/plugin.properties b/org.eclipse.rmf.reqif10.pror.edit/plugin.properties
index 00f946f..45e0142 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/plugin.properties
+++ b/org.eclipse.rmf.reqif10.pror.edit/plugin.properties
@@ -1714,3 +1714,4 @@
 _UI_ReqIFToolExtension_extensions_feature = Extensions

 _UI_XhtmlContent_xhtml_feature = Xhtml

 _UI_XhtmlContent_xhtmlSource_feature = Xhtml Source

+_UI_UnifiedColumn_type = Unified Column

diff --git a/org.eclipse.rmf.reqif10.pror.edit/plugin.xml b/org.eclipse.rmf.reqif10.pror.edit/plugin.xml
index fc3348a..57e178c 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/plugin.xml
+++ b/org.eclipse.rmf.reqif10.pror.edit/plugin.xml
@@ -30,13 +30,17 @@
                org.eclipse.emf.edit.provider.IItemPropertySource"/>

    </extension>

 

-<!--

-TODO reactivate!

-   <extension

-         point="org.eclipse.rmf.reqif10.resource.reqiftoolextension">

-      <reqiftoolextension

-            class="org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl">

-      </reqiftoolextension>

+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">

+      <!-- @generated reqif10 -->

+      <factory

+            uri="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"

+            class="org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory"

+            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.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ColumnItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ColumnItemProvider.java
index e58a1ce..8a9ded4 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ColumnItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ColumnItemProvider.java
@@ -13,7 +13,6 @@
 

 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;

@@ -29,7 +28,6 @@
 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;

 import org.eclipse.rmf.reqif10.pror.configuration.Column;

 import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ConfigurationItemProviderAdapterFactory.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ConfigurationItemProviderAdapterFactory.java
index 0ebe33d..e75769f 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ConfigurationItemProviderAdapterFactory.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ConfigurationItemProviderAdapterFactory.java
@@ -214,6 +214,29 @@
 	}

 

 	/**

+	 * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected UnifiedColumnItemProvider unifiedColumnItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createUnifiedColumnAdapter() {

+		if (unifiedColumnItemProvider == null) {

+			unifiedColumnItemProvider = new UnifiedColumnItemProvider(this);

+		}

+

+		return unifiedColumnItemProvider;

+	}

+

+	/**

 	 * This returns the root adapter factory that contains this factory.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrSpecViewConfigurationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrSpecViewConfigurationItemProvider.java
index 4aed386..5756a2f 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrSpecViewConfigurationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrSpecViewConfigurationItemProvider.java
@@ -179,8 +179,9 @@
 	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

 	 * that can be created under this object.

 	 * <!-- begin-user-doc -->

+	 * We do not allow the creation of the unified column this way.

 	 * <!-- end-user-doc -->

-	 * @generated

+	 * @generated NOT

 	 */

 	@Override

 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrToolExtensionItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrToolExtensionItemProvider.java
index 3b39082..2d2813c 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrToolExtensionItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/ProrToolExtensionItemProvider.java
@@ -14,7 +14,6 @@
 

 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;

@@ -30,7 +29,6 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;

 import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-import org.eclipse.rmf.reqif10.pror.provider.ReqIFToolExtensionItemProvider;

 import org.eclipse.rmf.reqif10.pror.provider.Reqif10EditPlugin;

 

 

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/UnifiedColumnItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/UnifiedColumnItemProvider.java
new file mode 100644
index 0000000..ff7ced5
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/configuration/provider/UnifiedColumnItemProvider.java
@@ -0,0 +1,109 @@
+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.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;
+
+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnifiedColumnItemProvider extends ColumnItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnifiedColumnItemProvider(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 UnifiedColumn.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/UnifiedColumn.png"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((UnifiedColumn)object).getLabel();
+		return label == null || label.length() == 0 ?
+			getString("_UI_UnifiedColumn_type") :
+			getString("_UI_UnifiedColumn_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.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
index 4ccb4a6..b1dfbd0 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -35,13 +29,7 @@
  * @generated

  */

 public class AttributeDefinitionBooleanItemProvider

-	extends AttributeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
index 289cede..23596f9 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionDate;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -35,13 +29,7 @@
  * @generated

  */

 public class AttributeDefinitionDateItemProvider

-	extends AttributeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionEnumerationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionEnumerationItemProvider.java
index ffc865b..124963c 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionEnumerationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionEnumerationItemProvider.java
@@ -14,17 +14,11 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionEnumeration;

@@ -38,13 +32,7 @@
  * @generated

  */

 public class AttributeDefinitionEnumerationItemProvider

-	extends AttributeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
index 158251d..ec244e9 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -35,13 +29,7 @@
  * @generated

  */

 public class AttributeDefinitionIntegerItemProvider

-	extends AttributeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
index f531109..a5688ad 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionReal;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -35,13 +29,7 @@
  * @generated

  */

 public class AttributeDefinitionRealItemProvider

-	extends AttributeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
index 69fbdb3..0957049 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
@@ -15,7 +15,6 @@
 

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

 import org.eclipse.emf.common.notify.AdapterFactory;

@@ -26,12 +25,7 @@
 import org.eclipse.emf.edit.command.CommandParameter;

 import org.eclipse.emf.edit.command.SetCommand;

 import org.eclipse.emf.edit.domain.EditingDomain;

-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.ItemPropertyDescriptorDecorator;

 import org.eclipse.rmf.reqif10.AttributeDefinition;

 import org.eclipse.rmf.reqif10.AttributeDefinitionSimple;

@@ -56,13 +50,7 @@
  * @generated

  */

 public class AttributeDefinitionSimpleItemProvider

-	extends AttributeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionItemProvider {

 

 	protected AttributeValueSimple defaultAttributeValueSimple = null;

 

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
index 905c3c8..563d601 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionString;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -35,13 +29,7 @@
  * @generated

  */

 public class AttributeDefinitionStringItemProvider

-	extends AttributeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionXHTMLItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionXHTMLItemProvider.java
index 3322c81..40f589b 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionXHTMLItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionXHTMLItemProvider.java
@@ -14,17 +14,11 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;

 import org.eclipse.rmf.reqif10.ReqIF10Factory;

@@ -37,13 +31,7 @@
  * @generated

  */

 public class AttributeDefinitionXHTMLItemProvider

-	extends AttributeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeDefinitionItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueBooleanItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueBooleanItemProvider.java
index 33a6ed1..1b38bff 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueBooleanItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueBooleanItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueBoolean;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class AttributeValueBooleanItemProvider

-	extends AttributeValueSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueDateItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueDateItemProvider.java
index e42cee9..f7e0fa7 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueDateItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueDateItemProvider.java
@@ -20,12 +20,7 @@
 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueDate;

@@ -38,13 +33,7 @@
  * @generated

  */

 public class AttributeValueDateItemProvider

-	extends AttributeValueSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueEnumerationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueEnumerationItemProvider.java
index 8c43fdc..3b99fe8 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueEnumerationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueEnumerationItemProvider.java
@@ -27,12 +27,7 @@
 import org.eclipse.emf.edit.command.SetCommand;

 import org.eclipse.emf.edit.domain.EditingDomain;

 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.rmf.reqif10.AttributeValueEnumeration;

 import org.eclipse.rmf.reqif10.Identifiable;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

@@ -46,13 +41,7 @@
  * @generated

  */

 public class AttributeValueEnumerationItemProvider

-	extends AttributeValueItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueIntegerItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueIntegerItemProvider.java
index 7c2fec7..f212ab0 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueIntegerItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueIntegerItemProvider.java
@@ -15,16 +15,10 @@
 import java.math.BigInteger;

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueInteger;

@@ -37,13 +31,7 @@
  * @generated

  */

 public class AttributeValueIntegerItemProvider

-	extends AttributeValueSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueRealItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueRealItemProvider.java
index 234b259..6fea185 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueRealItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueRealItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueReal;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class AttributeValueRealItemProvider

-	extends AttributeValueSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueSimpleItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueSimpleItemProvider.java
index bf31d08..4bb0839 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueSimpleItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueSimpleItemProvider.java
@@ -14,15 +14,9 @@
 

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

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.AttributeValueSimple} object.

@@ -31,13 +25,7 @@
  * @generated

  */

 public class AttributeValueSimpleItemProvider

-	extends AttributeValueItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueStringItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueStringItemProvider.java
index 4ad52e1..0569827 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueStringItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueStringItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueString;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class AttributeValueStringItemProvider

-	extends AttributeValueSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueXHTMLItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueXHTMLItemProvider.java
index af06a18..ef6e25e 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueXHTMLItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeValueXHTMLItemProvider.java
@@ -14,17 +14,11 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeValueXHTML;

@@ -38,13 +32,7 @@
  * @generated

  */

 public class AttributeValueXHTMLItemProvider

-	extends AttributeValueItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends AttributeValueItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionBooleanItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionBooleanItemProvider.java
index cebb9af..c31f83c 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionBooleanItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionBooleanItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.DatatypeDefinitionBoolean;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.DatatypeDefinitionBoolean} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class DatatypeDefinitionBooleanItemProvider

-	extends DatatypeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionDateItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionDateItemProvider.java
index fc9b788..901ae98 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionDateItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionDateItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.DatatypeDefinitionDate;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.DatatypeDefinitionDate} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class DatatypeDefinitionDateItemProvider

-	extends DatatypeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionEnumerationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionEnumerationItemProvider.java
index f3e6dcc..9aaa115 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionEnumerationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionEnumerationItemProvider.java
@@ -14,7 +14,6 @@
 

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

@@ -22,12 +21,7 @@
 import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.edit.command.DragAndDropFeedback;

 import org.eclipse.emf.edit.domain.EditingDomain;

-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.ViewerNotification;

 import org.eclipse.rmf.reqif10.DatatypeDefinitionEnumeration;

 import org.eclipse.rmf.reqif10.EmbeddedValue;

@@ -44,13 +38,7 @@
  * @generated

  */

 public class DatatypeDefinitionEnumerationItemProvider

-	extends DatatypeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionIntegerItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionIntegerItemProvider.java
index 17fcef9..daf9a29 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionIntegerItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionIntegerItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.DatatypeDefinitionInteger;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class DatatypeDefinitionIntegerItemProvider

-	extends DatatypeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionItemProvider.java
index 497a7da..9354e62 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionItemProvider.java
@@ -14,15 +14,9 @@
 

 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.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.rmf.reqif10.DatatypeDefinition;

 import org.eclipse.rmf.reqif10.ReqIFContent;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

@@ -34,13 +28,7 @@
  * @generated

  */

 public class DatatypeDefinitionItemProvider

-	extends IdentifiableItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends IdentifiableItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionRealItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionRealItemProvider.java
index 5e74281..73923f3 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionRealItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionRealItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.DatatypeDefinitionReal;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class DatatypeDefinitionRealItemProvider

-	extends DatatypeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionSimpleItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionSimpleItemProvider.java
index 6897698..5f1497e 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionSimpleItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionSimpleItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.DatatypeDefinitionSimple;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.DatatypeDefinitionSimple} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class DatatypeDefinitionSimpleItemProvider

-	extends DatatypeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionStringItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionStringItemProvider.java
index 9fa4228..30d9af5 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionStringItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionStringItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.DatatypeDefinitionString;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class DatatypeDefinitionStringItemProvider

-	extends DatatypeDefinitionSimpleItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionSimpleItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionXHTMLItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionXHTMLItemProvider.java
index aacea54..69b987a 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionXHTMLItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/DatatypeDefinitionXHTMLItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.DatatypeDefinitionXHTML;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.DatatypeDefinitionXHTML} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class DatatypeDefinitionXHTMLItemProvider

-	extends DatatypeDefinitionItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends DatatypeDefinitionItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/EnumValueItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/EnumValueItemProvider.java
index d347342..a512e7a 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/EnumValueItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/EnumValueItemProvider.java
@@ -14,16 +14,10 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.EnumValue;

 import org.eclipse.rmf.reqif10.ReqIF10Factory;

@@ -36,13 +30,7 @@
  * @generated

  */

 public class EnumValueItemProvider

-	extends IdentifiableItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends IdentifiableItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/RelationGroupTypeItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/RelationGroupTypeItemProvider.java
index cfb2d7b..85272f7 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/RelationGroupTypeItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/RelationGroupTypeItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.RelationGroupType;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.RelationGroupType} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class RelationGroupTypeItemProvider

-	extends SpecTypeItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecTypeItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIFItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIFItemProvider.java
index 21fef0e..fa419b7 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIFItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIFItemProvider.java
@@ -14,7 +14,6 @@
 

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.AbstractCommand;

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

@@ -38,7 +37,6 @@
 import org.eclipse.rmf.reqif10.ReqIF10Factory;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.common.util.ReqIFToolExtensionUtil;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

 

 /**

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecHierarchyItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecHierarchyItemProvider.java
index 7d10b28..f7a1e45 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecHierarchyItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecHierarchyItemProvider.java
@@ -15,12 +15,10 @@
 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPEC_HIERARCHY__CHILDREN;

 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPEC_HIERARCHY__OBJECT;

 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPEC_OBJECT__TYPE;

-

 import java.util.ArrayList;

 import java.util.Collection;

 import java.util.GregorianCalendar;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

 import org.eclipse.emf.common.command.UnexecutableCommand;

@@ -33,12 +31,7 @@
 import org.eclipse.emf.edit.command.SetCommand;

 import org.eclipse.emf.edit.domain.EditingDomain;

 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.ItemPropertyDescriptorDecorator;

 import org.eclipse.emf.edit.provider.ItemProviderAdapter;

@@ -61,9 +54,7 @@
  * @generated

  */

 public class SpecHierarchyItemProvider extends

-		AccessControlledElementItemProvider implements

-		IEditingDomainItemProvider, IStructuredItemContentProvider,

-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {

+		AccessControlledElementItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier. <!--

 	 * begin-user-doc --> <!-- end-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectItemProvider.java
index 3b62a08..94b432e 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectItemProvider.java
@@ -14,7 +14,6 @@
 

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

@@ -27,12 +26,7 @@
 import org.eclipse.emf.edit.command.DragAndDropFeedback;

 import org.eclipse.emf.edit.domain.EditingDomain;

 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.ItemPropertyDescriptorDecorator;

 import org.eclipse.emf.edit.provider.ViewerNotification;

@@ -52,13 +46,7 @@
  * @generated

  */

 public class SpecObjectItemProvider

-	extends SpecElementWithAttributesItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecElementWithAttributesItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectTypeItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectTypeItemProvider.java
index d9f27ca..90916f5 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectTypeItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecObjectTypeItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.SpecObjectType;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.SpecObjectType} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class SpecObjectTypeItemProvider

-	extends SpecTypeItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecTypeItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationItemProvider.java
index 4877e7e..8f96b57 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationItemProvider.java
@@ -14,17 +14,11 @@
 

 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.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.ViewerNotification;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.ReqIFContent;

@@ -38,13 +32,7 @@
  * @generated

  */

 public class SpecRelationItemProvider

-	extends SpecElementWithAttributesItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecElementWithAttributesItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationTypeItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationTypeItemProvider.java
index 50be04e..d8482e0 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationTypeItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecRelationTypeItemProvider.java
@@ -14,16 +14,9 @@
 

 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.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.rmf.reqif10.SpecRelationType;

 

 /**

  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.SpecRelationType} object.

@@ -32,13 +25,7 @@
  * @generated

  */

 public class SpecRelationTypeItemProvider

-	extends SpecTypeItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecTypeItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecTypeItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecTypeItemProvider.java
index 718e9ec..b61cefe 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecTypeItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecTypeItemProvider.java
@@ -15,7 +15,6 @@
 import java.util.HashSet;

 import java.util.List;

 import java.util.Set;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

 import org.eclipse.emf.common.notify.AdapterFactory;

@@ -25,12 +24,7 @@
 import org.eclipse.emf.ecore.InternalEObject;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.emf.edit.domain.EditingDomain;

-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.ViewerNotification;

 import org.eclipse.rmf.reqif10.AttributeDefinition;

 import org.eclipse.rmf.reqif10.ReqIF;

@@ -52,9 +46,7 @@
  * end-user-doc -->

  * @generated

  */

-public class SpecTypeItemProvider extends IdentifiableItemProvider implements

-		IEditingDomainItemProvider, IStructuredItemContentProvider,

-		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {

+public class SpecTypeItemProvider extends IdentifiableItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier. <!--

 	 * begin-user-doc --> <!-- end-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationItemProvider.java
index 474b019..31fa7bf 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationItemProvider.java
@@ -16,10 +16,8 @@
 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPECIFICATION__TYPE;

 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPEC_HIERARCHY__OBJECT;

 import static org.eclipse.rmf.reqif10.ReqIF10Package.Literals.SPEC_OBJECT__TYPE;

-

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

 import org.eclipse.emf.common.notify.AdapterFactory;

@@ -30,12 +28,7 @@
 import org.eclipse.emf.edit.command.SetCommand;

 import org.eclipse.emf.edit.domain.EditingDomain;

 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.ViewerNotification;

 import org.eclipse.rmf.reqif10.Identifiable;

 import org.eclipse.rmf.reqif10.ReqIF10Factory;

@@ -56,13 +49,7 @@
  * @generated

  */

 public class SpecificationItemProvider

-	extends SpecElementWithAttributesItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecElementWithAttributesItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationTypeItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationTypeItemProvider.java
index 4d5c41a..440f811 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationTypeItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/SpecificationTypeItemProvider.java
@@ -14,7 +14,6 @@
 

 import java.util.Collection;

 import java.util.List;

-

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.notify.Notification;

@@ -22,13 +21,7 @@
 import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.edit.command.DragAndDropFeedback;

 import org.eclipse.emf.edit.domain.EditingDomain;

-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.rmf.reqif10.SpecificationType;

 import org.eclipse.rmf.reqif10.Identifiable;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

 

@@ -39,13 +32,7 @@
  * @generated

  */

 public class SpecificationTypeItemProvider

-	extends SpecTypeItemProvider

-	implements

-		IEditingDomainItemProvider,

-		IStructuredItemContentProvider,

-		ITreeItemContentProvider,

-		IItemLabelProvider,

-		IItemPropertySource {

+	extends SpecTypeItemProvider {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/XhtmlContentItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/XhtmlContentItemProvider.java
index 36f32f0..7dc1cda 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/XhtmlContentItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/XhtmlContentItemProvider.java
@@ -11,7 +11,6 @@
 
 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;
@@ -34,7 +33,6 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;
 import org.eclipse.rmf.reqif10.XhtmlContent;
 import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;
-import org.eclipse.rmf.reqif10.xhtml.XhtmlFactory;
 
 /*******************************************************************************
  * Copyright (c) 2011 Formal Mind GmbH and University of Dusseldorf.
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ConfigurationUtil.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ConfigurationUtil.java
index 8b14321..1f813a0 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ConfigurationUtil.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/util/ConfigurationUtil.java
@@ -10,6 +10,7 @@
  ******************************************************************************/

 package org.eclipse.rmf.reqif10.pror.util;

 

+import java.util.ArrayList;

 import java.util.Collections;

 import java.util.HashSet;

 import java.util.Iterator;

@@ -34,9 +35,11 @@
 import org.eclipse.rmf.reqif10.ReqIF;

 import org.eclipse.rmf.reqif10.SpecElementWithAttributes;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

+import org.eclipse.rmf.reqif10.SpecObjectType;

 import org.eclipse.rmf.reqif10.SpecType;

 import org.eclipse.rmf.reqif10.Specification;

 import org.eclipse.rmf.reqif10.XhtmlContent;

+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

 import org.eclipse.rmf.reqif10.common.util.ReqIFToolExtensionUtil;

 import org.eclipse.rmf.reqif10.pror.configuration.Column;

@@ -296,14 +299,16 @@
 		specViewConfig.setSpecification(specification);

 

 		// Collect all Types

-		final Set<SpecType> types = new HashSet<SpecType>();

+		

+		final List<SpecType> types = new ArrayList<SpecType>();

 		ReqIF10Switch<SpecHierarchy> visitor = new ReqIF10Switch<SpecHierarchy>() {

 			@Override

 			public SpecHierarchy caseSpecHierarchy(SpecHierarchy specHierarchy) {

-				if (specHierarchy.getObject() != null

-						&& specHierarchy.getObject().getType() != null) {

-					// Duplicates will disappear due to HashSet

-					types.add(specHierarchy.getObject().getType());

+				if (specHierarchy.getObject() != null) {

+					SpecObjectType type = specHierarchy.getObject().getType();

+					if (type != null && !types.contains(type)) {

+						types.add(type);

+					}

 				}

 				return specHierarchy;

 			}

@@ -312,25 +317,40 @@
 		for (Iterator<EObject> i = EcoreUtil

 				.getAllContents(specification, true); i.hasNext();) {

 			visitor.doSwitch(i.next());

-			// we only explore the first 100 elements for performance.

-			if (counter++ == 100)

+			// we only explore the first 50 elements for performance.

+			if (counter++ == 50)

 				break;

 		}

 

-		// Collect all names from the types

-		final Set<String> colnames = new HashSet<String>();

+		

+		// Collect all names from the types.  We use a list to maintain order.

+		final List<String> colNames = new ArrayList<String>();

 		for (SpecType type : types) {

 			for (AttributeDefinition ad : type.getSpecAttributes()) {

-				// Duplicates will disappear due to HashSet

-				colnames.add(ad.getLongName());

+				

+				String colName = ad.getLongName();

+				if (colName != null && !colNames.contains(colName)) {

+					colNames.add(ad.getLongName());

+				}

 			}

 		}

+		

 

 		// Build all Columns from the names

-		for (String colname : colnames) {

+		boolean unifiedColumn = false;

+		for (String colName : colNames) {

 			Column column = ConfigurationFactory.eINSTANCE.createColumn();

+

+			// See whether we need a unified column or not.

+			if (colName.equals("ReqIF.Text") || colName.equals("ReqIF.ChapterName")) {

+				if (unifiedColumn) continue;

+				column = ConfigurationFactory.eINSTANCE.createUnifiedColumn();

+				colName = "Main";

+				unifiedColumn = true;

+			}

+			

 			column.setWidth(100);

-			column.setLabel(colname);

+			column.setLabel(colName);

 			specViewConfig.getColumns().add(column);

 		}

 		domain.getCommandStack()

diff --git a/org.eclipse.rmf.reqif10.pror.editor/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.pror.editor/META-INF/MANIFEST.MF
index e991209..14d0e6a 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.pror.editor/META-INF/MANIFEST.MF
@@ -7,22 +7,22 @@
 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Export-Package: org.eclipse.rmf.reqif10.pror.editor.agilegrid,org.ecli

- pse.rmf.reqif10.pror.editor.presentation,org.eclipse.rmf.reqif10.pror

- .editor.presentation.service,org.eclipse.rmf.reqif10.pror.editor.prop

- ertiesview,org.eclipse.rmf.reqif10.pror.editor.util

+Export-Package: org.eclipse.rmf.reqif10.pror.editor,

+ org.eclipse.rmf.reqif10.pror.editor.agilegrid,

+ org.eclipse.rmf.reqif10.pror.editor.presentation,

+ org.eclipse.rmf.reqif10.pror.editor.presentation.service,

+ org.eclipse.rmf.reqif10.pror.editor.propertiesview,

+ org.eclipse.rmf.reqif10.pror.editor.util

 Require-Bundle: org.eclipse.core.runtime;visibility:=reexport,

  org.eclipse.ui.ide;visibility:=reexport,

  org.eclipse.ui.forms,

- org.eclipse.rmf.reqif10.pror.edit;bundle-version="0.9.0";visibility:=reexport,

+ org.eclipse.rmf.reqif10.pror.edit;bundle-version="0.12.0";visibility:=reexport,

  org.eclipse.core.resources;visibility:=reexport,

  org.eclipse.emf.edit.ui;visibility:=reexport,

  org.agilemore.agilegrid;bundle-version="1.3.3";visibility:=reexport,

- org.eclipse.rmf.serialization;bundle-version="0.9.0",

- org.eclipse.ui.navigator,

  com.google.guava,

  org.eclipse.core.filesystem;bundle-version="1.3.100",

- org.eclipse.rmf.reqif10.xhtml;bundle-version="0.9.0",

- org.eclipse.rmf.reqif10.serialization;bundle-version="0.9.0",

- org.eclipse.rmf.reqif10.xhtml.edit;bundle-version="0.9.0"

+ org.eclipse.rmf.reqif10.serialization;bundle-version="0.12.0",

+ org.eclipse.rmf.reqif10.xhtml.edit;bundle-version="0.12.0",

+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"

 Bundle-ActivationPolicy: lazy

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java
new file mode 100644
index 0000000..cfd6a66
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/IReqifEditor.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.pror.editor;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * This interface must be implemented by all editors for ReqIF files.
+ * 
+ * @author jastram
+ */
+public interface IReqifEditor extends IEditorPart, IEditingDomainProvider, ISelectionProvider {
+
+	public ReqIF getReqif();
+	
+	public AdapterFactory getAdapterFactory();
+	
+	public EditingDomainActionBarContributor getActionBarContributor();
+
+	public ISpecificationEditor openSpecEditor(Specification spec);
+}
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java
new file mode 100644
index 0000000..ce387c9
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/ISpecificationEditor.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.pror.editor;
+
+import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;
+
+/**
+ * This interface must be implemented by all editors for ReqIF Specifications.
+ * 
+ * @author jastram
+ */
+public interface ISpecificationEditor extends IReqifEditor {
+
+	/**
+	 * Forward requests to show or hide SpecRelations.
+	 */
+	public void setShowSpecRelations(boolean checked);
+	
+	public void setFilter(ReqifFilter filter);
+
+	public Specification getSpecification();
+}
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
index 6ae603f..7564eed 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/AddTestObjectsActionDelegate.java
@@ -26,7 +26,7 @@
 import org.eclipse.rmf.reqif10.SpecObject;

 import org.eclipse.rmf.reqif10.SpecType;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.swt.widgets.Shell;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -62,9 +62,9 @@
 		SpecType type = specHierarchy.getObject().getType();

 		if (type == null)

 			return;

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		Shell shell = window != null ? window.getShell() : editor.getSite()

 				.getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
index bd443d6..896cbd4 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ColumnConfigurationActionDelegate.java
@@ -12,6 +12,8 @@
 

 import org.eclipse.emf.common.command.Command;

 import org.eclipse.emf.common.command.CompoundCommand;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.impl.AdapterImpl;

 import org.eclipse.emf.common.util.EList;

 import org.eclipse.emf.edit.command.AddCommand;

 import org.eclipse.emf.edit.command.SetCommand;

@@ -28,8 +30,9 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.ReqifSpecificationEditorInput;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -37,14 +40,14 @@
 

 public class ColumnConfigurationActionDelegate implements IEditorActionDelegate {

 

-	private SpecificationEditor editor;

+	private ISpecificationEditor editor;

 

 	/**

 	 * Retrieves the {@link EditingDomain} from the Editor if present.

 	 */

 	public void setActiveEditor(IAction action, IEditorPart editor) {

-		if (editor instanceof SpecificationEditor) {

-			this.editor = (SpecificationEditor) editor;

+		if (editor instanceof ISpecificationEditor) {

+			this.editor = (ISpecificationEditor) editor;

 		} else {

 			this.editor = null;

 		}

@@ -85,18 +88,59 @@
 	}

 

 	private void launchColumnDialog(final ProrSpecViewConfiguration config) {

-		SubtreeDialog dialog = new SubtreeDialog(editor.getReqifEditor(),

+		SubtreeDialog dialog = new SubtreeDialog(editor,

 				config, "Configure columns for "

 						+ ConfigurationUtil.getSpecElementLabel(

 								config.getSpecification(),

 								editor.getAdapterFactory()),

 				"org.eclipse.rmf.reqif10.pror.editor.columnConfiguration");

-		dialog.setActions(new IAction[] { buildAddColumnAction(config) }, false);

+		dialog.setActions(new IAction[] { buildAddColumnAction(config), buildUnifiedColumnAction(config) }, false);

 		dialog.open();

 		return;

 	}

 

 	/**

+	 * The Unified Column shows Reqif.Text and Reqif.Title in the same column

+	 */

+	private IAction buildUnifiedColumnAction(final ProrSpecViewConfiguration config) {

+		final IAction toggleUnifiedColumnAction = new Action("Unified Column") {

+			

+			@Override

+			public void run() {

+				if (! containsUnifiedColumn(config)) {

+					UnifiedColumn column = ConfigurationFactory.eINSTANCE.createUnifiedColumn();

+					column.setLabel("Main");

+					Command cmd = AddCommand

+							.create(editor.getEditingDomain(),

+									config,

+									ConfigurationPackage.Literals.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS,

+									column);

+					editor.getEditingDomain().getCommandStack().execute(cmd);

+				}

+			}

+		};

+		config.eAdapters().add(new AdapterImpl() {

+			@Override

+			public void notifyChanged(Notification msg) {

+				super.notifyChanged(msg);

+				toggleUnifiedColumnAction.setEnabled(! containsUnifiedColumn(config));

+			}

+		});

+		toggleUnifiedColumnAction.setEnabled(! containsUnifiedColumn(config));

+		return toggleUnifiedColumnAction;

+	}

+

+	/**

+	 * @return true if the given config already contains a {@link UnifiedColumn}.

+	 */

+	private boolean containsUnifiedColumn(ProrSpecViewConfiguration config) {

+		for (Column column : config.getColumns()) {

+			if (column instanceof UnifiedColumn) return true;

+		}

+		return false;

+	}

+	

+	/**

 	 * Creates a new Column. If no Columns are present, this is the only way to

 	 * add Columns.

 	 */

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
index dfa0342..b828ff9 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/DatatypeConfigurationActionDelegate.java
@@ -17,8 +17,7 @@
 import org.eclipse.jface.viewers.ViewerFilter;

 import org.eclipse.rmf.reqif10.ReqIF;

 import org.eclipse.rmf.reqif10.ReqIFToolExtension;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecObjectItemProvider;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecRelationGroupItemProvider;

 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecRelationsItemProvider;

@@ -29,16 +28,14 @@
 public class DatatypeConfigurationActionDelegate implements

 		IEditorActionDelegate {

 

-	private Reqif10Editor editor;

+	private IReqifEditor editor;

 

 	/**

 	 * Retrieves the {@link EditingDomain} from the Editor if present.

 	 */

 	public void setActiveEditor(IAction action, IEditorPart editor) {

-		if (editor instanceof Reqif10Editor) {

-			this.editor = (Reqif10Editor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

+		if (editor instanceof IReqifEditor) {

+			this.editor = (IReqifEditor) editor;

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
index ea6b7d8..9b4c71c 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/GeneralConfigurationActionDelegate.java
@@ -20,8 +20,7 @@
 import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

@@ -29,16 +28,14 @@
 public class GeneralConfigurationActionDelegate implements

 		IEditorActionDelegate {

 

-	private Reqif10Editor editor;

+	private IReqifEditor editor;

 

 	/**

 	 * Retrieves the {@link EditingDomain} from the Editor if present.

 	 */

 	public void setActiveEditor(IAction action, IEditorPart editor) {

-		if (editor instanceof Reqif10Editor) {

-			this.editor = (Reqif10Editor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

+		if (editor instanceof IReqifEditor) {

+			this.editor = (IReqifEditor) editor;

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
index c06093b..7af8165 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/PresentationConfigurationActionDelegate.java
@@ -27,8 +27,7 @@
 import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

 import org.eclipse.rmf.reqif10.pror.configuration.provider.ProrPresentationConfigurationsItemProvider;

 import org.eclipse.rmf.reqif10.pror.edit.presentation.service.PresentationInterface;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationServiceManager;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

@@ -38,16 +37,14 @@
 public class PresentationConfigurationActionDelegate implements

 		IEditorActionDelegate {

 

-	private Reqif10Editor editor;

+	private IReqifEditor editor;

 

 	/**

 	 * Retrieves the {@link EditingDomain} from the Editor if present.

 	 */

 	public void setActiveEditor(IAction action, IEditorPart editor) {

-		if (editor instanceof Reqif10Editor) {

-			this.editor = (Reqif10Editor) editor;

-		} else if (editor instanceof SpecificationEditor) {

-			this.editor = ((SpecificationEditor) editor).getReqifEditor();

+		if (editor instanceof IReqifEditor) {

+			this.editor = (IReqifEditor) editor;

 		} else {

 			this.editor = null;

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
index 7d98aea..43a8786 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelDownActionDelegate.java
@@ -21,7 +21,7 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

 import org.eclipse.rmf.reqif10.Specification;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -58,9 +58,9 @@
 			return;

 		// SpecType type = specHierarchy.getObject().getType();

 

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		// Shell shell = window != null ? window.getShell() : editor.getSite()

 		// .getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
index 15e5db4..6092d7d 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ShiftLevelUpActionDelegate.java
@@ -23,7 +23,7 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

 import org.eclipse.rmf.reqif10.Specification;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -61,9 +61,9 @@
 			return;

 		// SpecType type = specHierarchy.getObject().getType();

 	

-		if (!(editor instanceof SpecificationEditor))

+		if (!(editor instanceof ISpecificationEditor))

 			return;

-		SpecificationEditor specificationEditor = (SpecificationEditor) editor;

+		ISpecificationEditor specificationEditor = (ISpecificationEditor) editor;

 

 		// Shell shell = window != null ? window.getShell() : editor.getSite()

 		// .getShell();

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SpecificationWebPrintAction.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SpecificationWebPrintAction.java
index 25247f2..4785d61 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SpecificationWebPrintAction.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SpecificationWebPrintAction.java
@@ -11,7 +11,6 @@
 package org.eclipse.rmf.reqif10.pror.editor.actions;

 

 import java.io.File;

-import java.io.FileWriter;

 import java.io.IOException;

 

 import org.eclipse.emf.common.notify.AdapterFactory;

@@ -20,7 +19,7 @@
 import org.eclipse.jface.dialogs.MessageDialog;

 import org.eclipse.rmf.reqif10.Specification;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.ReqifSpecificationEditorInput;

-import org.eclipse.rmf.reqif10.pror.editor.util.ProrEditorUtil;

+import org.eclipse.rmf.reqif10.pror.editor.util.HTMLPrinter;

 import org.eclipse.swt.program.Program;

 import org.eclipse.swt.widgets.Display;

 import org.eclipse.ui.IEditorInput;

@@ -54,21 +53,9 @@
 		Specification spec = ((ReqifSpecificationEditorInput)input).getSpec();

 		

 		try {

-			File folder = File.createTempFile("pror-", "");

-			folder.delete();

-			folder = new File(folder.getAbsolutePath() + "/");

-			folder.mkdir();

-

-			String createHtmlContent = ProrEditorUtil.createHtmlContent(spec,

-					editingDomain, adapterFactory);

-

-			File htmlFile = new File(folder, "pror.html");

-			FileWriter writer = new FileWriter(htmlFile);

-			writer.write(createHtmlContent);

-			writer.close();

-			htmlFile.deleteOnExit();

-			Program.launch(htmlFile.toURI().toString());

-			System.out.println("Launched: " + htmlFile.toURI());

+			HTMLPrinter htmlPrinter = new HTMLPrinter(spec, editingDomain, adapterFactory);

+			File htmlSpec = htmlPrinter.print();

+			Program.launch(htmlSpec.getAbsolutePath());

 			MessageDialog.openInformation(

 					Display.getCurrent().getActiveShell(), "Output produced",

 					"Switch to your web browser to see the output.");

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SubtreeDialog.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SubtreeDialog.java
index 287df31..5f873c4 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SubtreeDialog.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/SubtreeDialog.java
@@ -45,8 +45,8 @@
 import org.eclipse.jface.viewers.TreeViewer;

 import org.eclipse.jface.viewers.ViewerFilter;

 import org.eclipse.rmf.reqif10.Specification;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.ProrAdapterFactoryContentProvider;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

 import org.eclipse.rmf.reqif10.pror.editor.propertiesview.ProrPropertySheetPage;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.dnd.DND;

@@ -92,9 +92,9 @@
 	private final List<ViewerFilter> filters = new ArrayList<ViewerFilter>();

 	private final AdapterFactory adapterFactory;

 	private final EditingDomain editingDomain;

-	private final Reqif10Editor reqifEditor;

+	private final IReqifEditor reqifEditor;

 

-	protected SubtreeDialog(Reqif10Editor reqifEditor, EObject input, String title,

+	protected SubtreeDialog(IReqifEditor reqifEditor, EObject input, String title,

 			String helpContext) {

 		super(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());

 		this.reqifEditor = reqifEditor;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
index f4e6339..5c85cb8 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/actions/ToggleSpecRelationsActionDelegate.java
@@ -12,7 +12,7 @@
 

 import org.eclipse.jface.action.IAction;

 import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.ui.IEditorActionDelegate;

 import org.eclipse.ui.IEditorPart;

 import org.eclipse.ui.IWorkbenchWindow;

@@ -34,8 +34,8 @@
 	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)

 	 */

 	public void run(IAction action) {

-		if (editor != null && editor instanceof SpecificationEditor) {

-			((SpecificationEditor) editor).setShowSpecRelations(action

+		if (editor != null && editor instanceof ISpecificationEditor) {

+			((ISpecificationEditor) editor).setShowSpecRelations(action

 					.isChecked());

 		}

 	}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/AbstractProrCellRenderer.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/AbstractProrCellRenderer.java
index 7f9bfcb..163d1ea 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/AbstractProrCellRenderer.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/AbstractProrCellRenderer.java
@@ -27,11 +27,12 @@
 import org.eclipse.rmf.reqif10.AttributeValueXHTML;

 import org.eclipse.rmf.reqif10.EnumValue;

 import org.eclipse.rmf.reqif10.XhtmlContent;

+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10EditorPlugin;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

-import org.eclipse.rmf.reqif10.pror.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.Color;

 import org.eclipse.swt.graphics.GC;

 import org.eclipse.swt.graphics.Image;

 import org.eclipse.swt.graphics.Point;

@@ -48,11 +49,14 @@
 /**

  * @author Lukas Ladenberger

  * @author Ingo Weigelt

+ * @author Michael Jastram

  */

 public class AbstractProrCellRenderer extends TextCellRenderer {

 

 	protected final AdapterFactory adapterFactory;

 

+	public static Color COLOR_RED = SWTResourceManager.getColor(SWT.COLOR_RED);

+

 	private final Image IMG_WARN_FALSE = PlatformUI.getWorkbench()

 			.getSharedImages().getImage(ISharedImages.IMG_OBJS_INFO_TSK);

 

@@ -89,7 +93,7 @@
 			if (v instanceof GregorianCalendar) {

 				GregorianCalendar cal = (GregorianCalendar) v;

 				Date date = cal.getTime();

-				stringValue = DateFormat.getDateInstance().format(date);

+				stringValue = DateFormat.getDateTimeInstance().format(date);

 			} else if (v instanceof List<?>) {

 				stringValue = convertListToString((List<?>) v);

 			} else if (v instanceof XhtmlContent && v != null) {

@@ -157,6 +161,8 @@
 	protected void initialColor(int row, int col) {

 		if (agileGrid.isCellSelected(row, col)) {

 			background = SWTResourceManager.getColor(223, 227, 237);

+		} else {

+			background = SWTResourceManager.getColor(SWT.COLOR_WHITE);

 		}

 	}

 

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrAgileGridContentProvider.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrAgileGridContentProvider.java
index 4d808b2..4d978ff 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrAgileGridContentProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrAgileGridContentProvider.java
@@ -29,8 +29,12 @@
 import org.eclipse.rmf.reqif10.SpecObject;
 import org.eclipse.rmf.reqif10.SpecRelation;
 import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.XhtmlContent;
+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;
 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.pror.configuration.Column;
 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;
 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.ProrRow.ProrRowSpecHierarchy;
 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.ProrRow.ProrRowSpecRelation;
 import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;
@@ -42,7 +46,7 @@
 public class ProrAgileGridContentProvider extends AbstractContentProvider {
 
 	private final Specification root;
-	private final ProrSpecViewConfiguration specViewConfig;
+	final ProrSpecViewConfiguration specViewConfig;
 	private ArrayList<ProrRow> cache = null;
 	private Map<Identifiable, ProrRow> rowMap = new HashMap<Identifiable, ProrRow>();
 
@@ -234,7 +238,31 @@
 		if (col >= specViewConfig.getColumns().size())
 			return null;
 
-		String label = specViewConfig.getColumns().get(col).getLabel();
+		// Handle the Unified Column
+		Column column = specViewConfig.getColumns().get(col);
+		if (column instanceof UnifiedColumn) {
+			AttributeValue av = ReqIF10Util.getAttributeValueForLabel(element,
+					"ReqIF.ChapterName");
+			if (av != null && ReqIF10Util.getTheValue(av) != null) {
+				Object value = ReqIF10Util.getTheValue(av);
+				if (value instanceof XhtmlContent) {
+					XhtmlContent xhtmlContent = (XhtmlContent) value;
+					String s = ProrXhtmlSimplifiedHelper
+							.xhtmlToSimplifiedString(xhtmlContent);
+					if (s != null && s.trim().length() > 0) {
+						return av;
+					}
+
+				} else {
+					if (value.toString().trim().length() > 0) {
+						return av;
+					}
+				}
+			}
+			return ReqIF10Util.getAttributeValueForLabel(element, "ReqIF.Text");
+		}
+
+		String label = column.getLabel();
 
 		return ReqIF10Util.getAttributeValueForLabel(element, label);
 	}
@@ -309,6 +337,5 @@
 
 	public int getRowCount() {
 		return getCache().size();
-	}
-
+	}	
 }
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRenderer.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRenderer.java
index f3c7b87..cfb8c54 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRenderer.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRenderer.java
@@ -25,6 +25,7 @@
 import org.eclipse.rmf.reqif10.pror.provider.Reqif10EditPlugin;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

+import org.eclipse.swt.graphics.Color;

 import org.eclipse.swt.graphics.GC;

 import org.eclipse.swt.graphics.Image;

 import org.eclipse.swt.graphics.Rectangle;

@@ -107,6 +108,23 @@
 		} else {

 			rowHeight = doDrawCellContentDefault(gc, rect, content);

 		}

+

+		// Prevent Scrolling becoming impossible by truncating large cells vertically.

+		int tableSize = agileGrid.getSize().y;

+		if (rowHeight > (tableSize * .5)) {

+			rowHeight = (int) (tableSize * .5);

+			Color oldForeground = gc.getForeground();

+			Color oldBackground = gc.getBackground();

+			

+			gc.setBackground(COLOR_BACKGROUND);

+			gc.setForeground(COLOR_LINE_LIGHTGRAY);

+			gc.fillRectangle(rect.x, rect.y + rowHeight + 4 - 20, rect.width, 20);

+			gc.setForeground(COLOR_RED);

+			gc.drawLine(rect.x, rect.y + rowHeight + 4 - 20, rect.x + rect.width, rect.y + rowHeight + 4 - 20);

+			gc.drawText("Truncated", rect.x + 5, rect.y + rowHeight - 15);

+			gc.setForeground(oldForeground);

+			gc.setBackground(oldBackground);

+		}

 		updateCellHeight(row, col, rowHeight);

 	}

 

@@ -121,7 +139,7 @@
 

 		ProrRow prorRow = contentProvider.getProrRow(row);

 

-		int offset = prorRow.getLevel() * 20;

+		int offset = prorRow.getLevel() * 8;

 		Image icon;

 		if (prorRow.getSpecElement() instanceof SpecObject) {

 			icon = specObjectIcon;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRendererProvider.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRendererProvider.java
index 3437868..f11afc9 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRendererProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrCellRendererProvider.java
@@ -18,6 +18,8 @@
 import org.agilemore.agilegrid.renderers.HeaderCellRenderer;

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.edit.domain.EditingDomain;

+import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.graphics.Color;

 import org.eclipse.swt.graphics.GC;

@@ -65,7 +67,10 @@
 

 	public static Color COLOR_REQIF_ATTRIBUTE = SWTResourceManager

 			.getColor(SWT.COLOR_BLUE);

-	

+

+	public static Color COLOR_UNIFIED = SWTResourceManager

+			.getColor(SWT.COLOR_DARK_CYAN);

+

 	public ProrHeaderCellRenderer(AgileGrid agileGrid) {

 		super(agileGrid, ICellRenderer.STYLE_FLAT

 				| ICellRenderer.INDICATION_SELECTION_ROW);

@@ -79,10 +84,10 @@
 	 */

 	@Override

 	protected void doDrawCellContent(GC gc, Rectangle rect, int row, int col) {

-		if (row >= 0) {

-			ProrAgileGridContentProvider contentProvider = (ProrAgileGridContentProvider) agileGrid

-					.getContentProvider();

+		ProrAgileGridContentProvider contentProvider = (ProrAgileGridContentProvider) agileGrid

+				.getContentProvider();

 

+		if (row >= 0) {

 			ProrRow prorRow = contentProvider.getProrRow(row);

 			if (!prorRow.isVisible()) {

 				return;

@@ -100,8 +105,15 @@
 			label = "";

 		}

 

+		// Handling the unified Column, if present.

+		ProrSpecViewConfiguration specView = contentProvider.specViewConfig;

+		if (col >= 0 && col < specView.getColumns().size()

+				&& specView.getColumns().get(col) instanceof UnifiedColumn) {

+			gc.setForeground(COLOR_UNIFIED);

+		}

+

 		// Handling of ReqIF. Attributes

-		if (label.startsWith("ReqIF.")) {

+		else if (label.startsWith("ReqIF.")) {

 			label = label.substring(6);

 			gc.setForeground(COLOR_REQIF_ATTRIBUTE);

 		}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrDateCellEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrDateCellEditor.java
index ba1cab1..9152353 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrDateCellEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrDateCellEditor.java
@@ -11,68 +11,118 @@
 package org.eclipse.rmf.reqif10.pror.editor.agilegrid;

 

 import java.text.DateFormat;

-import java.text.ParseException;

+import java.util.Calendar;

 import java.util.Date;

 import java.util.GregorianCalendar;

 

-import javax.xml.datatype.DatatypeConfigurationException;

-

 import org.agilemore.agilegrid.AgileGrid;

-import org.agilemore.agilegrid.ICellEditorValidator;

+import org.agilemore.agilegrid.editors.PopupCellEditor;

 import org.eclipse.emf.edit.domain.EditingDomain;

-import org.eclipse.rmf.reqif10.AttributeValue;

+import org.eclipse.rmf.reqif10.AttributeValueDate;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

+import org.eclipse.swt.SWT;

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

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

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

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

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

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

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

 

-public class ProrDateCellEditor extends ProrCellEditor {

+public class ProrDateCellEditor extends PopupCellEditor {

+

+	private DateTime date;

+	private DateTime time;

+	private AttributeValueDate attributeValue;

+	private EditingDomain editingDomain;

+	private Object affectedObject;

+	private Object parent;

 

 	public ProrDateCellEditor(AgileGrid agileGrid, EditingDomain editingDomain,

 			Object parent,

 			Object affectedObject) {

-		super(agileGrid, editingDomain, parent, affectedObject);

-		this.setValidator(new ICellEditorValidator() {

-			public String isValid(Object value) {

-				if (value == null) {

-					return null;

-				}

-				try {

-					ReqIF10Util.stingToCalendar(value.toString());

-				} catch (ParseException e) {

-					return "Required Format: "

-							+ DateFormat.getDateInstance().format(new Date());

-				} catch (DatatypeConfigurationException e) {

-					return "Parsing Problem: " + e.toString();

-				}

-				return null;

-			}

-		});

+		super(agileGrid);

+		this.editingDomain = editingDomain;

+		this.affectedObject = affectedObject;

+		this.parent = parent;

 	}

 	

 	@Override

 	protected Object doGetValue() {

-		try {

-			GregorianCalendar value = ReqIF10Util.stingToCalendar(text.getText());

+			GregorianCalendar value = new GregorianCalendar(date.getYear(),

+					date.getMonth(), date.getDay(), time.getHours(),

+					time.getMinutes(), time.getSeconds());

 			ProrUtil.setTheValue(attributeValue, value, parent, affectedObject,

 					editingDomain);

-		} catch (ParseException e) {

-			e.printStackTrace();

-			// No action necessary, we simply restore the old value.

-		} catch (DatatypeConfigurationException e) {

-			e.printStackTrace();

-			// No action necessary, we simply restore the old value.

-		}

 		return attributeValue;

 	}

 

 	@Override

 	protected void doSetValue(Object value) {

-		if (value instanceof AttributeValue) {

-			attributeValue = (AttributeValue) value;

+		if (value instanceof AttributeValueDate) {

+			this.attributeValue = (AttributeValueDate) value;

+		}

+		super.doSetValue(value);

+	}

 

-			Object cal = ReqIF10Util.getTheValue(attributeValue);

-			if (cal instanceof GregorianCalendar) {

-				text.setText(DateFormat.getDateInstance().format(

-						((GregorianCalendar) cal).getTime()));

+	@Override

+	protected void updateLabel(Object value) {

+		if (value instanceof AttributeValueDate) {

+			AttributeValueDate av = (AttributeValueDate) value;

+			if (av.getTheValue() != null) {

+				Date date = av.getTheValue().getTime();

+				super.updateLabel(DateFormat.getDateTimeInstance().format(date));

+				return;

+			}

+		}

+		super.updateLabel(value);

+	}

+	

+	@Override

+	protected Control createContents(Composite parent) {

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

+		GridLayout layout = new GridLayout();

+		layout.marginHeight = 0;

+		layout.marginWidth = 0;

+		layout.horizontalSpacing = 0;

+		layout.verticalSpacing = 5;

+		composite.setLayout(layout);

+		

+		date = new DateTime(composite, SWT.CALENDAR | SWT.MEDIUM);

+		

+		time = new DateTime(composite, SWT.TIME);

+		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);

+		time.setLayoutData(gd);

+

+		Object cal = ReqIF10Util.getTheValue(attributeValue);

+		if (cal instanceof GregorianCalendar) {

+			GregorianCalendar calendar = ((GregorianCalendar) cal);

+			date.setDate(calendar.get(Calendar.YEAR),

+					calendar.get(Calendar.DAY_OF_MONTH), Calendar.DAY_OF_MONTH);

+			time.setTime(calendar.get(Calendar.HOUR),

+					calendar.get(Calendar.MINUTE), Calendar.SECOND);

+		}

+

+		return composite;

+	}

+	

+	/**

+	 * This method is overridden to add a read-and-dispatch loop after opening

+	 * the popup. Otherwise, the panel will disappear immediately on Linux.

+	 */

+	@Override

+	protected void openPopupBox(Control parent) {

+		super.openPopupBox(parent);

+

+		// Workaround to prevent shell from closing right after opening on Linux.

+		Display display = Display.getCurrent();

+		Shell shell = display.getActiveShell();

+		shell.pack();

+

+		while (!shell.isDisposed()) {

+			if (!display.readAndDispatch()) {

+				display.sleep();

 			}

 		}

 	}

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrEnumerationMultiValueCellEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrEnumerationMultiValueCellEditor.java
index 9f29b7d..69d1a7f 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrEnumerationMultiValueCellEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrEnumerationMultiValueCellEditor.java
@@ -21,27 +21,14 @@
 import org.eclipse.emf.edit.domain.EditingDomain;

 import org.eclipse.rmf.reqif10.AttributeValueEnumeration;

 import org.eclipse.rmf.reqif10.DatatypeDefinitionEnumeration;

-import org.eclipse.rmf.reqif10.EnumValue;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

+import org.eclipse.rmf.reqif10.pror.editor.presentation.EnumSelector;

 import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.SelectionAdapter;

-import org.eclipse.swt.events.SelectionEvent;

-import org.eclipse.swt.layout.FillLayout;

-import org.eclipse.swt.layout.GridData;

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

-import org.eclipse.swt.widgets.Button;

 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Control;

 import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Table;

-import org.eclipse.swt.widgets.TableItem;

-import org.eclipse.ui.ISharedImages;

-import org.eclipse.ui.PlatformUI;

 

 public class ProrEnumerationMultiValueCellEditor extends PopupCellEditor {

-

-	private ArrayList<EnumValue> itemList = new ArrayList<EnumValue>();

 	private final DatatypeDefinitionEnumeration dde;

 

 	/**

@@ -51,6 +38,7 @@
 	private final EditingDomain editingDomain;

 	private Object parent;

 	private Object affectedObject;

+	private EnumSelector selector;

 

 	public ProrEnumerationMultiValueCellEditor(AgileGrid agileGrid,

 			DatatypeDefinitionEnumeration dde,

@@ -65,70 +53,12 @@
 

 	@Override

 	protected Control createContents(Composite parent) {

-		Composite composite = new Composite(parent, SWT.BORDER_SOLID);

-		GridLayout layout = new GridLayout();

-		layout.marginHeight = 0;

-		layout.marginWidth = 0;

-		layout.horizontalSpacing = 0;

-		layout.verticalSpacing = 5;

-		composite.setLayout(layout);

-		Table table = new Table(composite, SWT.CHECK);

-		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);

-		gd.heightHint = 150;

-		table.setLayoutData(gd);

-		table.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				if (e.detail == SWT.CHECK && e.item instanceof TableItem) {

-					TableItem item = (TableItem) e.item;

-					if (item.getChecked()) {

-						itemList.add((EnumValue) item.getData());

-					} else {

-						itemList.remove((EnumValue) item.getData());

-					}

-				}

-			}

-		});

-

-		for (EnumValue enumValue : dde.getSpecifiedValues()) {

-			TableItem tableItem = new TableItem(table, SWT.NONE);

-			String enumId = enumValue.getLongName() == null ? enumValue.getIdentifier() : enumValue.getLongName();

-			tableItem.setText(enumId);

-			tableItem.setData(enumValue);

-			if (attributeValue.getValues().contains(enumValue)) {

-				tableItem.setChecked(true);

-				itemList.add(enumValue);

-			}

-		}

-

-		Composite buttonPanel = new Composite(composite, SWT.NONE);

-		buttonPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));

-		buttonPanel.setLayout(new FillLayout(SWT.HORIZONTAL));

-		Button cancel = new Button(buttonPanel, SWT.PUSH);

-		cancel.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE));

-		cancel.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				fireCancelEditor();

-			}

-		});

-		

-		Button ok = new Button(buttonPanel, SWT.PUSH);

-		ok.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ETOOL_SAVE_EDIT));

-		ok.addSelectionListener(new SelectionAdapter() {

-			@Override

-			public void widgetSelected(SelectionEvent e) {

-				fireApplyEditorValue();

-			}

-		});

-		return composite;

+		selector = new EnumSelector(dde.getSpecifiedValues(), attributeValue.getValues(), parent, SWT.BORDER_SOLID);

+		return selector;

 	}

 

 	@Override

 	protected Object doGetValue() {

-		if (itemList == null) {

-			return super.doGetValue();

-		}

 

 		CompoundCommand cmd = new CompoundCommand("Set Enumeration") {

 			public java.util.Collection<?> getAffectedObjects() {

@@ -150,7 +80,7 @@
 				.create(editingDomain,

 						attributeValue,

 						ReqIF10Package.Literals.ATTRIBUTE_VALUE_ENUMERATION__VALUES,

-						itemList));

+						selector.getItems()));

 

 		editingDomain.getCommandStack().execute(cmd);

 		return attributeValue;

@@ -166,7 +96,6 @@
 

 	@Override

 	protected void fireCancelEditor() {

-		itemList = null;

 		super.fireCancelEditor();

 	}

 	/**

@@ -176,17 +105,17 @@
 	@Override

 	protected void openPopupBox(Control parent) {

 		super.openPopupBox(parent);

-

-		// Workaround to prevent shell from closing right after opening on Linux.

-		Display display = Display.getCurrent();

-		Shell shell = display.getActiveShell();

-		shell.pack();

-

-		while (!shell.isDisposed()) {

-			if (!display.readAndDispatch()) {

-				display.sleep();

-			}

+		int result = selector.showEnumSelector(Display.getCurrent().getActiveShell());

+		if (result == SWT.CANCEL) {

+			fireCancelEditor();

+		} else {

+			fireApplyEditorValue();

 		}

 	}

-

+	

+	@Override

+	protected void updateLabel(Object value) {

+		super.updateLabel("Select below.");

+	}

+	

 }

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrXhtmlSimplifiedCellEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrXhtmlSimplifiedCellEditor.java
index 323944f..c8b2faf 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrXhtmlSimplifiedCellEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/agilegrid/ProrXhtmlSimplifiedCellEditor.java
@@ -26,9 +26,9 @@
 import org.eclipse.rmf.reqif10.ReqIF10Factory;

 import org.eclipse.rmf.reqif10.ReqIF10Package;

 import org.eclipse.rmf.reqif10.XhtmlContent;

+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.rmf.reqif10.pror.editor.preferences.PreferenceConstants;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10EditorPlugin;

-import org.eclipse.rmf.reqif10.pror.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.rmf.reqif10.xhtml.XhtmlDivType;

 import org.eclipse.swt.widgets.Display;

 

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/EnumSelector.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/EnumSelector.java
new file mode 100644
index 0000000..a95c45d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/EnumSelector.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.pror.editor.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.pror.editor.agilegrid.ProrEnumerationMultiValueCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.ShellAdapter;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * This -Control represents a GUI element that allows the selection of
+ * {@link EnumValue}s. It offers a save and cancel button, and is designed to be
+ * shown in a {@link Shell}.
+ * 
+ * It is written so that it can be used by AgileGrid (see
+ * {@link ProrEnumerationMultiValueCellEditor} or stand-alone (e.g. in a search
+ * interface).
+ * 
+ * IMPORTANT: AgileGrid provides a proper shell, to be used with
+ * {@link #showEnumSelector(Shell)}. Outside AgileGrid, a Shell must be
+ * constructed BEFORE instantiating the control. You can use the static method
+ * {@link #createShell(Shell)} for this purpose.
+ * 
+ * @author jastram
+ */
+public class EnumSelector extends Composite {
+
+	private ArrayList<EnumValue> itemList = new ArrayList<EnumValue>();
+	private int status = SWT.OK;
+	private Collection<EnumValue> originalSelection;
+
+	/**
+	 * Createes the Control.
+	 */
+	public EnumSelector(List<EnumValue> items, Collection<EnumValue> selection,
+			Composite parent, int style) {
+		super(parent, style);
+		originalSelection = selection;
+
+		GridLayout layout = new GridLayout();
+		layout.marginHeight = 0;
+		layout.marginWidth = 0;
+		layout.horizontalSpacing = 0;
+		layout.verticalSpacing = 5;
+		setLayout(layout);
+		Table table = new Table(this, SWT.CHECK);
+		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+		gd.heightHint = 150;
+		table.setLayoutData(gd);
+		table.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (e.detail == SWT.CHECK && e.item instanceof TableItem) {
+					TableItem item = (TableItem) e.item;
+					if (item.getChecked()) {
+						itemList.add((EnumValue) item.getData());
+					} else {
+						itemList.remove((EnumValue) item.getData());
+					}
+				}
+			}
+		});
+
+		for (EnumValue enumValue : items) {
+			TableItem tableItem = new TableItem(table, SWT.NONE);
+			String enumId = enumValue.getLongName() == null ? enumValue
+					.getIdentifier() : enumValue.getLongName();
+			tableItem.setText(enumId);
+			tableItem.setData(enumValue);
+			if (selection.contains(enumValue)) {
+				tableItem.setChecked(true);
+				itemList.add(enumValue);
+			}
+		}
+
+		Composite buttonPanel = new Composite(this, SWT.NONE);
+		buttonPanel
+				.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+		buttonPanel.setLayout(new FillLayout(SWT.HORIZONTAL));
+		Button cancel = new Button(buttonPanel, SWT.PUSH);
+		cancel.setImage(PlatformUI.getWorkbench().getSharedImages()
+				.getImage(ISharedImages.IMG_TOOL_DELETE));
+		cancel.addSelectionListener(new SelectionAdapter() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				status = SWT.CANCEL;
+				Display.getCurrent().getActiveShell().close();
+			}
+		});
+
+		Button ok = new Button(buttonPanel, SWT.PUSH);
+		ok.setImage(PlatformUI.getWorkbench().getSharedImages()
+				.getImage(ISharedImages.IMG_ETOOL_SAVE_EDIT));
+		ok.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				status = SWT.OK;
+				Display.getCurrent().getActiveShell().close();
+			}
+		});
+	}
+
+	/**
+	 * Opens the control. Make sure to get the shell via
+	 * {@link #createShell(Control)}, unless you use this via AgileGrid.
+	 */
+	public int showEnumSelector(Shell shell) {
+		shell.pack();
+
+		while (!shell.isDisposed()) {
+			if (!Display.getCurrent().readAndDispatch()) {
+				Display.getCurrent().sleep();
+			}
+		}
+
+		return status;
+	}
+
+	/**
+	 * Returns the selected items. If the user cancelled, the original,
+	 * unmodified selection will be returned.
+	 */
+	public Collection<EnumValue> getItems() {
+		return status == SWT.OK ? itemList : originalSelection;
+	}
+
+	/**
+	 * Creates a shell that: is positioned below the parent; can be closed via
+	 * ESC; is closed if the user clicks outside, or if the shell loses focus.
+	 * 
+	 * Unless the user cancels explicitly (button), the new values will be
+	 * accepted.
+	 */
+	public static Shell createShell(Control parent) {
+		final Shell shell = new Shell(parent.getShell(), SWT.RESIZE
+				| SWT.ON_TOP);
+		shell.setBackground(parent.getBackground());
+		shell.setLayout(new FillLayout());
+		shell.addKeyListener(new KeyAdapter() {
+			@Override
+			public void keyReleased(KeyEvent e) {
+				if (e.character == SWT.ESC) { // Escape
+					shell.close();
+				}
+			}
+		});
+
+		shell.addShellListener(new ShellAdapter() {
+			@Override
+			public void shellDeactivated(ShellEvent e) {
+				shell.close();
+			}
+		});
+
+		Display display = parent.getDisplay();
+
+		Rectangle clientRect = display.map(parent, null, new Rectangle(0, 0, 0,
+				0));
+		shell.setBounds(clientRect.x, clientRect.y + parent.getBounds().height,
+				0, 0);
+		shell.open();
+		shell.layout();
+		return shell;
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
index c10ab41..50a6bc7 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ActionBarContributor.java
@@ -53,6 +53,7 @@
 import org.eclipse.rmf.reqif10.SpecRelationType;

 import org.eclipse.rmf.reqif10.SpecType;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.AgileCellEditorActionHandler;

 import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;

 import org.eclipse.rmf.reqif10.pror.filter.SimpleStringFilter;

@@ -273,13 +274,13 @@
 		quicksearch = new Text(parent, SWT.SEARCH | SWT.ICON_CANCEL

 				| SWT.ICON_SEARCH);

 		quicksearch.setSize(500, 0);

-		quicksearch.setEnabled(activeEditorPart instanceof SpecificationEditor);

+		quicksearch.setEnabled(activeEditorPart instanceof ISpecificationEditor);

 		quicksearch.addModifyListener(new ModifyListener() {

 

 			public void modifyText(ModifyEvent e) {

-				if (activeEditorPart instanceof SpecificationEditor) {

+				if (activeEditorPart instanceof ISpecificationEditor) {

 					quicksearch.setEnabled(true);

-					SpecificationEditor specEditor = (SpecificationEditor) activeEditor;

+					ISpecificationEditor specEditor = (ISpecificationEditor) activeEditor;

 					final String text = quicksearch.getText();

 					if (text == null || "".equals(text)) {

 						specEditor.setFilter(null);

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
index 7f33750..9a198b0 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10Editor.java
@@ -86,7 +86,6 @@
 import org.eclipse.jface.viewers.IDoubleClickListener;

 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;

@@ -106,6 +105,8 @@
 import org.eclipse.rmf.reqif10.Specification;

 import org.eclipse.rmf.reqif10.XhtmlContent;

 import org.eclipse.rmf.reqif10.pror.configuration.provider.ConfigurationItemProviderAdapterFactory;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationServiceManager;

 import org.eclipse.rmf.reqif10.pror.editor.propertiesview.ProrPropertySheetPage;

 import org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory;

@@ -113,8 +114,8 @@
 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecTypeItemProvider;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.xhtml.provider.XhtmlItemProviderAdapterFactory;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResource;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.custom.CTabFolder;

 import org.eclipse.swt.dnd.DND;

@@ -150,14 +151,14 @@
  * This is an example of a Reqif10 model editor. <!-- begin-user-doc --> We

  * modified the generated Editor as little as possible to keep the benefits of

  * working Code. Note that this Editor doesn't do that much. The

- * {@link SpecificationEditor} is much more important and powerful. It uses some

+ * {@link ISpecificationEditor} is much more important and powerful. It uses some

  * elements from this Editor, however (PropertyView, OutlineView...) <!--

  * end-user-doc -->

  * 

  * @generated

  */

 public class Reqif10Editor extends MultiPageEditorPart implements

-		IEditingDomainProvider, ISelectionProvider, IMenuListener,

+		IReqifEditor, IMenuListener,

 		IViewerProvider, IGotoMarker {

 

 	/**

@@ -1888,4 +1889,16 @@
 		}

 	}

 

+	public ISpecificationEditor openSpecEditor(Specification spec) {

+		ReqifSpecificationEditorInput editorInput = new ReqifSpecificationEditorInput(

+				this, spec);

+		try {

+			return (ISpecificationEditor) IDE.openEditor(getSite().getPage(),

+					editorInput, SpecificationEditor.EDITOR_ID, false);

+		} catch (PartInitException e) {

+			throw new RuntimeException(e);

+		}

+	}

+	

+

 }

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
index a207273..2d6b79b 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/Reqif10ModelWizard.java
@@ -25,8 +25,6 @@
 import java.util.StringTokenizer;

 import java.util.UUID;

 

-import javax.xml.datatype.XMLGregorianCalendar;

-

 import org.eclipse.core.resources.IContainer;

 import org.eclipse.core.resources.IFile;

 import org.eclipse.core.resources.IFolder;

@@ -73,8 +71,7 @@
 import org.eclipse.rmf.reqif10.pror.provider.Reqif10EditPlugin;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.events.ModifyEvent;

 import org.eclipse.swt.events.ModifyListener;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
index d88eff0..9b83ae6 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifMainForm.java
@@ -32,6 +32,7 @@
 import org.eclipse.rmf.reqif10.ReqIFContent;
 import org.eclipse.rmf.reqif10.ReqIFHeader;
 import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;
 import org.eclipse.rmf.reqif10.pror.provider.ReqIFContentItemProvider;
 import org.eclipse.rmf.reqif10.pror.provider.VirtualSpecificationsItemProvider;
 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;
@@ -40,9 +41,6 @@
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.forms.events.ExpansionAdapter;
 import org.eclipse.ui.forms.events.ExpansionEvent;
 import org.eclipse.ui.forms.widgets.FormToolkit;
@@ -50,7 +48,6 @@
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
-import org.eclipse.ui.ide.IDE;
 
 /**
  * 
@@ -67,13 +64,13 @@
 
 	private final ReqIF reqif;
 
-	private final Reqif10Editor reqifEditor;
+	private final IReqifEditor reqifEditor;
 
 	private ComposedAdapterFactory getAdapterFactory() {
 		return (ComposedAdapterFactory) reqifEditor.getAdapterFactory();
 	}
 
-	public ReqifMainForm(Composite parent, Reqif10Editor rifEditor) {
+	public ReqifMainForm(Composite parent, IReqifEditor rifEditor) {
 
 		this.reqifEditor = rifEditor;
 		this.reqif = rifEditor.getReqif();
@@ -178,7 +175,7 @@
 				Object element = ((IStructuredSelection) event.getSelection())
 						.getFirstElement();
 				if (element instanceof Specification) {
-					openSpec((Specification) element);
+					reqifEditor.openSpecEditor((Specification) element);
 				}
 			}
 		});
@@ -305,18 +302,6 @@
 		return form;
 	}
 
-	private void openSpec(Specification spec) {
-		try {
-			IWorkbenchPage page = PlatformUI.getWorkbench()
-					.getActiveWorkbenchWindow().getActivePage();
-			ReqifSpecificationEditorInput editorInput = new ReqifSpecificationEditorInput(
-					reqifEditor, spec);
-			IDE.openEditor(page, editorInput, SpecificationEditor.EDITOR_ID);
-		} catch (PartInitException e) {
-			e.printStackTrace();
-		}
-	}
-
 	private String getString(String key) {
 		return Reqif10EditorPlugin.INSTANCE.getString(key);
 	}
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifSpecificationEditorInput.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifSpecificationEditorInput.java
index 8ed4c3a..3deb0d1 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifSpecificationEditorInput.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/ReqifSpecificationEditorInput.java
@@ -13,6 +13,7 @@
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;

 import org.eclipse.jface.resource.ImageDescriptor;

 import org.eclipse.rmf.reqif10.Specification;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

 import org.eclipse.ui.IEditorInput;

 import org.eclipse.ui.IPersistableElement;

@@ -25,16 +26,16 @@
 

 

 	private final Specification spec;

-	private final Reqif10Editor rifEditor;

+	private final IReqifEditor reqifEditor;

 

-	public ReqifSpecificationEditorInput(Reqif10Editor rifEditor,

+	public ReqifSpecificationEditorInput(IReqifEditor rifEditor,

 			Specification spec) {

-		this.rifEditor = rifEditor;

+		this.reqifEditor = rifEditor;

 		this.spec = spec;

 	}

 

-	public Reqif10Editor getReqifEditor() {

-		return rifEditor;

+	public IReqifEditor getReqifEditor() {

+		return reqifEditor;

 	}

 

 	public Specification getSpec() {

@@ -67,7 +68,7 @@
 	 * @see org.eclipse.ui.IEditorInput#getName()

 	 */

 	public String getName() {

-		ItemProviderAdapter ip = ProrUtil.getItemProvider(rifEditor.getAdapterFactory(), spec);

+		ItemProviderAdapter ip = ProrUtil.getItemProvider(reqifEditor.getAdapterFactory(), spec);

 		return ip.getText(spec);

 	}

 

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
index a4ecbd3..3164089 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/presentation/SpecificationEditor.java
@@ -24,8 +24,8 @@
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
 import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
@@ -36,10 +36,12 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.rmf.reqif10.ReqIF;
 import org.eclipse.rmf.reqif10.ReqIF10Package;
 import org.eclipse.rmf.reqif10.SpecHierarchy;
 import org.eclipse.rmf.reqif10.SpecRelation;
 import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;
 import org.eclipse.rmf.reqif10.pror.editor.actions.SpecificationWebPrintAction;
 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.ProrAgileGrid;
 import org.eclipse.rmf.reqif10.pror.editor.agilegrid.ProrAgileGridViewer;
@@ -63,7 +65,7 @@
  * @author Michael Jastram
  */
 public class SpecificationEditor extends EditorPart implements
-		IEditingDomainProvider, IMenuListener {
+		ISpecificationEditor, IMenuListener {
 
 	public static final String EDITOR_ID = "org.eclipse.rmf.reqif10.pror.SpecificationEditor";
 
@@ -107,7 +109,7 @@
 		}
 
 		// Extracting Info from the input
-		reqifEditor = ((ReqifSpecificationEditorInput) input).getReqifEditor();
+		reqifEditor = (Reqif10Editor) ((ReqifSpecificationEditorInput) input).getReqifEditor();
 		specification = ((ReqifSpecificationEditorInput) input).getSpec();
 
 		reqifActionBarContributor = (Reqif10ActionBarContributor) site
@@ -160,6 +162,10 @@
 		}
 		buildContextMenu();
 	}
+	
+	public Specification getSpecification() {
+		return specification;
+	}
 
 	/**
 	 * Registers a command stack listener that updates the save state and
@@ -365,7 +371,7 @@
 	}
 
 	/**
-	 * @return true
+	 * Only allowed from main editor.
 	 */
 	@Override
 	public boolean isSaveAsAllowed() {
@@ -456,16 +462,41 @@
 		return false;
 	}
 
-	public Reqif10ActionBarContributor getReqifActionBarContributor() {
-		return reqifActionBarContributor;
+	public void setFilter(ReqifFilter filter) {
+		prorAgileGridViewer.setFilter(filter);
+	}
+
+	public ReqIF getReqif() {
+		return reqifEditor.getReqif();
 	}
 
 	public AdapterFactory getAdapterFactory() {
 		return reqifEditor.getAdapterFactory();
 	}
 
-	public void setFilter(ReqifFilter filter) {
-		prorAgileGridViewer.setFilter(filter);
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return reqifEditor.getActionBarContributor();
+	}
+
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		reqifEditor.addSelectionChangedListener(listener);
+	}
+
+	public ISelection getSelection() {
+		return reqifEditor.getSelection();
+	}
+
+	public void removeSelectionChangedListener(
+			ISelectionChangedListener listener) {
+		reqifEditor.removeSelectionChangedListener(listener);
+	}
+
+	public void setSelection(ISelection selection) {
+		reqifEditor.setSelection(selection);
+	}
+
+	public ISpecificationEditor openSpecEditor(Specification spec) {
+		return reqifEditor.openSpecEditor(spec);
 	}
 
 }
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyCellRenderer.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyCellRenderer.java
index 3ad62bf..b55da14 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyCellRenderer.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyCellRenderer.java
@@ -25,6 +25,7 @@
 import org.eclipse.rmf.reqif10.pror.editor.propertiesview.ProrPropertyContentProvider.PropertyRow;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

+import org.eclipse.swt.graphics.Color;

 import org.eclipse.swt.graphics.GC;

 import org.eclipse.swt.graphics.Rectangle;

 

@@ -88,6 +89,23 @@
 			}

 		}

 

+		// Prevent Scrolling becoming impossible by truncating large cells vertically.

+		int tableSize = agileGrid.getSize().y;

+		if (newRowHeight > (tableSize * .5)) {

+			newRowHeight = (int) (tableSize * .5);

+			Color oldForeground = gc.getForeground();

+			Color oldBackground = gc.getBackground();

+			

+			gc.setBackground(COLOR_BACKGROUND);

+			gc.setForeground(COLOR_LINE_LIGHTGRAY);

+			gc.fillRectangle(rect.x, rect.y + newRowHeight + 4 - 20, rect.width, 20);

+			gc.setForeground(COLOR_RED);

+			gc.drawLine(rect.x, rect.y + newRowHeight + 4 - 20, rect.x + rect.width, rect.y + newRowHeight + 4 - 20);

+			gc.drawText("Truncated", rect.x + 5, rect.y + newRowHeight - 15);

+			gc.setForeground(oldForeground);

+			gc.setBackground(oldBackground);

+		}

+

 		// Set the correct row height

 		if (newRowHeight < 18) // The row height should be at least 18

 			newRowHeight = initRowHeight;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyContentProvider.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyContentProvider.java
index 72d451b..dce0207 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyContentProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertyContentProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 Formal Mind GmbH, University of Duesseldorf and others.
+ * Copyright (c) 2014, 2015 Formal Mind GmbH, University of Duesseldorf and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,7 +21,6 @@
 import org.agilemore.agilegrid.AbstractContentProvider;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor.PropertyValueWrapper;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
@@ -101,11 +100,6 @@
 		return getRows().get(row);
 	}
 
-	public IItemLabelProvider getItemLabelProvider(int row) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 	public void setContent(Object content) {
 		this.content = content;
 		rows = null;
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
index 60f39eb..96d8fd8 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/propertiesview/ProrPropertySheetPage.java
@@ -35,8 +35,8 @@
 import org.eclipse.jface.viewers.StructuredSelection;

 import org.eclipse.rmf.reqif10.AttributeValue;

 import org.eclipse.rmf.reqif10.Identifiable;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10EditorPlugin;

-import org.eclipse.rmf.reqif10.pror.editor.presentation.SpecificationEditor;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Control;

@@ -184,7 +184,7 @@
 

 	/**

 	 * This method is called if a selection was changed in the

-	 * {@link SpecificationEditor}.

+	 * {@link ISpecificationEditor}.

 	 */

 	public void selectionChanged(IWorkbenchPart part, ISelection selection) {

 		EditingDomain newEditingDomain = null;

diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/HTMLPrinter.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/HTMLPrinter.java
new file mode 100644
index 0000000..3ac7750
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/HTMLPrinter.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.pror.editor.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.util.GregorianCalendar;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.rmf.reqif10.AttributeValue;
+import org.eclipse.rmf.reqif10.DatatypeDefinition;
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.SpecHierarchy;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.XhtmlContent;
+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10XhtmlUtil;
+import org.eclipse.rmf.reqif10.pror.configuration.Column;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;
+import org.eclipse.rmf.reqif10.pror.editor.presentation.service.IProrCellRenderer;
+import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationEditorInterface;
+import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;
+import org.eclipse.rmf.reqif10.pror.util.ProrUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import com.google.common.io.Files;
+
+/**
+ * Once instantiated, it can produce a folder with HTML for the given
+ * Specification.
+ * 
+ * @author jastram
+ */
+public class HTMLPrinter {
+
+	private Specification spec;
+	private AdapterFactory adapterFactory;
+	private File sourceFolder;
+	private ProrSpecViewConfiguration config;
+	private File targetFolder;
+
+	/**
+	 * Constructs an HTMLPriter..
+	 */
+	public HTMLPrinter(Specification spec, EditingDomain domain,
+			AdapterFactory adapterFactory) {
+		this.spec = spec;
+		this.adapterFactory = adapterFactory;
+
+		this.sourceFolder = new File(CommonPlugin.resolve(spec.eResource().getURI())
+				.trimSegments(1).toFileString());
+		this.config = ConfigurationUtil.createSpecViewConfiguration(spec,
+				domain);
+	}
+
+	/**
+	 * Produces a File representing the spec that this object was constructed with, 
+	 * located in a temporary folder that also contains related images, if any.
+	 */
+	public File print() throws IOException {
+
+		targetFolder = createTempFolder();
+
+		// Build the HTML
+		StringBuilder html = new StringBuilder();
+		createHtmlHeader(html);
+		html.append("<table>");
+		createRowHeader(html);
+
+		printRecursive(html, 0, spec.getChildren());
+		html.append("</table>");
+
+		// Write the HTML
+		File htmlFile = new File(targetFolder, spec.getIdentifier() + ".html");
+		OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(htmlFile),Charset.forName("UTF-8").newEncoder());
+		writer.write(html.toString());
+		writer.close();
+		htmlFile.deleteOnExit();
+
+		return htmlFile;
+	}
+
+	/**
+	 * Builds the header row.
+	 * @return
+	 */
+	private void createRowHeader(StringBuilder html) {
+		
+		html.append("<tr>");
+		EList<Column> cols = config.getColumns();
+		for (Column col : cols) {
+			html.append("<td><b>" + col.getLabel() + "</b></td>");
+		}
+		html.append("</tr>\n");
+	}
+
+	/**
+	 * Creates a temporary folder for the spec.  Note that currently there is no cleanup.
+	 */
+	private File createTempFolder() throws IOException {
+		File targetFolder = File.createTempFile("pror-", "");
+		targetFolder.delete();
+		targetFolder = new File(targetFolder.getAbsolutePath() + "/");
+		targetFolder.mkdir();
+		return targetFolder;
+	}
+
+	private void createHtmlHeader(StringBuilder html) {
+		String title = ConfigurationUtil.getSpecElementLabel(spec,
+				adapterFactory);
+		html.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n");
+		html.append("<html>\n");
+		html.append("<head>\n");
+		html.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
+		html.append("<meta name=\"GENERATOR\" content=\"ProR (www.pror.org)\">\n");
+		html.append("<title>" + title + "</title>\n");
+		html.append("<style type=\"text/css\">\n");
+		html.append("body {font-family: Arial, sans-serif;}\n");
+		html.append("h1 {text-align: center;}\n");
+		html.append("table, th, td { border-bottom: 1px solid #cccccc; }\n");
+		html.append("td { padding: 2pt; }\n");
+		html.append("table { border-collapse: collapse; }");
+		html.append("</style>\n");
+		html.append("</head>\n\n");
+		html.append("<body>\n");
+		html.append("<h1>" + title + "</h1>\n");
+	}
+
+	private void printRecursive(StringBuilder html, int indent,
+			EList<SpecHierarchy> children) {
+		for (SpecHierarchy child : children) {
+			if (child.getObject() != null) {
+				SpecObject specObject = child.getObject();
+				boolean first = true;
+				html.append("<tr>");
+				for (Column col : config.getColumns()) {
+					html.append("<td valign='top'>");
+
+					// Handle indenting
+					if (first) {
+						html.append("<div style='margin-left: " + (indent * 20)
+								+ "px;'>");
+					}
+
+					AttributeValue av;
+					if (col instanceof UnifiedColumn) {
+						av = ReqIF10Util.getAttributeValueForLabel(specObject,
+								"ReqIF.Text");
+						if (av == null || ReqIF10Util.getTheValue(av) == null) {
+							av = ReqIF10Util.getAttributeValueForLabel(
+									specObject, "ReqIF.ChapterName");
+						}
+					} else {
+						av = ReqIF10Util.getAttributeValueForLabel(specObject,
+								col.getLabel());
+					}
+					DatatypeDefinition dd = ReqIF10Util
+							.getDatatypeDefinition(av);
+					ProrPresentationConfiguration configuration = ConfigurationUtil
+							.getPresentationConfiguration(dd);
+
+					Object itemProvider = ProrUtil.getItemProvider(
+							adapterFactory, configuration);
+
+					if (itemProvider instanceof PresentationEditorInterface) {
+						PresentationEditorInterface presentationEditor = (PresentationEditorInterface) itemProvider;
+						IProrCellRenderer renderer = presentationEditor
+								.getCellRenderer(av);
+						if (renderer != null) {
+							String content = renderer.doDrawHtmlContent(av);
+							if (content != null) {
+								html.append(content);
+							} else {
+								html.append(getValueAsString(av));
+							}
+						}
+
+					} else {
+						html.append(getValueAsString(av));
+					}
+
+					if (first) {
+						first = false;
+						html.append("</div>");
+					}
+					html.append("</td>");
+				}
+				html.append("</tr>\n");
+			}
+			printRecursive(html, indent + 1, child.getChildren());
+		}
+	}
+
+	private String getValueAsString(AttributeValue av) {
+		Object value = av == null ? null : ReqIF10Util.getTheValue(av);
+		if (value == null) {
+			return "";
+		} else if (value instanceof List<?>) {
+			return listAsString(value);
+		} else if (value instanceof XhtmlContent) {
+			return xhtmlAsString((XhtmlContent)value);
+		} else if (value instanceof GregorianCalendar) {
+			GregorianCalendar cal = (GregorianCalendar) value;
+			SimpleDateFormat formatter = new SimpleDateFormat(
+					"yyyy-MMM-dd hh:mm:ss z");
+			return formatter.format(cal.getTime());
+		} else {
+			return value.toString();
+		}
+	}
+
+	private String xhtmlAsString(XhtmlContent xhtmlContent) {
+		String textValue = ProrXhtmlSimplifiedHelper
+				.xhtmlToSimplifiedString(xhtmlContent);
+		try {
+			String xhtmlString = ReqIF10XhtmlUtil
+					.getXhtmlString(xhtmlContent);
+			xhtmlString = xhtmlString.replace("<xhtml:", "<");
+			xhtmlString = xhtmlString.replace("</xhtml:", "</");
+			textValue = xhtmlString;
+			
+			// Find and extract embedded images.
+			Document dom = ReqIF10XhtmlUtil.getXhtmlDom(xhtmlContent);
+			NodeList tags = dom.getElementsByTagName("xhtml:object");
+			for (int i = 0; i < tags.getLength(); i++) {
+				Node xhtmlNode = tags.item(i);
+				Node dataNode = xhtmlNode.getAttributes().getNamedItem("data");
+				if (dataNode != null) {
+					String filename = dataNode.getTextContent();
+					copyEmbeddedObject(filename);
+				}
+			}
+			
+			
+		} catch (IOException e) {
+		}
+		return textValue;
+	}
+
+	/**
+	 * Copy the source file identified by the given filename. This method may
+	 * fail silently to prevent interuption of the HTML printing.
+	 */
+	private void copyEmbeddedObject(String filename) {
+		File fullSourceFolder = sourceFolder;
+		File fullTargetFolder = targetFolder;
+
+		StringTokenizer st = new StringTokenizer(filename, "/");
+		String token = null;
+		while (st.hasMoreTokens()) {
+			token = st.nextToken();
+			if (! st.hasMoreTokens()) break;
+			fullSourceFolder = new File (fullSourceFolder, token);
+			fullTargetFolder = new File(fullTargetFolder, token);
+			fullTargetFolder.mkdir();
+		}
+		
+		File source = new File(fullSourceFolder, token);
+		File target = new File(fullTargetFolder, token);
+		try {
+			Files.copy(source, target);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private String listAsString(Object value) {
+		String textValue = "";
+		for (Iterator<?> i = ((List<?>) ((List<?>) value)).iterator(); i
+				.hasNext();) {
+			EnumValue enumValue = (EnumValue) i.next();
+			textValue += enumValue.getLongName();
+			if (i.hasNext()) {
+				textValue += ", ";
+			}
+		}
+		return textValue;
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
index 546eeaa..0e8ea48 100644
--- a/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
+++ b/org.eclipse.rmf.reqif10.pror.editor/src/org/eclipse/rmf/reqif10/pror/editor/util/ProrEditorUtil.java
@@ -11,7 +11,9 @@
 package org.eclipse.rmf.reqif10.pror.editor.util;

 

 import java.io.IOException;

+import java.text.SimpleDateFormat;

 import java.util.ArrayList;

+import java.util.GregorianCalendar;

 import java.util.Iterator;

 import java.util.List;

 

@@ -19,24 +21,33 @@
 import org.eclipse.emf.common.command.CommandWrapper;

 import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.common.util.EList;

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

 import org.eclipse.emf.edit.domain.EditingDomain;

 import org.eclipse.rmf.reqif10.AttributeValue;

 import org.eclipse.rmf.reqif10.DatatypeDefinition;

 import org.eclipse.rmf.reqif10.EnumValue;

+import org.eclipse.rmf.reqif10.ReqIF;

 import org.eclipse.rmf.reqif10.SpecHierarchy;

 import org.eclipse.rmf.reqif10.SpecObject;

 import org.eclipse.rmf.reqif10.Specification;

 import org.eclipse.rmf.reqif10.XhtmlContent;

+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;

 import org.eclipse.rmf.reqif10.common.util.ReqIF10XhtmlUtil;

 import org.eclipse.rmf.reqif10.pror.configuration.Column;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

 import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.IProrCellRenderer;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.service.PresentationEditorInterface;

 import org.eclipse.rmf.reqif10.pror.util.ConfigurationUtil;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

-import org.eclipse.rmf.reqif10.pror.util.ProrXhtmlSimplifiedHelper;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IEditorReference;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.PlatformUI;

 

 public class ProrEditorUtil {

 

@@ -45,7 +56,7 @@
 		StringBuilder sb = new StringBuilder();

 		String title = ConfigurationUtil.getSpecElementLabel(spec,

 				adapterFactory);

-

+		

 		sb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n");

 		sb.append("<html>\n");

 		sb.append("<head>\n");

@@ -92,6 +103,10 @@
 				textValue = xhtmlString;

 			} catch (IOException e) {

 			}

+		} else if (value instanceof GregorianCalendar) {

+			GregorianCalendar cal = (GregorianCalendar)value;

+			SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MMM-dd hh:mm:ss z");  

+			textValue = formatter.format(cal.getTime());

 		} else {

 			textValue = value.toString();

 		}

@@ -115,8 +130,19 @@
 						html.append("<div style='margin-left: " + (indent * 20)

 								+ "px;'>");

 					}

-					AttributeValue av = ReqIF10Util.getAttributeValueForLabel(

-							specObject, col.getLabel());

+					

+					AttributeValue av;

+					if (col instanceof UnifiedColumn) {

+						av = ReqIF10Util.getAttributeValueForLabel(

+								specObject, "ReqIF.Text");

+						if (av == null || ReqIF10Util.getTheValue(av) == null) {

+							av = ReqIF10Util.getAttributeValueForLabel(

+									specObject, "ReqIF.ChapterName");							

+						}

+					} else {

+						av = ReqIF10Util.getAttributeValueForLabel(

+								specObject, col.getLabel());

+					}

 					DatatypeDefinition dd = ReqIF10Util

 							.getDatatypeDefinition(av);

 					ProrPresentationConfiguration configuration = ConfigurationUtil

@@ -190,4 +216,59 @@
 		};

 	}

 	

+	/**

+	 * Attempts to find the {@link IReqifEditor} or {@link ISpecificationEditor}

+	 * for the given EObject by walking up the parent hierarchy to the enclosing

+	 * {@link ReqIF} or {@link Specification}. If the {@link IReqifEditor} is

+	 * found for a Specification, the corresponding editor will be opened.

+	 * 

+	 * @return the Editor or null if none found.

+	 */

+	public static IEditorPart getEditor(EObject eObject) {

+		ReqIF reqif = null;

+		Specification spec = null;

+		while (eObject != null) {

+			if (eObject instanceof Specification) {

+				spec = (Specification) eObject;

+			}

+			if (eObject instanceof ReqIF) {

+				reqif = (ReqIF) eObject;

+				break;

+			}

+			eObject = eObject.eContainer();

+		}

+		if (reqif == null) return null;

+		

+		// Find the editor(s)

+		IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()

+				.getActivePage();

+

+		IEditorReference[] eRefs = activePage.getEditorReferences();

+		for (IEditorReference eRef : eRefs) {

+			IEditorPart editor = eRef.getEditor(false);

+			if (editor instanceof ISpecificationEditor) {

+				ISpecificationEditor specEditor = (ISpecificationEditor) editor;

+

+				// Case 1: We found the right SpecificationEditor

+				if (specEditor.getSpecification().equals(spec)) {

+					return specEditor;

+				}

+			}

+			if (editor instanceof IReqifEditor) {

+				IReqifEditor reqifEditor = (IReqifEditor) editor;

+				if (reqifEditor.getReqif().equals(reqif)) {

+					

+					// Case 2: We found the right Reqif10Editor

+					if (spec == null) return reqifEditor;

+					

+					// Case 3: We found the Reqif10Editor, but need the SpecificationEditor

+					return reqifEditor.openSpecEditor(spec);

+				}

+			}

+		}

+		// Case 4: Nothing found

+		return null;		

+	}

+

+	

 }

diff --git a/org.eclipse.rmf.reqif10.pror.genhtml/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.pror.genhtml/META-INF/MANIFEST.MF
index 977ea8a..e726b6a 100644
--- a/org.eclipse.rmf.reqif10.pror.genhtml/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.pror.genhtml/META-INF/MANIFEST.MF
@@ -7,12 +7,12 @@
 Bundle-Activator: org.eclipse.rmf.reqif10.pror.genhtml.Activator
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.rmf.reqif10;bundle-version="0.9.0",
- org.eclipse.rmf.serialization;bundle-version="0.9.0",
  org.eclipse.rmf.reqif10.pror.presentation.headline;bundle-version="0.9.0",
  org.eclipse.rmf.reqif10.pror.presentation.id;bundle-version="0.9.0",
  org.eclipse.rmf.reqif10.pror.presentation.linewrap;bundle-version="0.9.0",
  org.eclipse.rmf.reqif10.pror.editor;bundle-version="0.9.0",
- org.eclipse.rmf.reqif10.serialization;bundle-version="0.9.0"
+ org.eclipse.rmf.reqif10.serialization;bundle-version="0.9.0",
+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %providerName
diff --git a/org.eclipse.rmf.reqif10.pror.genhtml/src/org/eclipse/rmf/reqif10/pror/genhtml/GenerateHtml.java b/org.eclipse.rmf.reqif10.pror.genhtml/src/org/eclipse/rmf/reqif10/pror/genhtml/GenerateHtml.java
index 27403de..ee07cdf 100644
--- a/org.eclipse.rmf.reqif10.pror.genhtml/src/org/eclipse/rmf/reqif10/pror/genhtml/GenerateHtml.java
+++ b/org.eclipse.rmf.reqif10.pror.genhtml/src/org/eclipse/rmf/reqif10/pror/genhtml/GenerateHtml.java
@@ -38,7 +38,7 @@
 import org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceImpl;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;

 

 /**

  * Standalone-executable class that is used to non-interactively generate HTML

diff --git a/org.eclipse.rmf.reqif10.pror.presentation.id/src/org/eclipse/rmf/reqif10/pror/presentation/id/provider/IdConfigurationItemProvider.java b/org.eclipse.rmf.reqif10.pror.presentation.id/src/org/eclipse/rmf/reqif10/pror/presentation/id/provider/IdConfigurationItemProvider.java
index 7c817c2..cda07f5 100644
--- a/org.eclipse.rmf.reqif10.pror.presentation.id/src/org/eclipse/rmf/reqif10/pror/presentation/id/provider/IdConfigurationItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.presentation.id/src/org/eclipse/rmf/reqif10/pror/presentation/id/provider/IdConfigurationItemProvider.java
@@ -60,12 +60,14 @@
  * This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.pror.presentation.id.IdConfiguration} object.

  * <!-- begin-user-doc -->

  * <!-- end-user-doc -->

- * @generated

+ * @generated NOT

  */

 public class IdConfigurationItemProvider

 	extends ProrPresentationConfigurationItemProvider

 	implements

-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {

+		IEditingDomainItemProvider, IStructuredItemContentProvider,

+		ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource,

+		PresentationEditorInterface {

 	/**

 	 * This constructs an instance from a factory and a notifier.

 	 * <!-- begin-user-doc -->

diff --git a/org.eclipse.rmf.reqif10.pror.tests/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.pror.tests/META-INF/MANIFEST.MF
index e36c9aa..d57dd96 100644
--- a/org.eclipse.rmf.reqif10.pror.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.pror.tests/META-INF/MANIFEST.MF
@@ -9,14 +9,14 @@
  org.eclipse.ui,

  org.eclipse.core.resources,

  org.eclipse.core.runtime,

- org.eclipse.rmf.serialization;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.pror.editor;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.pror.presentation.headline;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.pror.presentation.id;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.pror.presentation.linewrap;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.xhtml;bundle-version="0.9.0",

  org.eclipse.rmf.reqif10.serialization;bundle-version="0.9.0",

- org.eclipse.rmf.ext.prostep

+ org.eclipse.rmf.ext.prostep,

+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"

 Bundle-Vendor: %providerName

 Export-Package: org.eclipse.rmf.reqif10.pror.configuration.provider,or

  g.eclipse.rmf.reqif10.pror.testdata,org.eclipse.rmf.reqif10.pror.test

diff --git a/org.eclipse.rmf.reqif10.pror.tests/src/org/eclipse/rmf/reqif10/pror/testframework/AbstractItemProviderTest.java b/org.eclipse.rmf.reqif10.pror.tests/src/org/eclipse/rmf/reqif10/pror/testframework/AbstractItemProviderTest.java
index 996ce86..9b2c93e 100644
--- a/org.eclipse.rmf.reqif10.pror.tests/src/org/eclipse/rmf/reqif10/pror/testframework/AbstractItemProviderTest.java
+++ b/org.eclipse.rmf.reqif10.pror.tests/src/org/eclipse/rmf/reqif10/pror/testframework/AbstractItemProviderTest.java
@@ -46,7 +46,7 @@
 import org.eclipse.rmf.reqif10.pror.testdata.TestData;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;

 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceImpl;

-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;

+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;

 import org.junit.After;

 import org.junit.Before;

 

diff --git a/org.eclipse.rmf.reqif10.pror/model/HOW_TO_GENERATE.txt b/org.eclipse.rmf.reqif10.pror/model/HOW_TO_GENERATE.txt
index 3169777..77c0830 100644
--- a/org.eclipse.rmf.reqif10.pror/model/HOW_TO_GENERATE.txt
+++ b/org.eclipse.rmf.reqif10.pror/model/HOW_TO_GENERATE.txt
@@ -12,6 +12,7 @@
 

   a. Select "Configuration"

   b. Right-Click "Generate Model Code"

+  c. Remove Package Exports that produce errors.

 

 2. Configuration ItemProviders

 

diff --git a/org.eclipse.rmf.reqif10.pror/model/configuration.ecore b/org.eclipse.rmf.reqif10.pror/model/configuration.ecore
index bb13bcf..b2724f6 100644
--- a/org.eclipse.rmf.reqif10.pror/model/configuration.ecore
+++ b/org.eclipse.rmf.reqif10.pror/model/configuration.ecore
@@ -52,7 +52,8 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ProrSpecViewConfiguration">
     <eStructuralFeatures xsi:type="ecore:EReference" name="specification" lowerBound="1"
-        eType="ecore:EClass ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//Specification" unsettable="true"/>
+        eType="ecore:EClass ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//Specification"
+        unsettable="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="columns" upperBound="-1"
         eType="#//Column" unsettable="true" containment="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -110,7 +111,8 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ProrPresentationConfiguration" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" lowerBound="1"
-        eType="ecore:EClass ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//DatatypeDefinition" unsettable="true"/>
+        eType="ecore:EClass ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//DatatypeDefinition"
+        unsettable="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ProrGeneralConfiguration">
     <eStructuralFeatures xsi:type="ecore:EReference" name="labelConfiguration" lowerBound="1"
@@ -133,4 +135,5 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultLabel" upperBound="-1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" unsettable="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="UnifiedColumn" eSuperTypes="#//Column"/>
 </ecore:EPackage>
diff --git a/org.eclipse.rmf.reqif10.pror/model/reqif10.genmodel b/org.eclipse.rmf.reqif10.pror/model/reqif10.genmodel
index 2f838e5..e2ea888 100644
--- a/org.eclipse.rmf.reqif10.pror/model/reqif10.genmodel
+++ b/org.eclipse.rmf.reqif10.pror/model/reqif10.genmodel
@@ -3,10 +3,11 @@
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.rmf.reqif10.pror/src" creationIcons="false"
     modelPluginID="org.eclipse.rmf.reqif10.pror" modelName="Configuration" editPluginClass="org.eclipse.rmf.reqif10.pror.provider.Reqif10EditPlugin"
     importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0" copyrightFields="false"
-    usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/XMLNamespace.genmodel#//namespace">
+    usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/XMLNamespace.genmodel#//namespace"
+    importOrganizing="true">
   <foreignModel>configuration.ecore</foreignModel>
-  <genPackages prefix="Configuration" basePackage="org.eclipse.rmf.reqif10.pror" resource="XML"
-      disposableProviderFactory="true" ecorePackage="configuration.ecore#/">
+  <genPackages prefix="Configuration" basePackage="org.eclipse.rmf.reqif10.pror" disposableProviderFactory="true"
+      fileExtensions="" ecorePackage="configuration.ecore#/">
     <genClasses image="false" ecoreClass="configuration.ecore#//ProrToolExtension">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference configuration.ecore#//ProrToolExtension/specViewConfigurations"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference configuration.ecore#//ProrToolExtension/generalConfiguration"/>
@@ -33,9 +34,11 @@
     <genClasses image="false" ecoreClass="configuration.ecore#//LabelConfiguration">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute configuration.ecore#//LabelConfiguration/defaultLabel"/>
     </genClasses>
+    <genClasses image="false" ecoreClass="configuration.ecore#//UnifiedColumn"/>
   </genPackages>
-  <genPackages prefix="ReqIF10" basePackage="org.eclipse.rmf" resource="XML" disposableProviderFactory="true"
-      providerPackageSuffix="pror.provider" ecorePackage="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#/">
+  <genPackages prefix="ReqIF10" basePackage="org.eclipse.rmf" disposableProviderFactory="true"
+      providerPackageSuffix="pror.provider" fileExtensions="" ecorePackage="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#/">
+    <genDataTypes ecoreDataType="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//DateTime"/>
     <genDataTypes ecoreDataType="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//ID"/>
     <genClasses image="false" ecoreClass="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//AccessControlledElement">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//AccessControlledElement/editable"/>
@@ -217,6 +220,7 @@
     </genClasses>
     <genClasses image="false" ecoreClass="../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//XhtmlContent">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//XhtmlContent/xhtml"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ../../org.eclipse.rmf.reqif10/model/reqif10.ecore#//XhtmlContent/xhtmlSource"/>
     </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/org.eclipse.rmf.reqif10.pror/plugin.xml b/org.eclipse.rmf.reqif10.pror/plugin.xml
index c771e21..3572a00 100644
--- a/org.eclipse.rmf.reqif10.pror/plugin.xml
+++ b/org.eclipse.rmf.reqif10.pror/plugin.xml
@@ -26,6 +26,8 @@
             class="org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage"

             genModel="model/reqif10.genmodel"/>

    </extension>

+

+

    <extension

          point="org.eclipse.ui.intro">

       <intro

@@ -77,7 +79,7 @@
          </property>

          <property

                name="aboutText"

-               value="ProR - Requirements Management Platform&#x0A;&#x0A;part of the &#x0A;&#x0A;Eclipse Requirements Management Framework (RMF)&#x0A;&#x0A;Version: (Incubation Submission)&#x0A;&#x0A;(c) Copyright Formal Mind GmbH, itemis AG and others 2011.  All rights reserved.&#x0A;Visit http://eclipse.org/rmf">

+               value="ProR - Requirements Management Platform&#x0A;&#x0A;part of the &#x0A;&#x0A;Eclipse Requirements Management Framework (RMF)&#x0A;&#x0A;Version: (Incubation Submission)&#x0A;&#x0A;(c) Copyright Formal Mind GmbH, itemis AG and others 2011-2014.  All rights reserved.&#x0A;Visit http://eclipse.org/rmf">

          </property>

       </product>

    </extension>

diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/Column.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/Column.java
index 61be870..1d818f3 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/Column.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/Column.java
@@ -1,142 +1,133 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

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

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Column</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn()

- * @model

- * @generated

- */

-public interface Column extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Label</b></em>' attribute.

-	 * The default value is <code>"<PLEASE SET LABEL>"</code>.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Label</em>' attribute isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Label</em>' attribute.

-	 * @see #isSetLabel()

-	 * @see #unsetLabel()

-	 * @see #setLabel(String)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn_Label()

-	 * @model default="<PLEASE SET LABEL>" unsettable="true" required="true"

-	 * @generated

-	 */

-	String getLabel();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Label</em>' attribute.

-	 * @see #isSetLabel()

-	 * @see #unsetLabel()

-	 * @see #getLabel()

-	 * @generated

-	 */

-	void setLabel(String value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetLabel()

-	 * @see #getLabel()

-	 * @see #setLabel(String)

-	 * @generated

-	 */

-	void unsetLabel();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Label</em>' attribute is set.

-	 * @see #unsetLabel()

-	 * @see #getLabel()

-	 * @see #setLabel(String)

-	 * @generated

-	 */

-	boolean isSetLabel();

-

-	/**

-	 * Returns the value of the '<em><b>Width</b></em>' attribute.

-	 * The default value is <code>"100"</code>.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Width</em>' attribute isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Width</em>' attribute.

-	 * @see #isSetWidth()

-	 * @see #unsetWidth()

-	 * @see #setWidth(int)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn_Width()

-	 * @model default="100" unsettable="true" required="true"

-	 * @generated

-	 */

-	int getWidth();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Width</em>' attribute.

-	 * @see #isSetWidth()

-	 * @see #unsetWidth()

-	 * @see #getWidth()

-	 * @generated

-	 */

-	void setWidth(int value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetWidth()

-	 * @see #getWidth()

-	 * @see #setWidth(int)

-	 * @generated

-	 */

-	void unsetWidth();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Width</em>' attribute is set.

-	 * @see #unsetWidth()

-	 * @see #getWidth()

-	 * @see #setWidth(int)

-	 * @generated

-	 */

-	boolean isSetWidth();

-

-} // Column

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn()
+ * @model
+ * @generated
+ */
+public interface Column extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Label</b></em>' attribute.
+	 * The default value is <code>"<PLEASE SET LABEL>"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Label</em>' attribute.
+	 * @see #isSetLabel()
+	 * @see #unsetLabel()
+	 * @see #setLabel(String)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn_Label()
+	 * @model default="<PLEASE SET LABEL>" unsettable="true" required="true"
+	 * @generated
+	 */
+	String getLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Label</em>' attribute.
+	 * @see #isSetLabel()
+	 * @see #unsetLabel()
+	 * @see #getLabel()
+	 * @generated
+	 */
+	void setLabel(String value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetLabel()
+	 * @see #getLabel()
+	 * @see #setLabel(String)
+	 * @generated
+	 */
+	void unsetLabel();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Label</em>' attribute is set.
+	 * @see #unsetLabel()
+	 * @see #getLabel()
+	 * @see #setLabel(String)
+	 * @generated
+	 */
+	boolean isSetLabel();
+
+	/**
+	 * Returns the value of the '<em><b>Width</b></em>' attribute.
+	 * The default value is <code>"100"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Width</em>' attribute.
+	 * @see #isSetWidth()
+	 * @see #unsetWidth()
+	 * @see #setWidth(int)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getColumn_Width()
+	 * @model default="100" unsettable="true" required="true"
+	 * @generated
+	 */
+	int getWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Width</em>' attribute.
+	 * @see #isSetWidth()
+	 * @see #unsetWidth()
+	 * @see #getWidth()
+	 * @generated
+	 */
+	void setWidth(int value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetWidth()
+	 * @see #getWidth()
+	 * @see #setWidth(int)
+	 * @generated
+	 */
+	void unsetWidth();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Width</em>' attribute is set.
+	 * @see #unsetWidth()
+	 * @see #getWidth()
+	 * @see #setWidth(int)
+	 * @generated
+	 */
+	boolean isSetWidth();
+
+} // Column
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationFactory.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationFactory.java
index 412ed28..bd3e58c 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationFactory.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationFactory.java
@@ -1,96 +1,96 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2012 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.ecore.EFactory;

-

-/**

- * <!-- begin-user-doc -->

- * The <b>Factory</b> for the model.

- * It provides a create method for each non-abstract class of the model.

- * <!-- end-user-doc -->

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage

- * @generated

- */

-public interface ConfigurationFactory extends EFactory {

-	/**

-	 * The singleton instance of the factory.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	ConfigurationFactory eINSTANCE = org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationFactoryImpl.init();

-

-	/**

-	 * Returns a new object of class '<em>Pror Tool Extension</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Pror Tool Extension</em>'.

-	 * @generated

-	 */

-	ProrToolExtension createProrToolExtension();

-

-	/**

-	 * Returns a new object of class '<em>Pror Spec View Configuration</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Pror Spec View Configuration</em>'.

-	 * @generated

-	 */

-	ProrSpecViewConfiguration createProrSpecViewConfiguration();

-

-	/**

-	 * Returns a new object of class '<em>Column</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Column</em>'.

-	 * @generated

-	 */

-	Column createColumn();

-

-	/**

-	 * Returns a new object of class '<em>Pror Presentation Configurations</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Pror Presentation Configurations</em>'.

-	 * @generated

-	 */

-	ProrPresentationConfigurations createProrPresentationConfigurations();

-

-	/**

-	 * Returns a new object of class '<em>Pror General Configuration</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Pror General Configuration</em>'.

-	 * @generated

-	 */

-	ProrGeneralConfiguration createProrGeneralConfiguration();

-

-	/**

-	 * Returns a new object of class '<em>Label Configuration</em>'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return a new object of class '<em>Label Configuration</em>'.

-	 * @generated

-	 */

-	LabelConfiguration createLabelConfiguration();

-

-	/**

-	 * Returns the package supported by this factory.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the package supported by this factory.

-	 * @generated

-	 */

-	ConfigurationPackage getConfigurationPackage();

-

-} //ConfigFactory

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage
+ * @generated
+ */
+public interface ConfigurationFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ConfigurationFactory eINSTANCE = org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Pror Tool Extension</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pror Tool Extension</em>'.
+	 * @generated
+	 */
+	ProrToolExtension createProrToolExtension();
+
+	/**
+	 * Returns a new object of class '<em>Pror Spec View Configuration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pror Spec View Configuration</em>'.
+	 * @generated
+	 */
+	ProrSpecViewConfiguration createProrSpecViewConfiguration();
+
+	/**
+	 * Returns a new object of class '<em>Column</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Column</em>'.
+	 * @generated
+	 */
+	Column createColumn();
+
+	/**
+	 * Returns a new object of class '<em>Pror Presentation Configurations</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pror Presentation Configurations</em>'.
+	 * @generated
+	 */
+	ProrPresentationConfigurations createProrPresentationConfigurations();
+
+	/**
+	 * Returns a new object of class '<em>Pror General Configuration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pror General Configuration</em>'.
+	 * @generated
+	 */
+	ProrGeneralConfiguration createProrGeneralConfiguration();
+
+	/**
+	 * Returns a new object of class '<em>Label Configuration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Label Configuration</em>'.
+	 * @generated
+	 */
+	LabelConfiguration createLabelConfiguration();
+
+	/**
+	 * Returns a new object of class '<em>Unified Column</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Unified Column</em>'.
+	 * @generated
+	 */
+	UnifiedColumn createUnifiedColumn();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ConfigurationPackage getConfigurationPackage();
+
+} //ConfigurationFactory
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationPackage.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationPackage.java
index 190fc73..61b1118 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationPackage.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ConfigurationPackage.java
@@ -1,701 +1,749 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.ecore.EAttribute;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.EReference;

-

-/**

- * <!-- begin-user-doc -->

- * The <b>Package</b> for the model.

- * It contains accessors for the meta objects to represent

- * <ul>

- *   <li>each class,</li>

- *   <li>each feature of each class,</li>

- *   <li>each enum,</li>

- *   <li>and each data type</li>

- * </ul>

- * <!-- end-user-doc -->

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory

- * @model kind="package"

- * @generated

- */

-public interface ConfigurationPackage extends EPackage {

-	/**

-	 * The package name.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNAME = "configuration";

-

-	/**

-	 * The package namespace URI.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNS_URI = "http://eclipse.org/rmf/pror/toolextensions/1.0";

-

-	/**

-	 * The package namespace name.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNS_PREFIX = "configuration";

-

-	/**

-	 * The singleton instance of the package.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	ConfigurationPackage eINSTANCE = org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl.init();

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl <em>Pror Tool Extension</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrToolExtension()

-	 * @generated

-	 */

-	int PROR_TOOL_EXTENSION = 0;

-

-	/**

-	 * The feature id for the '<em><b>Spec View Configurations</b></em>' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS = 0;

-

-	/**

-	 * The feature id for the '<em><b>General Configuration</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION = 1;

-

-	/**

-	 * The feature id for the '<em><b>Presentation Configurations</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS = 2;

-

-	/**

-	 * The number of structural features of the '<em>Pror Tool Extension</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_TOOL_EXTENSION_FEATURE_COUNT = 3;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl <em>Pror Spec View Configuration</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrSpecViewConfiguration()

-	 * @generated

-	 */

-	int PROR_SPEC_VIEW_CONFIGURATION = 1;

-

-	/**

-	 * The feature id for the '<em><b>Specification</b></em>' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION = 0;

-

-	/**

-	 * The feature id for the '<em><b>Columns</b></em>' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_SPEC_VIEW_CONFIGURATION__COLUMNS = 1;

-

-	/**

-	 * The feature id for the '<em><b>Left Header Column</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN = 2;

-

-	/**

-	 * The number of structural features of the '<em>Pror Spec View Configuration</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_SPEC_VIEW_CONFIGURATION_FEATURE_COUNT = 3;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl <em>Column</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getColumn()

-	 * @generated

-	 */

-	int COLUMN = 2;

-

-	/**

-	 * The feature id for the '<em><b>Label</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int COLUMN__LABEL = 0;

-

-	/**

-	 * The feature id for the '<em><b>Width</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int COLUMN__WIDTH = 1;

-

-	/**

-	 * The number of structural features of the '<em>Column</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int COLUMN_FEATURE_COUNT = 2;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl <em>Pror Presentation Configurations</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfigurations()

-	 * @generated

-	 */

-	int PROR_PRESENTATION_CONFIGURATIONS = 3;

-

-	/**

-	 * The feature id for the '<em><b>Presentation Configurations</b></em>' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS = 0;

-

-	/**

-	 * The number of structural features of the '<em>Pror Presentation Configurations</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_PRESENTATION_CONFIGURATIONS_FEATURE_COUNT = 1;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl <em>Pror Presentation Configuration</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfiguration()

-	 * @generated

-	 */

-	int PROR_PRESENTATION_CONFIGURATION = 4;

-

-	/**

-	 * The feature id for the '<em><b>Datatype</b></em>' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_PRESENTATION_CONFIGURATION__DATATYPE = 0;

-

-	/**

-	 * The number of structural features of the '<em>Pror Presentation Configuration</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_PRESENTATION_CONFIGURATION_FEATURE_COUNT = 1;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl <em>Pror General Configuration</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrGeneralConfiguration()

-	 * @generated

-	 */

-	int PROR_GENERAL_CONFIGURATION = 5;

-

-	/**

-	 * The feature id for the '<em><b>Label Configuration</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION = 0;

-

-	/**

-	 * The number of structural features of the '<em>Pror General Configuration</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int PROR_GENERAL_CONFIGURATION_FEATURE_COUNT = 1;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl <em>Label Configuration</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getLabelConfiguration()

-	 * @generated

-	 */

-	int LABEL_CONFIGURATION = 6;

-

-	/**

-	 * The feature id for the '<em><b>Default Label</b></em>' attribute list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int LABEL_CONFIGURATION__DEFAULT_LABEL = 0;

-

-	/**

-	 * The number of structural features of the '<em>Label Configuration</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int LABEL_CONFIGURATION_FEATURE_COUNT = 1;

-

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension <em>Pror Tool Extension</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Pror Tool Extension</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension

-	 * @generated

-	 */

-	EClass getProrToolExtension();

-

-	/**

-	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference list '<em>Spec View Configurations</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations()

-	 * @see #getProrToolExtension()

-	 * @generated

-	 */

-	EReference getProrToolExtension_SpecViewConfigurations();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>General Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration()

-	 * @see #getProrToolExtension()

-	 * @generated

-	 */

-	EReference getProrToolExtension_GeneralConfiguration();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>Presentation Configurations</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations()

-	 * @see #getProrToolExtension()

-	 * @generated

-	 */

-	EReference getProrToolExtension_PresentationConfigurations();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration <em>Pror Spec View Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Pror Spec View Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration

-	 * @generated

-	 */

-	EClass getProrSpecViewConfiguration();

-

-	/**

-	 * Returns the meta object for the reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the reference '<em>Specification</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification()

-	 * @see #getProrSpecViewConfiguration()

-	 * @generated

-	 */

-	EReference getProrSpecViewConfiguration_Specification();

-

-	/**

-	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference list '<em>Columns</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns()

-	 * @see #getProrSpecViewConfiguration()

-	 * @generated

-	 */

-	EReference getProrSpecViewConfiguration_Columns();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>Left Header Column</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn()

-	 * @see #getProrSpecViewConfiguration()

-	 * @generated

-	 */

-	EReference getProrSpecViewConfiguration_LeftHeaderColumn();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.Column <em>Column</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Column</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column

-	 * @generated

-	 */

-	EClass getColumn();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Label</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel()

-	 * @see #getColumn()

-	 * @generated

-	 */

-	EAttribute getColumn_Label();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Width</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth()

-	 * @see #getColumn()

-	 * @generated

-	 */

-	EAttribute getColumn_Width();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations <em>Pror Presentation Configurations</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Pror Presentation Configurations</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations

-	 * @generated

-	 */

-	EClass getProrPresentationConfigurations();

-

-	/**

-	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference list '<em>Presentation Configurations</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations()

-	 * @see #getProrPresentationConfigurations()

-	 * @generated

-	 */

-	EReference getProrPresentationConfigurations_PresentationConfigurations();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration <em>Pror Presentation Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Pror Presentation Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration

-	 * @generated

-	 */

-	EClass getProrPresentationConfiguration();

-

-	/**

-	 * Returns the meta object for the reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the reference '<em>Datatype</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype()

-	 * @see #getProrPresentationConfiguration()

-	 * @generated

-	 */

-	EReference getProrPresentationConfiguration_Datatype();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration <em>Pror General Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Pror General Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration

-	 * @generated

-	 */

-	EClass getProrGeneralConfiguration();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>Label Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration()

-	 * @see #getProrGeneralConfiguration()

-	 * @generated

-	 */

-	EReference getProrGeneralConfiguration_LabelConfiguration();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration <em>Label Configuration</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Label Configuration</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration

-	 * @generated

-	 */

-	EClass getLabelConfiguration();

-

-	/**

-	 * Returns the meta object for the attribute list '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute list '<em>Default Label</em>'.

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel()

-	 * @see #getLabelConfiguration()

-	 * @generated

-	 */

-	EAttribute getLabelConfiguration_DefaultLabel();

-

-	/**

-	 * Returns the factory that creates the instances of the model.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the factory that creates the instances of the model.

-	 * @generated

-	 */

-	ConfigurationFactory getConfigurationFactory();

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * Defines literals for the meta objects that represent

-	 * <ul>

-	 *   <li>each class,</li>

-	 *   <li>each feature of each class,</li>

-	 *   <li>each enum,</li>

-	 *   <li>and each data type</li>

-	 * </ul>

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	interface Literals {

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl <em>Pror Tool Extension</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrToolExtension()

-		 * @generated

-		 */

-		EClass PROR_TOOL_EXTENSION = eINSTANCE.getProrToolExtension();

-

-		/**

-		 * The meta object literal for the '<em><b>Spec View Configurations</b></em>' containment reference list feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS = eINSTANCE.getProrToolExtension_SpecViewConfigurations();

-

-		/**

-		 * The meta object literal for the '<em><b>General Configuration</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION = eINSTANCE.getProrToolExtension_GeneralConfiguration();

-

-		/**

-		 * The meta object literal for the '<em><b>Presentation Configurations</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrToolExtension_PresentationConfigurations();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl <em>Pror Spec View Configuration</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrSpecViewConfiguration()

-		 * @generated

-		 */

-		EClass PROR_SPEC_VIEW_CONFIGURATION = eINSTANCE.getProrSpecViewConfiguration();

-

-		/**

-		 * The meta object literal for the '<em><b>Specification</b></em>' reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION = eINSTANCE.getProrSpecViewConfiguration_Specification();

-

-		/**

-		 * The meta object literal for the '<em><b>Columns</b></em>' containment reference list feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_SPEC_VIEW_CONFIGURATION__COLUMNS = eINSTANCE.getProrSpecViewConfiguration_Columns();

-

-		/**

-		 * The meta object literal for the '<em><b>Left Header Column</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN = eINSTANCE.getProrSpecViewConfiguration_LeftHeaderColumn();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl <em>Column</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getColumn()

-		 * @generated

-		 */

-		EClass COLUMN = eINSTANCE.getColumn();

-

-		/**

-		 * The meta object literal for the '<em><b>Label</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute COLUMN__LABEL = eINSTANCE.getColumn_Label();

-

-		/**

-		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute COLUMN__WIDTH = eINSTANCE.getColumn_Width();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl <em>Pror Presentation Configurations</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfigurations()

-		 * @generated

-		 */

-		EClass PROR_PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrPresentationConfigurations();

-

-		/**

-		 * The meta object literal for the '<em><b>Presentation Configurations</b></em>' containment reference list feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrPresentationConfigurations_PresentationConfigurations();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl <em>Pror Presentation Configuration</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfiguration()

-		 * @generated

-		 */

-		EClass PROR_PRESENTATION_CONFIGURATION = eINSTANCE.getProrPresentationConfiguration();

-

-		/**

-		 * The meta object literal for the '<em><b>Datatype</b></em>' reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_PRESENTATION_CONFIGURATION__DATATYPE = eINSTANCE.getProrPresentationConfiguration_Datatype();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl <em>Pror General Configuration</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrGeneralConfiguration()

-		 * @generated

-		 */

-		EClass PROR_GENERAL_CONFIGURATION = eINSTANCE.getProrGeneralConfiguration();

-

-		/**

-		 * The meta object literal for the '<em><b>Label Configuration</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION = eINSTANCE.getProrGeneralConfiguration_LabelConfiguration();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl <em>Label Configuration</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl

-		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getLabelConfiguration()

-		 * @generated

-		 */

-		EClass LABEL_CONFIGURATION = eINSTANCE.getLabelConfiguration();

-

-		/**

-		 * The meta object literal for the '<em><b>Default Label</b></em>' attribute list feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute LABEL_CONFIGURATION__DEFAULT_LABEL = eINSTANCE.getLabelConfiguration_DefaultLabel();

-

-	}

-

-} //ConfigPackage

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ConfigurationPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "configuration";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://eclipse.org/rmf/pror/toolextensions/1.0";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "configuration";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ConfigurationPackage eINSTANCE = org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl <em>Pror Tool Extension</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrToolExtension()
+	 * @generated
+	 */
+	int PROR_TOOL_EXTENSION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Spec View Configurations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS = 0;
+
+	/**
+	 * The feature id for the '<em><b>General Configuration</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Presentation Configurations</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS = 2;
+
+	/**
+	 * The number of structural features of the '<em>Pror Tool Extension</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_TOOL_EXTENSION_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl <em>Pror Spec View Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrSpecViewConfiguration()
+	 * @generated
+	 */
+	int PROR_SPEC_VIEW_CONFIGURATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Specification</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Columns</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_SPEC_VIEW_CONFIGURATION__COLUMNS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Left Header Column</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN = 2;
+
+	/**
+	 * The number of structural features of the '<em>Pror Spec View Configuration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_SPEC_VIEW_CONFIGURATION_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl <em>Column</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getColumn()
+	 * @generated
+	 */
+	int COLUMN = 2;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COLUMN__LABEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COLUMN__WIDTH = 1;
+
+	/**
+	 * The number of structural features of the '<em>Column</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COLUMN_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl <em>Pror Presentation Configurations</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfigurations()
+	 * @generated
+	 */
+	int PROR_PRESENTATION_CONFIGURATIONS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Presentation Configurations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Pror Presentation Configurations</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_PRESENTATION_CONFIGURATIONS_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl <em>Pror Presentation Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfiguration()
+	 * @generated
+	 */
+	int PROR_PRESENTATION_CONFIGURATION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_PRESENTATION_CONFIGURATION__DATATYPE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Pror Presentation Configuration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_PRESENTATION_CONFIGURATION_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl <em>Pror General Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrGeneralConfiguration()
+	 * @generated
+	 */
+	int PROR_GENERAL_CONFIGURATION = 5;
+
+	/**
+	 * The feature id for the '<em><b>Label Configuration</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Pror General Configuration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROR_GENERAL_CONFIGURATION_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl <em>Label Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getLabelConfiguration()
+	 * @generated
+	 */
+	int LABEL_CONFIGURATION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Default Label</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_CONFIGURATION__DEFAULT_LABEL = 0;
+
+	/**
+	 * The number of structural features of the '<em>Label Configuration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_CONFIGURATION_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.UnifiedColumnImpl <em>Unified Column</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.UnifiedColumnImpl
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getUnifiedColumn()
+	 * @generated
+	 */
+	int UNIFIED_COLUMN = 7;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIFIED_COLUMN__LABEL = COLUMN__LABEL;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIFIED_COLUMN__WIDTH = COLUMN__WIDTH;
+
+	/**
+	 * The number of structural features of the '<em>Unified Column</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIFIED_COLUMN_FEATURE_COUNT = COLUMN_FEATURE_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension <em>Pror Tool Extension</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pror Tool Extension</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension
+	 * @generated
+	 */
+	EClass getProrToolExtension();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Spec View Configurations</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations()
+	 * @see #getProrToolExtension()
+	 * @generated
+	 */
+	EReference getProrToolExtension_SpecViewConfigurations();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>General Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration()
+	 * @see #getProrToolExtension()
+	 * @generated
+	 */
+	EReference getProrToolExtension_GeneralConfiguration();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Presentation Configurations</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations()
+	 * @see #getProrToolExtension()
+	 * @generated
+	 */
+	EReference getProrToolExtension_PresentationConfigurations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration <em>Pror Spec View Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pror Spec View Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration
+	 * @generated
+	 */
+	EClass getProrSpecViewConfiguration();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Specification</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification()
+	 * @see #getProrSpecViewConfiguration()
+	 * @generated
+	 */
+	EReference getProrSpecViewConfiguration_Specification();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Columns</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns()
+	 * @see #getProrSpecViewConfiguration()
+	 * @generated
+	 */
+	EReference getProrSpecViewConfiguration_Columns();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Left Header Column</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn()
+	 * @see #getProrSpecViewConfiguration()
+	 * @generated
+	 */
+	EReference getProrSpecViewConfiguration_LeftHeaderColumn();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.Column <em>Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Column</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column
+	 * @generated
+	 */
+	EClass getColumn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel <em>Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Label</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column#getLabel()
+	 * @see #getColumn()
+	 * @generated
+	 */
+	EAttribute getColumn_Label();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth <em>Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Width</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.Column#getWidth()
+	 * @see #getColumn()
+	 * @generated
+	 */
+	EAttribute getColumn_Width();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations <em>Pror Presentation Configurations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pror Presentation Configurations</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations
+	 * @generated
+	 */
+	EClass getProrPresentationConfigurations();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Presentation Configurations</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations()
+	 * @see #getProrPresentationConfigurations()
+	 * @generated
+	 */
+	EReference getProrPresentationConfigurations_PresentationConfigurations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration <em>Pror Presentation Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pror Presentation Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration
+	 * @generated
+	 */
+	EClass getProrPresentationConfiguration();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Datatype</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype()
+	 * @see #getProrPresentationConfiguration()
+	 * @generated
+	 */
+	EReference getProrPresentationConfiguration_Datatype();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration <em>Pror General Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pror General Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration
+	 * @generated
+	 */
+	EClass getProrGeneralConfiguration();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Label Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration()
+	 * @see #getProrGeneralConfiguration()
+	 * @generated
+	 */
+	EReference getProrGeneralConfiguration_LabelConfiguration();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration <em>Label Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Label Configuration</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration
+	 * @generated
+	 */
+	EClass getLabelConfiguration();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Default Label</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel()
+	 * @see #getLabelConfiguration()
+	 * @generated
+	 */
+	EAttribute getLabelConfiguration_DefaultLabel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn <em>Unified Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Unified Column</em>'.
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn
+	 * @generated
+	 */
+	EClass getUnifiedColumn();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ConfigurationFactory getConfigurationFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl <em>Pror Tool Extension</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrToolExtension()
+		 * @generated
+		 */
+		EClass PROR_TOOL_EXTENSION = eINSTANCE.getProrToolExtension();
+
+		/**
+		 * The meta object literal for the '<em><b>Spec View Configurations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS = eINSTANCE.getProrToolExtension_SpecViewConfigurations();
+
+		/**
+		 * The meta object literal for the '<em><b>General Configuration</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION = eINSTANCE.getProrToolExtension_GeneralConfiguration();
+
+		/**
+		 * The meta object literal for the '<em><b>Presentation Configurations</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrToolExtension_PresentationConfigurations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl <em>Pror Spec View Configuration</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrSpecViewConfiguration()
+		 * @generated
+		 */
+		EClass PROR_SPEC_VIEW_CONFIGURATION = eINSTANCE.getProrSpecViewConfiguration();
+
+		/**
+		 * The meta object literal for the '<em><b>Specification</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION = eINSTANCE.getProrSpecViewConfiguration_Specification();
+
+		/**
+		 * The meta object literal for the '<em><b>Columns</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_SPEC_VIEW_CONFIGURATION__COLUMNS = eINSTANCE.getProrSpecViewConfiguration_Columns();
+
+		/**
+		 * The meta object literal for the '<em><b>Left Header Column</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN = eINSTANCE.getProrSpecViewConfiguration_LeftHeaderColumn();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl <em>Column</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getColumn()
+		 * @generated
+		 */
+		EClass COLUMN = eINSTANCE.getColumn();
+
+		/**
+		 * The meta object literal for the '<em><b>Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COLUMN__LABEL = eINSTANCE.getColumn_Label();
+
+		/**
+		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COLUMN__WIDTH = eINSTANCE.getColumn_Width();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl <em>Pror Presentation Configurations</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfigurations()
+		 * @generated
+		 */
+		EClass PROR_PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrPresentationConfigurations();
+
+		/**
+		 * The meta object literal for the '<em><b>Presentation Configurations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS = eINSTANCE.getProrPresentationConfigurations_PresentationConfigurations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl <em>Pror Presentation Configuration</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrPresentationConfiguration()
+		 * @generated
+		 */
+		EClass PROR_PRESENTATION_CONFIGURATION = eINSTANCE.getProrPresentationConfiguration();
+
+		/**
+		 * The meta object literal for the '<em><b>Datatype</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_PRESENTATION_CONFIGURATION__DATATYPE = eINSTANCE.getProrPresentationConfiguration_Datatype();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl <em>Pror General Configuration</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getProrGeneralConfiguration()
+		 * @generated
+		 */
+		EClass PROR_GENERAL_CONFIGURATION = eINSTANCE.getProrGeneralConfiguration();
+
+		/**
+		 * The meta object literal for the '<em><b>Label Configuration</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION = eINSTANCE.getProrGeneralConfiguration_LabelConfiguration();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl <em>Label Configuration</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getLabelConfiguration()
+		 * @generated
+		 */
+		EClass LABEL_CONFIGURATION = eINSTANCE.getLabelConfiguration();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Label</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LABEL_CONFIGURATION__DEFAULT_LABEL = eINSTANCE.getLabelConfiguration_DefaultLabel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.rmf.reqif10.pror.configuration.impl.UnifiedColumnImpl <em>Unified Column</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.UnifiedColumnImpl
+		 * @see org.eclipse.rmf.reqif10.pror.configuration.impl.ConfigurationPackageImpl#getUnifiedColumn()
+		 * @generated
+		 */
+		EClass UNIFIED_COLUMN = eINSTANCE.getUnifiedColumn();
+
+	}
+
+} //ConfigurationPackage
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/LabelConfiguration.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/LabelConfiguration.java
index 8aaf38f..f641334 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/LabelConfiguration.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/LabelConfiguration.java
@@ -1,73 +1,65 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.common.util.EList;

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

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Label Configuration</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getLabelConfiguration()

- * @model

- * @generated

- */

-public interface LabelConfiguration extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Default Label</b></em>' attribute list.

-	 * The list contents are of type {@link java.lang.String}.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Default Label</em>' attribute list isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Default Label</em>' attribute list.

-	 * @see #isSetDefaultLabel()

-	 * @see #unsetDefaultLabel()

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getLabelConfiguration_DefaultLabel()

-	 * @model unsettable="true"

-	 * @generated

-	 */

-	EList<String> getDefaultLabel();

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}' attribute list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetDefaultLabel()

-	 * @see #getDefaultLabel()

-	 * @generated

-	 */

-	void unsetDefaultLabel();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}' attribute list is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Default Label</em>' attribute list is set.

-	 * @see #unsetDefaultLabel()

-	 * @see #getDefaultLabel()

-	 * @generated

-	 */

-	boolean isSetDefaultLabel();

-

-} // LabelConfiguration

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getLabelConfiguration()
+ * @model
+ * @generated
+ */
+public interface LabelConfiguration extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Default Label</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Label</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default Label</em>' attribute list.
+	 * @see #isSetDefaultLabel()
+	 * @see #unsetDefaultLabel()
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getLabelConfiguration_DefaultLabel()
+	 * @model unsettable="true"
+	 * @generated
+	 */
+	EList<String> getDefaultLabel();
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetDefaultLabel()
+	 * @see #getDefaultLabel()
+	 * @generated
+	 */
+	void unsetDefaultLabel();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration#getDefaultLabel <em>Default Label</em>}' attribute list is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Default Label</em>' attribute list is set.
+	 * @see #unsetDefaultLabel()
+	 * @see #getDefaultLabel()
+	 * @generated
+	 */
+	boolean isSetDefaultLabel();
+
+} // LabelConfiguration
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrGeneralConfiguration.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrGeneralConfiguration.java
index a9e964b..61659be 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrGeneralConfiguration.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrGeneralConfiguration.java
@@ -1,88 +1,79 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

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

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Pror General Configuration</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrGeneralConfiguration()

- * @model

- * @generated

- */

-public interface ProrGeneralConfiguration extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Label Configuration</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Label Configuration</em>' containment reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Label Configuration</em>' containment reference.

-	 * @see #isSetLabelConfiguration()

-	 * @see #unsetLabelConfiguration()

-	 * @see #setLabelConfiguration(LabelConfiguration)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrGeneralConfiguration_LabelConfiguration()

-	 * @model containment="true" unsettable="true" required="true"

-	 *        extendedMetaData="name='labelConfiguration' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='labelConfiguration' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	LabelConfiguration getLabelConfiguration();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Label Configuration</em>' containment reference.

-	 * @see #isSetLabelConfiguration()

-	 * @see #unsetLabelConfiguration()

-	 * @see #getLabelConfiguration()

-	 * @generated

-	 */

-	void setLabelConfiguration(LabelConfiguration value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetLabelConfiguration()

-	 * @see #getLabelConfiguration()

-	 * @see #setLabelConfiguration(LabelConfiguration)

-	 * @generated

-	 */

-	void unsetLabelConfiguration();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Label Configuration</em>' containment reference is set.

-	 * @see #unsetLabelConfiguration()

-	 * @see #getLabelConfiguration()

-	 * @see #setLabelConfiguration(LabelConfiguration)

-	 * @generated

-	 */

-	boolean isSetLabelConfiguration();

-

-} // ProrGeneralConfiguration

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pror General Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrGeneralConfiguration()
+ * @model
+ * @generated
+ */
+public interface ProrGeneralConfiguration extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Label Configuration</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label Configuration</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Label Configuration</em>' containment reference.
+	 * @see #isSetLabelConfiguration()
+	 * @see #unsetLabelConfiguration()
+	 * @see #setLabelConfiguration(LabelConfiguration)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrGeneralConfiguration_LabelConfiguration()
+	 * @model containment="true" unsettable="true" required="true"
+	 *        extendedMetaData="name='labelConfiguration' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='labelConfiguration' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	LabelConfiguration getLabelConfiguration();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Label Configuration</em>' containment reference.
+	 * @see #isSetLabelConfiguration()
+	 * @see #unsetLabelConfiguration()
+	 * @see #getLabelConfiguration()
+	 * @generated
+	 */
+	void setLabelConfiguration(LabelConfiguration value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetLabelConfiguration()
+	 * @see #getLabelConfiguration()
+	 * @see #setLabelConfiguration(LabelConfiguration)
+	 * @generated
+	 */
+	void unsetLabelConfiguration();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration#getLabelConfiguration <em>Label Configuration</em>}' containment reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Label Configuration</em>' containment reference is set.
+	 * @see #unsetLabelConfiguration()
+	 * @see #getLabelConfiguration()
+	 * @see #setLabelConfiguration(LabelConfiguration)
+	 * @generated
+	 */
+	boolean isSetLabelConfiguration();
+
+} // ProrGeneralConfiguration
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfiguration.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfiguration.java
index 827e1d8..6c53708 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfiguration.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfiguration.java
@@ -1,87 +1,79 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

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

-import org.eclipse.rmf.reqif10.DatatypeDefinition;

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Pror Presentation Configuration</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfiguration()

- * @model abstract="true"

- * @generated

- */

-public interface ProrPresentationConfiguration extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Datatype</b></em>' reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Datatype</em>' reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Datatype</em>' reference.

-	 * @see #isSetDatatype()

-	 * @see #unsetDatatype()

-	 * @see #setDatatype(DatatypeDefinition)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfiguration_Datatype()

-	 * @model unsettable="true" required="true"

-	 * @generated

-	 */

-	DatatypeDefinition getDatatype();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Datatype</em>' reference.

-	 * @see #isSetDatatype()

-	 * @see #unsetDatatype()

-	 * @see #getDatatype()

-	 * @generated

-	 */

-	void setDatatype(DatatypeDefinition value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetDatatype()

-	 * @see #getDatatype()

-	 * @see #setDatatype(DatatypeDefinition)

-	 * @generated

-	 */

-	void unsetDatatype();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Datatype</em>' reference is set.

-	 * @see #unsetDatatype()

-	 * @see #getDatatype()

-	 * @see #setDatatype(DatatypeDefinition)

-	 * @generated

-	 */

-	boolean isSetDatatype();

-

-} // ProrPresentationConfiguration

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.rmf.reqif10.DatatypeDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pror Presentation Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfiguration()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ProrPresentationConfiguration extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Datatype</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datatype</em>' reference.
+	 * @see #isSetDatatype()
+	 * @see #unsetDatatype()
+	 * @see #setDatatype(DatatypeDefinition)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfiguration_Datatype()
+	 * @model unsettable="true" required="true"
+	 * @generated
+	 */
+	DatatypeDefinition getDatatype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datatype</em>' reference.
+	 * @see #isSetDatatype()
+	 * @see #unsetDatatype()
+	 * @see #getDatatype()
+	 * @generated
+	 */
+	void setDatatype(DatatypeDefinition value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetDatatype()
+	 * @see #getDatatype()
+	 * @see #setDatatype(DatatypeDefinition)
+	 * @generated
+	 */
+	void unsetDatatype();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration#getDatatype <em>Datatype</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Datatype</em>' reference is set.
+	 * @see #unsetDatatype()
+	 * @see #getDatatype()
+	 * @see #setDatatype(DatatypeDefinition)
+	 * @generated
+	 */
+	boolean isSetDatatype();
+
+} // ProrPresentationConfiguration
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfigurations.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfigurations.java
index ebfe44e..d2633f1 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfigurations.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrPresentationConfigurations.java
@@ -1,75 +1,67 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.common.util.EList;

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

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Pror Presentation Configurations</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfigurations()

- * @model

- * @generated

- */

-public interface ProrPresentationConfigurations extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Presentation Configurations</b></em>' containment reference list.

-	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration}.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Presentation Configurations</em>' containment reference list isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Presentation Configurations</em>' containment reference list.

-	 * @see #isSetPresentationConfigurations()

-	 * @see #unsetPresentationConfigurations()

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfigurations_PresentationConfigurations()

-	 * @model containment="true" unsettable="true"

-	 *        extendedMetaData="name='presentationConfigurations' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='presentationConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	EList<ProrPresentationConfiguration> getPresentationConfigurations();

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetPresentationConfigurations()

-	 * @see #getPresentationConfigurations()

-	 * @generated

-	 */

-	void unsetPresentationConfigurations();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference list is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Presentation Configurations</em>' containment reference list is set.

-	 * @see #unsetPresentationConfigurations()

-	 * @see #getPresentationConfigurations()

-	 * @generated

-	 */

-	boolean isSetPresentationConfigurations();

-

-} // ProrPresentationConfigurations

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pror Presentation Configurations</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfigurations()
+ * @model
+ * @generated
+ */
+public interface ProrPresentationConfigurations extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Presentation Configurations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Presentation Configurations</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Presentation Configurations</em>' containment reference list.
+	 * @see #isSetPresentationConfigurations()
+	 * @see #unsetPresentationConfigurations()
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrPresentationConfigurations_PresentationConfigurations()
+	 * @model containment="true" unsettable="true"
+	 *        extendedMetaData="name='presentationConfigurations' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='presentationConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	EList<ProrPresentationConfiguration> getPresentationConfigurations();
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetPresentationConfigurations()
+	 * @see #getPresentationConfigurations()
+	 * @generated
+	 */
+	void unsetPresentationConfigurations();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference list is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Presentation Configurations</em>' containment reference list is set.
+	 * @see #unsetPresentationConfigurations()
+	 * @see #getPresentationConfigurations()
+	 * @generated
+	 */
+	boolean isSetPresentationConfigurations();
+
+} // ProrPresentationConfigurations
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrSpecViewConfiguration.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrSpecViewConfiguration.java
index 8a29546..57dca79 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrSpecViewConfiguration.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrSpecViewConfiguration.java
@@ -1,186 +1,179 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.common.util.EList;

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

-import org.eclipse.rmf.reqif10.Specification;

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Pror Spec View Configuration</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration()

- * @model

- * @generated

- */

-public interface ProrSpecViewConfiguration extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Specification</b></em>' reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Specification</em>' reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Specification</em>' reference.

-	 * @see #isSetSpecification()

-	 * @see #unsetSpecification()

-	 * @see #setSpecification(Specification)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_Specification()

-	 * @model unsettable="true" required="true"

-	 * @generated

-	 */

-	Specification getSpecification();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Specification</em>' reference.

-	 * @see #isSetSpecification()

-	 * @see #unsetSpecification()

-	 * @see #getSpecification()

-	 * @generated

-	 */

-	void setSpecification(Specification value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetSpecification()

-	 * @see #getSpecification()

-	 * @see #setSpecification(Specification)

-	 * @generated

-	 */

-	void unsetSpecification();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Specification</em>' reference is set.

-	 * @see #unsetSpecification()

-	 * @see #getSpecification()

-	 * @see #setSpecification(Specification)

-	 * @generated

-	 */

-	boolean isSetSpecification();

-

-	/**

-	 * Returns the value of the '<em><b>Columns</b></em>' containment reference list.

-	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.Column}.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Columns</em>' containment reference list isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Columns</em>' containment reference list.

-	 * @see #isSetColumns()

-	 * @see #unsetColumns()

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_Columns()

-	 * @model containment="true" unsettable="true"

-	 *        extendedMetaData="name='columns' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='columns' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	EList<Column> getColumns();

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetColumns()

-	 * @see #getColumns()

-	 * @generated

-	 */

-	void unsetColumns();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}' containment reference list is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Columns</em>' containment reference list is set.

-	 * @see #unsetColumns()

-	 * @see #getColumns()

-	 * @generated

-	 */

-	boolean isSetColumns();

-

-	/**

-	 * Returns the value of the '<em><b>Left Header Column</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Left Header Column</em>' containment reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Left Header Column</em>' containment reference.

-	 * @see #isSetLeftHeaderColumn()

-	 * @see #unsetLeftHeaderColumn()

-	 * @see #setLeftHeaderColumn(Column)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_LeftHeaderColumn()

-	 * @model containment="true" unsettable="true" required="true"

-	 *        extendedMetaData="name='leftHeaderColumn' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='leftHeaderColumn' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	Column getLeftHeaderColumn();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Left Header Column</em>' containment reference.

-	 * @see #isSetLeftHeaderColumn()

-	 * @see #unsetLeftHeaderColumn()

-	 * @see #getLeftHeaderColumn()

-	 * @generated

-	 */

-	void setLeftHeaderColumn(Column value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetLeftHeaderColumn()

-	 * @see #getLeftHeaderColumn()

-	 * @see #setLeftHeaderColumn(Column)

-	 * @generated

-	 */

-	void unsetLeftHeaderColumn();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Left Header Column</em>' containment reference is set.

-	 * @see #unsetLeftHeaderColumn()

-	 * @see #getLeftHeaderColumn()

-	 * @see #setLeftHeaderColumn(Column)

-	 * @generated

-	 */

-	boolean isSetLeftHeaderColumn();

-

-} // ProrSpecViewConfiguration

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.rmf.reqif10.Specification;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pror Spec View Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration()
+ * @model
+ * @generated
+ */
+public interface ProrSpecViewConfiguration extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Specification</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Specification</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Specification</em>' reference.
+	 * @see #isSetSpecification()
+	 * @see #unsetSpecification()
+	 * @see #setSpecification(Specification)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_Specification()
+	 * @model unsettable="true" required="true"
+	 * @generated
+	 */
+	Specification getSpecification();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Specification</em>' reference.
+	 * @see #isSetSpecification()
+	 * @see #unsetSpecification()
+	 * @see #getSpecification()
+	 * @generated
+	 */
+	void setSpecification(Specification value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetSpecification()
+	 * @see #getSpecification()
+	 * @see #setSpecification(Specification)
+	 * @generated
+	 */
+	void unsetSpecification();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getSpecification <em>Specification</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Specification</em>' reference is set.
+	 * @see #unsetSpecification()
+	 * @see #getSpecification()
+	 * @see #setSpecification(Specification)
+	 * @generated
+	 */
+	boolean isSetSpecification();
+
+	/**
+	 * Returns the value of the '<em><b>Columns</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.Column}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Columns</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Columns</em>' containment reference list.
+	 * @see #isSetColumns()
+	 * @see #unsetColumns()
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_Columns()
+	 * @model containment="true" unsettable="true"
+	 *        extendedMetaData="name='columns' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='columns' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	EList<Column> getColumns();
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetColumns()
+	 * @see #getColumns()
+	 * @generated
+	 */
+	void unsetColumns();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getColumns <em>Columns</em>}' containment reference list is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Columns</em>' containment reference list is set.
+	 * @see #unsetColumns()
+	 * @see #getColumns()
+	 * @generated
+	 */
+	boolean isSetColumns();
+
+	/**
+	 * Returns the value of the '<em><b>Left Header Column</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Left Header Column</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Left Header Column</em>' containment reference.
+	 * @see #isSetLeftHeaderColumn()
+	 * @see #unsetLeftHeaderColumn()
+	 * @see #setLeftHeaderColumn(Column)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrSpecViewConfiguration_LeftHeaderColumn()
+	 * @model containment="true" unsettable="true" required="true"
+	 *        extendedMetaData="name='leftHeaderColumn' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='leftHeaderColumn' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	Column getLeftHeaderColumn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Left Header Column</em>' containment reference.
+	 * @see #isSetLeftHeaderColumn()
+	 * @see #unsetLeftHeaderColumn()
+	 * @see #getLeftHeaderColumn()
+	 * @generated
+	 */
+	void setLeftHeaderColumn(Column value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetLeftHeaderColumn()
+	 * @see #getLeftHeaderColumn()
+	 * @see #setLeftHeaderColumn(Column)
+	 * @generated
+	 */
+	void unsetLeftHeaderColumn();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration#getLeftHeaderColumn <em>Left Header Column</em>}' containment reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Left Header Column</em>' containment reference is set.
+	 * @see #unsetLeftHeaderColumn()
+	 * @see #getLeftHeaderColumn()
+	 * @see #setLeftHeaderColumn(Column)
+	 * @generated
+	 */
+	boolean isSetLeftHeaderColumn();
+
+} // ProrSpecViewConfiguration
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrToolExtension.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrToolExtension.java
index 294283c..b2e98aa 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrToolExtension.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/ProrToolExtension.java
@@ -1,187 +1,179 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration;

-

-import org.eclipse.emf.common.util.EList;

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

-

-/**

- * <!-- begin-user-doc -->

- * A representation of the model object '<em><b>Pror Tool Extension</b></em>'.

- * <!-- end-user-doc -->

- *

- * <p>

- * The following features are supported:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}</li>

- * </ul>

- * </p>

- *

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension()

- * @model

- * @generated

- */

-public interface ProrToolExtension extends EObject {

-	/**

-	 * Returns the value of the '<em><b>Spec View Configurations</b></em>' containment reference list.

-	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration}.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Spec View Configurations</em>' containment reference list isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Spec View Configurations</em>' containment reference list.

-	 * @see #isSetSpecViewConfigurations()

-	 * @see #unsetSpecViewConfigurations()

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_SpecViewConfigurations()

-	 * @model containment="true" unsettable="true"

-	 *        extendedMetaData="name='specViewConfigurations' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='specViewConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	EList<ProrSpecViewConfiguration> getSpecViewConfigurations();

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetSpecViewConfigurations()

-	 * @see #getSpecViewConfigurations()

-	 * @generated

-	 */

-	void unsetSpecViewConfigurations();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}' containment reference list is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Spec View Configurations</em>' containment reference list is set.

-	 * @see #unsetSpecViewConfigurations()

-	 * @see #getSpecViewConfigurations()

-	 * @generated

-	 */

-	boolean isSetSpecViewConfigurations();

-

-	/**

-	 * Returns the value of the '<em><b>General Configuration</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>General Configuration</em>' containment reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>General Configuration</em>' containment reference.

-	 * @see #isSetGeneralConfiguration()

-	 * @see #unsetGeneralConfiguration()

-	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_GeneralConfiguration()

-	 * @model containment="true" unsettable="true" required="true"

-	 *        extendedMetaData="name='generalConfiguration' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='generalConfiguration' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	ProrGeneralConfiguration getGeneralConfiguration();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>General Configuration</em>' containment reference.

-	 * @see #isSetGeneralConfiguration()

-	 * @see #unsetGeneralConfiguration()

-	 * @see #getGeneralConfiguration()

-	 * @generated

-	 */

-	void setGeneralConfiguration(ProrGeneralConfiguration value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetGeneralConfiguration()

-	 * @see #getGeneralConfiguration()

-	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)

-	 * @generated

-	 */

-	void unsetGeneralConfiguration();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>General Configuration</em>' containment reference is set.

-	 * @see #unsetGeneralConfiguration()

-	 * @see #getGeneralConfiguration()

-	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)

-	 * @generated

-	 */

-	boolean isSetGeneralConfiguration();

-

-	/**

-	 * Returns the value of the '<em><b>Presentation Configurations</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Presentation Configurations</em>' containment reference isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Presentation Configurations</em>' containment reference.

-	 * @see #isSetPresentationConfigurations()

-	 * @see #unsetPresentationConfigurations()

-	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_PresentationConfigurations()

-	 * @model containment="true" unsettable="true" required="true"

-	 *        extendedMetaData="name='presentationConfigurations' kind='element' namespace='##targetNamespace'"

-	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='presentationConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"

-	 * @generated

-	 */

-	ProrPresentationConfigurations getPresentationConfigurations();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Presentation Configurations</em>' containment reference.

-	 * @see #isSetPresentationConfigurations()

-	 * @see #unsetPresentationConfigurations()

-	 * @see #getPresentationConfigurations()

-	 * @generated

-	 */

-	void setPresentationConfigurations(ProrPresentationConfigurations value);

-

-	/**

-	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #isSetPresentationConfigurations()

-	 * @see #getPresentationConfigurations()

-	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)

-	 * @generated

-	 */

-	void unsetPresentationConfigurations();

-

-	/**

-	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference is set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return whether the value of the '<em>Presentation Configurations</em>' containment reference is set.

-	 * @see #unsetPresentationConfigurations()

-	 * @see #getPresentationConfigurations()

-	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)

-	 * @generated

-	 */

-	boolean isSetPresentationConfigurations();

-

-} // ProrToolExtension

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pror Tool Extension</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension()
+ * @model
+ * @generated
+ */
+public interface ProrToolExtension extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Spec View Configurations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Spec View Configurations</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Spec View Configurations</em>' containment reference list.
+	 * @see #isSetSpecViewConfigurations()
+	 * @see #unsetSpecViewConfigurations()
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_SpecViewConfigurations()
+	 * @model containment="true" unsettable="true"
+	 *        extendedMetaData="name='specViewConfigurations' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='specViewConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	EList<ProrSpecViewConfiguration> getSpecViewConfigurations();
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetSpecViewConfigurations()
+	 * @see #getSpecViewConfigurations()
+	 * @generated
+	 */
+	void unsetSpecViewConfigurations();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getSpecViewConfigurations <em>Spec View Configurations</em>}' containment reference list is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Spec View Configurations</em>' containment reference list is set.
+	 * @see #unsetSpecViewConfigurations()
+	 * @see #getSpecViewConfigurations()
+	 * @generated
+	 */
+	boolean isSetSpecViewConfigurations();
+
+	/**
+	 * Returns the value of the '<em><b>General Configuration</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>General Configuration</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>General Configuration</em>' containment reference.
+	 * @see #isSetGeneralConfiguration()
+	 * @see #unsetGeneralConfiguration()
+	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_GeneralConfiguration()
+	 * @model containment="true" unsettable="true" required="true"
+	 *        extendedMetaData="name='generalConfiguration' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='generalConfiguration' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	ProrGeneralConfiguration getGeneralConfiguration();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>General Configuration</em>' containment reference.
+	 * @see #isSetGeneralConfiguration()
+	 * @see #unsetGeneralConfiguration()
+	 * @see #getGeneralConfiguration()
+	 * @generated
+	 */
+	void setGeneralConfiguration(ProrGeneralConfiguration value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetGeneralConfiguration()
+	 * @see #getGeneralConfiguration()
+	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)
+	 * @generated
+	 */
+	void unsetGeneralConfiguration();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getGeneralConfiguration <em>General Configuration</em>}' containment reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>General Configuration</em>' containment reference is set.
+	 * @see #unsetGeneralConfiguration()
+	 * @see #getGeneralConfiguration()
+	 * @see #setGeneralConfiguration(ProrGeneralConfiguration)
+	 * @generated
+	 */
+	boolean isSetGeneralConfiguration();
+
+	/**
+	 * Returns the value of the '<em><b>Presentation Configurations</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Presentation Configurations</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Presentation Configurations</em>' containment reference.
+	 * @see #isSetPresentationConfigurations()
+	 * @see #unsetPresentationConfigurations()
+	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getProrToolExtension_PresentationConfigurations()
+	 * @model containment="true" unsettable="true" required="true"
+	 *        extendedMetaData="name='presentationConfigurations' kind='element' namespace='##targetNamespace'"
+	 *        annotation="http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData wrapperName='presentationConfigurations' featureWrapperElement='true' featureElement='false' classifierWrapperElement='false' classifierElement='true'"
+	 * @generated
+	 */
+	ProrPresentationConfigurations getPresentationConfigurations();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Presentation Configurations</em>' containment reference.
+	 * @see #isSetPresentationConfigurations()
+	 * @see #unsetPresentationConfigurations()
+	 * @see #getPresentationConfigurations()
+	 * @generated
+	 */
+	void setPresentationConfigurations(ProrPresentationConfigurations value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetPresentationConfigurations()
+	 * @see #getPresentationConfigurations()
+	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)
+	 * @generated
+	 */
+	void unsetPresentationConfigurations();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension#getPresentationConfigurations <em>Presentation Configurations</em>}' containment reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Presentation Configurations</em>' containment reference is set.
+	 * @see #unsetPresentationConfigurations()
+	 * @see #getPresentationConfigurations()
+	 * @see #setPresentationConfigurations(ProrPresentationConfigurations)
+	 * @generated
+	 */
+	boolean isSetPresentationConfigurations();
+
+} // ProrToolExtension
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/UnifiedColumn.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/UnifiedColumn.java
new file mode 100644
index 0000000..0fdd17a
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/UnifiedColumn.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Unified Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#getUnifiedColumn()
+ * @model
+ * @generated
+ */
+public interface UnifiedColumn extends Column {
+} // UnifiedColumn
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ColumnImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ColumnImpl.java
index 0299cb5..2452c35 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ColumnImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ColumnImpl.java
@@ -1,291 +1,285 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.impl.ENotificationImpl;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Column</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl#getLabel <em>Label</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl#getWidth <em>Width</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class ColumnImpl extends EObjectImpl implements Column {

-	/**

-	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getLabel()

-	 * @generated

-	 * @ordered

-	 */

-	protected static final String LABEL_EDEFAULT = "<PLEASE SET LABEL>";

-

-	/**

-	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getLabel()

-	 * @generated

-	 * @ordered

-	 */

-	protected String label = LABEL_EDEFAULT;

-

-	/**

-	 * This is true if the Label attribute has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean labelESet;

-

-	/**

-	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getWidth()

-	 * @generated

-	 * @ordered

-	 */

-	protected static final int WIDTH_EDEFAULT = 100;

-

-	/**

-	 * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getWidth()

-	 * @generated

-	 * @ordered

-	 */

-	protected int width = WIDTH_EDEFAULT;

-

-	/**

-	 * This is true if the Width attribute has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean widthESet;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ColumnImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.COLUMN;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public String getLabel() {

-		return label;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setLabel(String newLabel) {

-		String oldLabel = label;

-		label = newLabel;

-		boolean oldLabelESet = labelESet;

-		labelESet = true;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.COLUMN__LABEL, oldLabel, label, !oldLabelESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetLabel() {

-		String oldLabel = label;

-		boolean oldLabelESet = labelESet;

-		label = LABEL_EDEFAULT;

-		labelESet = false;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.COLUMN__LABEL, oldLabel, LABEL_EDEFAULT, oldLabelESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetLabel() {

-		return labelESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public int getWidth() {

-		return width;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setWidth(int newWidth) {

-		int oldWidth = width;

-		width = newWidth;

-		boolean oldWidthESet = widthESet;

-		widthESet = true;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.COLUMN__WIDTH, oldWidth, width, !oldWidthESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetWidth() {

-		int oldWidth = width;

-		boolean oldWidthESet = widthESet;

-		width = WIDTH_EDEFAULT;

-		widthESet = false;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.COLUMN__WIDTH, oldWidth, WIDTH_EDEFAULT, oldWidthESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetWidth() {

-		return widthESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.COLUMN__LABEL:

-				return getLabel();

-			case ConfigurationPackage.COLUMN__WIDTH:

-				return getWidth();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.COLUMN__LABEL:

-				setLabel((String)newValue);

-				return;

-			case ConfigurationPackage.COLUMN__WIDTH:

-				setWidth((Integer)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.COLUMN__LABEL:

-				unsetLabel();

-				return;

-			case ConfigurationPackage.COLUMN__WIDTH:

-				unsetWidth();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.COLUMN__LABEL:

-				return isSetLabel();

-			case ConfigurationPackage.COLUMN__WIDTH:

-				return isSetWidth();

-		}

-		return super.eIsSet(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public String toString() {

-		if (eIsProxy()) return super.toString();

-

-		StringBuffer result = new StringBuffer(super.toString());

-		result.append(" (label: ");

-		if (labelESet) result.append(label); else result.append("<unset>");

-		result.append(", width: ");

-		if (widthESet) result.append(width); else result.append("<unset>");

-		result.append(')');

-		return result.toString();

-	}

-

-} //ColumnImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.rmf.reqif10.pror.configuration.Column;
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Column</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ColumnImpl#getWidth <em>Width</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ColumnImpl extends EObjectImpl implements Column {
+	/**
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_EDEFAULT = "<PLEASE SET LABEL>";
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_EDEFAULT;
+
+	/**
+	 * This is true if the Label attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean labelESet;
+
+	/**
+	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WIDTH_EDEFAULT = 100;
+
+	/**
+	 * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int width = WIDTH_EDEFAULT;
+
+	/**
+	 * This is true if the Width attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean widthESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ColumnImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.COLUMN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
+		boolean oldLabelESet = labelESet;
+		labelESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.COLUMN__LABEL, oldLabel, label, !oldLabelESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetLabel() {
+		String oldLabel = label;
+		boolean oldLabelESet = labelESet;
+		label = LABEL_EDEFAULT;
+		labelESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.COLUMN__LABEL, oldLabel, LABEL_EDEFAULT, oldLabelESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetLabel() {
+		return labelESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getWidth() {
+		return width;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWidth(int newWidth) {
+		int oldWidth = width;
+		width = newWidth;
+		boolean oldWidthESet = widthESet;
+		widthESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.COLUMN__WIDTH, oldWidth, width, !oldWidthESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetWidth() {
+		int oldWidth = width;
+		boolean oldWidthESet = widthESet;
+		width = WIDTH_EDEFAULT;
+		widthESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.COLUMN__WIDTH, oldWidth, WIDTH_EDEFAULT, oldWidthESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetWidth() {
+		return widthESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.COLUMN__LABEL:
+				return getLabel();
+			case ConfigurationPackage.COLUMN__WIDTH:
+				return getWidth();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.COLUMN__LABEL:
+				setLabel((String)newValue);
+				return;
+			case ConfigurationPackage.COLUMN__WIDTH:
+				setWidth((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.COLUMN__LABEL:
+				unsetLabel();
+				return;
+			case ConfigurationPackage.COLUMN__WIDTH:
+				unsetWidth();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.COLUMN__LABEL:
+				return isSetLabel();
+			case ConfigurationPackage.COLUMN__WIDTH:
+				return isSetWidth();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (label: ");
+		if (labelESet) result.append(label); else result.append("<unset>");
+		result.append(", width: ");
+		if (widthESet) result.append(width); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //ColumnImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationFactoryImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationFactoryImpl.java
index 7592504..f5251b7 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationFactoryImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationFactoryImpl.java
@@ -1,163 +1,161 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import org.eclipse.emf.ecore.EClass;

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

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.impl.EFactoryImpl;

-import org.eclipse.emf.ecore.plugin.EcorePlugin;

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model <b>Factory</b>.

- * <!-- end-user-doc -->

- * @generated

- */

-public class ConfigurationFactoryImpl extends EFactoryImpl implements ConfigurationFactory {

-	/**

-	 * Creates the default factory implementation.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public static ConfigurationFactory init() {

-		try {

-			ConfigurationFactory theConfigurationFactory = (ConfigurationFactory)EPackage.Registry.INSTANCE.getEFactory("http://eclipse.org/rmf/pror/toolextensions/1.0"); 

-			if (theConfigurationFactory != null) {

-				return theConfigurationFactory;

-			}

-		}

-		catch (Exception exception) {

-			EcorePlugin.INSTANCE.log(exception);

-		}

-		return new ConfigurationFactoryImpl();

-	}

-

-	/**

-	 * Creates an instance of the factory.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ConfigurationFactoryImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public EObject create(EClass eClass) {

-		switch (eClass.getClassifierID()) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION: return createProrToolExtension();

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION: return createProrSpecViewConfiguration();

-			case ConfigurationPackage.COLUMN: return createColumn();

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS: return createProrPresentationConfigurations();

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION: return createProrGeneralConfiguration();

-			case ConfigurationPackage.LABEL_CONFIGURATION: return createLabelConfiguration();

-			default:

-				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrToolExtension createProrToolExtension() {

-		ProrToolExtensionImpl prorToolExtension = new ProrToolExtensionImpl();

-		return prorToolExtension;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrSpecViewConfiguration createProrSpecViewConfiguration() {

-		ProrSpecViewConfigurationImpl prorSpecViewConfiguration = new ProrSpecViewConfigurationImpl();

-		return prorSpecViewConfiguration;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public Column createColumn() {

-		ColumnImpl column = new ColumnImpl();

-		return column;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrPresentationConfigurations createProrPresentationConfigurations() {

-		ProrPresentationConfigurationsImpl prorPresentationConfigurations = new ProrPresentationConfigurationsImpl();

-		return prorPresentationConfigurations;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrGeneralConfiguration createProrGeneralConfiguration() {

-		ProrGeneralConfigurationImpl prorGeneralConfiguration = new ProrGeneralConfigurationImpl();

-		return prorGeneralConfiguration;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public LabelConfiguration createLabelConfiguration() {

-		LabelConfigurationImpl labelConfiguration = new LabelConfigurationImpl();

-		return labelConfiguration;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ConfigurationPackage getConfigurationPackage() {

-		return (ConfigurationPackage)getEPackage();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @deprecated

-	 * @generated

-	 */

-	@Deprecated

-	public static ConfigurationPackage getPackage() {

-		return ConfigurationPackage.eINSTANCE;

-	}

-

-} //ConfigFactoryImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.rmf.reqif10.pror.configuration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConfigurationFactoryImpl extends EFactoryImpl implements ConfigurationFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ConfigurationFactory init() {
+		try {
+			ConfigurationFactory theConfigurationFactory = (ConfigurationFactory)EPackage.Registry.INSTANCE.getEFactory(ConfigurationPackage.eNS_URI);
+			if (theConfigurationFactory != null) {
+				return theConfigurationFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ConfigurationFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION: return createProrToolExtension();
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION: return createProrSpecViewConfiguration();
+			case ConfigurationPackage.COLUMN: return createColumn();
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS: return createProrPresentationConfigurations();
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION: return createProrGeneralConfiguration();
+			case ConfigurationPackage.LABEL_CONFIGURATION: return createLabelConfiguration();
+			case ConfigurationPackage.UNIFIED_COLUMN: return createUnifiedColumn();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrToolExtension createProrToolExtension() {
+		ProrToolExtensionImpl prorToolExtension = new ProrToolExtensionImpl();
+		return prorToolExtension;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrSpecViewConfiguration createProrSpecViewConfiguration() {
+		ProrSpecViewConfigurationImpl prorSpecViewConfiguration = new ProrSpecViewConfigurationImpl();
+		return prorSpecViewConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Column createColumn() {
+		ColumnImpl column = new ColumnImpl();
+		return column;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrPresentationConfigurations createProrPresentationConfigurations() {
+		ProrPresentationConfigurationsImpl prorPresentationConfigurations = new ProrPresentationConfigurationsImpl();
+		return prorPresentationConfigurations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrGeneralConfiguration createProrGeneralConfiguration() {
+		ProrGeneralConfigurationImpl prorGeneralConfiguration = new ProrGeneralConfigurationImpl();
+		return prorGeneralConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LabelConfiguration createLabelConfiguration() {
+		LabelConfigurationImpl labelConfiguration = new LabelConfigurationImpl();
+		return labelConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnifiedColumn createUnifiedColumn() {
+		UnifiedColumnImpl unifiedColumn = new UnifiedColumnImpl();
+		return unifiedColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationPackage getConfigurationPackage() {
+		return (ConfigurationPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ConfigurationPackage getPackage() {
+		return ConfigurationPackage.eINSTANCE;
+	}
+
+} //ConfigurationFactoryImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationPackageImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationPackageImpl.java
index 29210fe..5241e2c 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationPackageImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ConfigurationPackageImpl.java
@@ -1,599 +1,616 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import org.eclipse.emf.ecore.EAttribute;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.EReference;

-import org.eclipse.emf.ecore.impl.EPackageImpl;

-import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;

-import org.eclipse.rmf.reqif10.ReqIF10Package;

-import org.eclipse.rmf.reqif10.impl.ReqIF10PackageImpl;

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model <b>Package</b>.

- * <!-- end-user-doc -->

- * @generated

- */

-public class ConfigurationPackageImpl extends EPackageImpl implements ConfigurationPackage {

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass prorToolExtensionEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass prorSpecViewConfigurationEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass columnEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass prorPresentationConfigurationsEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass prorPresentationConfigurationEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass prorGeneralConfigurationEClass = null;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private EClass labelConfigurationEClass = null;

-

-	/**

-	 * Creates an instance of the model <b>Package</b>, registered with

-	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package

-	 * package URI value.

-	 * <p>Note: the correct way to create the package is via the static

-	 * factory method {@link #init init()}, which also performs

-	 * initialization of the package, or returns the registered package,

-	 * if one already exists.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.emf.ecore.EPackage.Registry

-	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#eNS_URI

-	 * @see #init()

-	 * @generated

-	 */

-	private ConfigurationPackageImpl() {

-		super(eNS_URI, ConfigurationFactory.eINSTANCE);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private static boolean isInited = false;

-

-	/**

-	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.

-	 * 

-	 * <p>This method is used to initialize {@link ConfigurationPackage#eINSTANCE} when that field is accessed.

-	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #eNS_URI

-	 * @see #createPackageContents()

-	 * @see #initializePackageContents()

-	 * @generated

-	 */

-	public static ConfigurationPackage init() {

-		if (isInited) return (ConfigurationPackage)EPackage.Registry.INSTANCE.getEPackage(ConfigurationPackage.eNS_URI);

-

-		// Obtain or create and register package

-		ConfigurationPackageImpl theConfigurationPackage = (ConfigurationPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ConfigurationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ConfigurationPackageImpl());

-

-		isInited = true;

-

-		// Initialize simple dependencies

-		XMLNamespacePackage.eINSTANCE.eClass();

-

-		// Obtain or create and register interdependencies

-		ReqIF10PackageImpl theReqIF10Package = (ReqIF10PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI) instanceof ReqIF10PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI) : ReqIF10Package.eINSTANCE);

-

-		// Create package meta-data objects

-		theConfigurationPackage.createPackageContents();

-		theReqIF10Package.createPackageContents();

-

-		// Initialize created meta-data

-		theConfigurationPackage.initializePackageContents();

-		theReqIF10Package.initializePackageContents();

-

-		// Mark meta-data to indicate it can't be changed

-		theConfigurationPackage.freeze();

-

-  

-		// Update the registry and return the package

-		EPackage.Registry.INSTANCE.put(ConfigurationPackage.eNS_URI, theConfigurationPackage);

-		return theConfigurationPackage;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getProrToolExtension() {

-		return prorToolExtensionEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrToolExtension_SpecViewConfigurations() {

-		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrToolExtension_GeneralConfiguration() {

-		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(1);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrToolExtension_PresentationConfigurations() {

-		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(2);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getProrSpecViewConfiguration() {

-		return prorSpecViewConfigurationEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrSpecViewConfiguration_Specification() {

-		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrSpecViewConfiguration_Columns() {

-		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(1);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrSpecViewConfiguration_LeftHeaderColumn() {

-		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(2);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getColumn() {

-		return columnEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EAttribute getColumn_Label() {

-		return (EAttribute)columnEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EAttribute getColumn_Width() {

-		return (EAttribute)columnEClass.getEStructuralFeatures().get(1);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getProrPresentationConfigurations() {

-		return prorPresentationConfigurationsEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrPresentationConfigurations_PresentationConfigurations() {

-		return (EReference)prorPresentationConfigurationsEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getProrPresentationConfiguration() {

-		return prorPresentationConfigurationEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrPresentationConfiguration_Datatype() {

-		return (EReference)prorPresentationConfigurationEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getProrGeneralConfiguration() {

-		return prorGeneralConfigurationEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EReference getProrGeneralConfiguration_LabelConfiguration() {

-		return (EReference)prorGeneralConfigurationEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EClass getLabelConfiguration() {

-		return labelConfigurationEClass;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EAttribute getLabelConfiguration_DefaultLabel() {

-		return (EAttribute)labelConfigurationEClass.getEStructuralFeatures().get(0);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ConfigurationFactory getConfigurationFactory() {

-		return (ConfigurationFactory)getEFactoryInstance();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private boolean isCreated = false;

-

-	/**

-	 * Creates the meta-model objects for the package.  This method is

-	 * guarded to have no affect on any invocation but its first.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void createPackageContents() {

-		if (isCreated) return;

-		isCreated = true;

-

-		// Create classes and their features

-		prorToolExtensionEClass = createEClass(PROR_TOOL_EXTENSION);

-		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS);

-		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION);

-		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS);

-

-		prorSpecViewConfigurationEClass = createEClass(PROR_SPEC_VIEW_CONFIGURATION);

-		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION);

-		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__COLUMNS);

-		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN);

-

-		columnEClass = createEClass(COLUMN);

-		createEAttribute(columnEClass, COLUMN__LABEL);

-		createEAttribute(columnEClass, COLUMN__WIDTH);

-

-		prorPresentationConfigurationsEClass = createEClass(PROR_PRESENTATION_CONFIGURATIONS);

-		createEReference(prorPresentationConfigurationsEClass, PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS);

-

-		prorPresentationConfigurationEClass = createEClass(PROR_PRESENTATION_CONFIGURATION);

-		createEReference(prorPresentationConfigurationEClass, PROR_PRESENTATION_CONFIGURATION__DATATYPE);

-

-		prorGeneralConfigurationEClass = createEClass(PROR_GENERAL_CONFIGURATION);

-		createEReference(prorGeneralConfigurationEClass, PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION);

-

-		labelConfigurationEClass = createEClass(LABEL_CONFIGURATION);

-		createEAttribute(labelConfigurationEClass, LABEL_CONFIGURATION__DEFAULT_LABEL);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private boolean isInitialized = false;

-

-	/**

-	 * Complete the initialization of the package and its meta-model.  This

-	 * method is guarded to have no affect on any invocation but its first.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void initializePackageContents() {

-		if (isInitialized) return;

-		isInitialized = true;

-

-		// Initialize package

-		setName(eNAME);

-		setNsPrefix(eNS_PREFIX);

-		setNsURI(eNS_URI);

-

-		// Obtain other dependent packages

-		ReqIF10Package theReqIF10Package = (ReqIF10Package)EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI);

-

-		// Create type parameters

-

-		// Set bounds for type parameters

-

-		// Add supertypes to classes

-

-		// Initialize classes and features; add operations and parameters

-		initEClass(prorToolExtensionEClass, ProrToolExtension.class, "ProrToolExtension", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEReference(getProrToolExtension_SpecViewConfigurations(), this.getProrSpecViewConfiguration(), null, "specViewConfigurations", null, 0, -1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEReference(getProrToolExtension_GeneralConfiguration(), this.getProrGeneralConfiguration(), null, "generalConfiguration", null, 1, 1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEReference(getProrToolExtension_PresentationConfigurations(), this.getProrPresentationConfigurations(), null, "presentationConfigurations", null, 1, 1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(prorSpecViewConfigurationEClass, ProrSpecViewConfiguration.class, "ProrSpecViewConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEReference(getProrSpecViewConfiguration_Specification(), theReqIF10Package.getSpecification(), null, "specification", null, 1, 1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEReference(getProrSpecViewConfiguration_Columns(), this.getColumn(), null, "columns", null, 0, -1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEReference(getProrSpecViewConfiguration_LeftHeaderColumn(), this.getColumn(), null, "leftHeaderColumn", null, 1, 1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(columnEClass, Column.class, "Column", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEAttribute(getColumn_Label(), ecorePackage.getEString(), "label", "<PLEASE SET LABEL>", 1, 1, Column.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEAttribute(getColumn_Width(), ecorePackage.getEInt(), "width", "100", 1, 1, Column.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(prorPresentationConfigurationsEClass, ProrPresentationConfigurations.class, "ProrPresentationConfigurations", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEReference(getProrPresentationConfigurations_PresentationConfigurations(), this.getProrPresentationConfiguration(), null, "presentationConfigurations", null, 0, -1, ProrPresentationConfigurations.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(prorPresentationConfigurationEClass, ProrPresentationConfiguration.class, "ProrPresentationConfiguration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEReference(getProrPresentationConfiguration_Datatype(), theReqIF10Package.getDatatypeDefinition(), null, "datatype", null, 1, 1, ProrPresentationConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(prorGeneralConfigurationEClass, ProrGeneralConfiguration.class, "ProrGeneralConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEReference(getProrGeneralConfiguration_LabelConfiguration(), this.getLabelConfiguration(), null, "labelConfiguration", null, 1, 1, ProrGeneralConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		initEClass(labelConfigurationEClass, LabelConfiguration.class, "LabelConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEAttribute(getLabelConfiguration_DefaultLabel(), ecorePackage.getEString(), "defaultLabel", null, 0, -1, LabelConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-

-		// Create resource

-		createResource(eNS_URI);

-

-		// Create annotations

-		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData

-		createExtendedMetaDataAnnotations();

-		// http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData

-		createXMLPersistenceMappingExtendedMetaDataAnnotations();

-	}

-

-	/**

-	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected void createExtendedMetaDataAnnotations() {

-		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		

-		addAnnotation

-		  (getProrToolExtension_SpecViewConfigurations(), 

-		   source, 

-		   new String[] {

-			 "name", "specViewConfigurations",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrToolExtension_GeneralConfiguration(), 

-		   source, 

-		   new String[] {

-			 "name", "generalConfiguration",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrToolExtension_PresentationConfigurations(), 

-		   source, 

-		   new String[] {

-			 "name", "presentationConfigurations",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrSpecViewConfiguration_Columns(), 

-		   source, 

-		   new String[] {

-			 "name", "columns",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrSpecViewConfiguration_LeftHeaderColumn(), 

-		   source, 

-		   new String[] {

-			 "name", "leftHeaderColumn",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrPresentationConfigurations_PresentationConfigurations(), 

-		   source, 

-		   new String[] {

-			 "name", "presentationConfigurations",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });			

-		addAnnotation

-		  (getProrGeneralConfiguration_LabelConfiguration(), 

-		   source, 

-		   new String[] {

-			 "name", "labelConfiguration",

-			 "kind", "element",

-			 "namespace", "##targetNamespace"

-		   });	

-	}

-

-	/**

-	 * Initializes the annotations for <b>http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData</b>.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected void createXMLPersistenceMappingExtendedMetaDataAnnotations() {

-		String source = "http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData";			

-		addAnnotation

-		  (getProrToolExtension_SpecViewConfigurations(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "specViewConfigurations",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrToolExtension_GeneralConfiguration(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "generalConfiguration",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrToolExtension_PresentationConfigurations(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "presentationConfigurations",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrSpecViewConfiguration_Columns(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "columns",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrSpecViewConfiguration_LeftHeaderColumn(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "leftHeaderColumn",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrPresentationConfigurations_PresentationConfigurations(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "presentationConfigurations",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });			

-		addAnnotation

-		  (getProrGeneralConfiguration_LabelConfiguration(), 

-		   source, 

-		   new String[] {

-			 "wrapperName", "labelConfiguration",

-			 "featureWrapperElement", "true",

-			 "featureElement", "false",

-			 "classifierWrapperElement", "false",

-			 "classifierElement", "true"

-		   });

-	}

-

-} //ConfigPackageImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
+
+import org.eclipse.rmf.reqif10.ReqIF10Package;
+
+import org.eclipse.rmf.reqif10.impl.ReqIF10PackageImpl;
+
+import org.eclipse.rmf.reqif10.pror.configuration.Column;
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationFactory;
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;
+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConfigurationPackageImpl extends EPackageImpl implements ConfigurationPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass prorToolExtensionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass prorSpecViewConfigurationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass columnEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass prorPresentationConfigurationsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass prorPresentationConfigurationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass prorGeneralConfigurationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass labelConfigurationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass unifiedColumnEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ConfigurationPackageImpl() {
+		super(eNS_URI, ConfigurationFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link ConfigurationPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ConfigurationPackage init() {
+		if (isInited) return (ConfigurationPackage)EPackage.Registry.INSTANCE.getEPackage(ConfigurationPackage.eNS_URI);
+
+		// Obtain or create and register package
+		ConfigurationPackageImpl theConfigurationPackage = (ConfigurationPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ConfigurationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ConfigurationPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLNamespacePackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		ReqIF10PackageImpl theReqIF10Package = (ReqIF10PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI) instanceof ReqIF10PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI) : ReqIF10Package.eINSTANCE);
+
+		// Create package meta-data objects
+		theConfigurationPackage.createPackageContents();
+		theReqIF10Package.createPackageContents();
+
+		// Initialize created meta-data
+		theConfigurationPackage.initializePackageContents();
+		theReqIF10Package.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theConfigurationPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ConfigurationPackage.eNS_URI, theConfigurationPackage);
+		return theConfigurationPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProrToolExtension() {
+		return prorToolExtensionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrToolExtension_SpecViewConfigurations() {
+		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrToolExtension_GeneralConfiguration() {
+		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrToolExtension_PresentationConfigurations() {
+		return (EReference)prorToolExtensionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProrSpecViewConfiguration() {
+		return prorSpecViewConfigurationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrSpecViewConfiguration_Specification() {
+		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrSpecViewConfiguration_Columns() {
+		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrSpecViewConfiguration_LeftHeaderColumn() {
+		return (EReference)prorSpecViewConfigurationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getColumn() {
+		return columnEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getColumn_Label() {
+		return (EAttribute)columnEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getColumn_Width() {
+		return (EAttribute)columnEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProrPresentationConfigurations() {
+		return prorPresentationConfigurationsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrPresentationConfigurations_PresentationConfigurations() {
+		return (EReference)prorPresentationConfigurationsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProrPresentationConfiguration() {
+		return prorPresentationConfigurationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrPresentationConfiguration_Datatype() {
+		return (EReference)prorPresentationConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProrGeneralConfiguration() {
+		return prorGeneralConfigurationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProrGeneralConfiguration_LabelConfiguration() {
+		return (EReference)prorGeneralConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLabelConfiguration() {
+		return labelConfigurationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLabelConfiguration_DefaultLabel() {
+		return (EAttribute)labelConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getUnifiedColumn() {
+		return unifiedColumnEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationFactory getConfigurationFactory() {
+		return (ConfigurationFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		prorToolExtensionEClass = createEClass(PROR_TOOL_EXTENSION);
+		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS);
+		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION);
+		createEReference(prorToolExtensionEClass, PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS);
+
+		prorSpecViewConfigurationEClass = createEClass(PROR_SPEC_VIEW_CONFIGURATION);
+		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION);
+		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__COLUMNS);
+		createEReference(prorSpecViewConfigurationEClass, PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN);
+
+		columnEClass = createEClass(COLUMN);
+		createEAttribute(columnEClass, COLUMN__LABEL);
+		createEAttribute(columnEClass, COLUMN__WIDTH);
+
+		prorPresentationConfigurationsEClass = createEClass(PROR_PRESENTATION_CONFIGURATIONS);
+		createEReference(prorPresentationConfigurationsEClass, PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS);
+
+		prorPresentationConfigurationEClass = createEClass(PROR_PRESENTATION_CONFIGURATION);
+		createEReference(prorPresentationConfigurationEClass, PROR_PRESENTATION_CONFIGURATION__DATATYPE);
+
+		prorGeneralConfigurationEClass = createEClass(PROR_GENERAL_CONFIGURATION);
+		createEReference(prorGeneralConfigurationEClass, PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION);
+
+		labelConfigurationEClass = createEClass(LABEL_CONFIGURATION);
+		createEAttribute(labelConfigurationEClass, LABEL_CONFIGURATION__DEFAULT_LABEL);
+
+		unifiedColumnEClass = createEClass(UNIFIED_COLUMN);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ReqIF10Package theReqIF10Package = (ReqIF10Package)EPackage.Registry.INSTANCE.getEPackage(ReqIF10Package.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		unifiedColumnEClass.getESuperTypes().add(this.getColumn());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(prorToolExtensionEClass, ProrToolExtension.class, "ProrToolExtension", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProrToolExtension_SpecViewConfigurations(), this.getProrSpecViewConfiguration(), null, "specViewConfigurations", null, 0, -1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProrToolExtension_GeneralConfiguration(), this.getProrGeneralConfiguration(), null, "generalConfiguration", null, 1, 1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProrToolExtension_PresentationConfigurations(), this.getProrPresentationConfigurations(), null, "presentationConfigurations", null, 1, 1, ProrToolExtension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(prorSpecViewConfigurationEClass, ProrSpecViewConfiguration.class, "ProrSpecViewConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProrSpecViewConfiguration_Specification(), theReqIF10Package.getSpecification(), null, "specification", null, 1, 1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProrSpecViewConfiguration_Columns(), this.getColumn(), null, "columns", null, 0, -1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getProrSpecViewConfiguration_LeftHeaderColumn(), this.getColumn(), null, "leftHeaderColumn", null, 1, 1, ProrSpecViewConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(columnEClass, Column.class, "Column", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getColumn_Label(), ecorePackage.getEString(), "label", "<PLEASE SET LABEL>", 1, 1, Column.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getColumn_Width(), ecorePackage.getEInt(), "width", "100", 1, 1, Column.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(prorPresentationConfigurationsEClass, ProrPresentationConfigurations.class, "ProrPresentationConfigurations", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProrPresentationConfigurations_PresentationConfigurations(), this.getProrPresentationConfiguration(), null, "presentationConfigurations", null, 0, -1, ProrPresentationConfigurations.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(prorPresentationConfigurationEClass, ProrPresentationConfiguration.class, "ProrPresentationConfiguration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProrPresentationConfiguration_Datatype(), theReqIF10Package.getDatatypeDefinition(), null, "datatype", null, 1, 1, ProrPresentationConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(prorGeneralConfigurationEClass, ProrGeneralConfiguration.class, "ProrGeneralConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProrGeneralConfiguration_LabelConfiguration(), this.getLabelConfiguration(), null, "labelConfiguration", null, 1, 1, ProrGeneralConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(labelConfigurationEClass, LabelConfiguration.class, "LabelConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLabelConfiguration_DefaultLabel(), ecorePackage.getEString(), "defaultLabel", null, 0, -1, LabelConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(unifiedColumnEClass, UnifiedColumn.class, "UnifiedColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+		// http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData
+		createXMLPersistenceMappingExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";	
+		addAnnotation
+		  (getProrToolExtension_SpecViewConfigurations(), 
+		   source, 
+		   new String[] {
+			 "name", "specViewConfigurations",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrToolExtension_GeneralConfiguration(), 
+		   source, 
+		   new String[] {
+			 "name", "generalConfiguration",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrToolExtension_PresentationConfigurations(), 
+		   source, 
+		   new String[] {
+			 "name", "presentationConfigurations",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrSpecViewConfiguration_Columns(), 
+		   source, 
+		   new String[] {
+			 "name", "columns",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrSpecViewConfiguration_LeftHeaderColumn(), 
+		   source, 
+		   new String[] {
+			 "name", "leftHeaderColumn",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrPresentationConfigurations_PresentationConfigurations(), 
+		   source, 
+		   new String[] {
+			 "name", "presentationConfigurations",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getProrGeneralConfiguration_LabelConfiguration(), 
+		   source, 
+		   new String[] {
+			 "name", "labelConfiguration",
+			 "kind", "element",
+			 "namespace", "##targetNamespace"
+		   });
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createXMLPersistenceMappingExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData";	
+		addAnnotation
+		  (getProrToolExtension_SpecViewConfigurations(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "specViewConfigurations",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrToolExtension_GeneralConfiguration(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "generalConfiguration",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrToolExtension_PresentationConfigurations(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "presentationConfigurations",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrSpecViewConfiguration_Columns(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "columns",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrSpecViewConfiguration_LeftHeaderColumn(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "leftHeaderColumn",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrPresentationConfigurations_PresentationConfigurations(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "presentationConfigurations",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });	
+		addAnnotation
+		  (getProrGeneralConfiguration_LabelConfiguration(), 
+		   source, 
+		   new String[] {
+			 "wrapperName", "labelConfiguration",
+			 "featureWrapperElement", "true",
+			 "featureElement", "false",
+			 "classifierWrapperElement", "false",
+			 "classifierElement", "true"
+		   });
+	}
+
+} //ConfigurationPackageImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/LabelConfigurationImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/LabelConfigurationImpl.java
index efd7fde..6b4ecdc 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/LabelConfigurationImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/LabelConfigurationImpl.java
@@ -1,173 +1,168 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import java.util.Collection;

-

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;

-import org.eclipse.emf.ecore.util.InternalEList;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Label Configuration</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl#getDefaultLabel <em>Default Label</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class LabelConfigurationImpl extends EObjectImpl implements LabelConfiguration {

-	/**

-	 * The cached value of the '{@link #getDefaultLabel() <em>Default Label</em>}' attribute list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getDefaultLabel()

-	 * @generated

-	 * @ordered

-	 */

-	protected EList<String> defaultLabel;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected LabelConfigurationImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.LABEL_CONFIGURATION;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EList<String> getDefaultLabel() {

-		if (defaultLabel == null) {

-			defaultLabel = new EDataTypeUniqueEList.Unsettable<String>(String.class, this, ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL);

-		}

-		return defaultLabel;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetDefaultLabel() {

-		if (defaultLabel != null) ((InternalEList.Unsettable<?>)defaultLabel).unset();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetDefaultLabel() {

-		return defaultLabel != null && ((InternalEList.Unsettable<?>)defaultLabel).isSet();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:

-				return getDefaultLabel();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@SuppressWarnings("unchecked")

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:

-				getDefaultLabel().clear();

-				getDefaultLabel().addAll((Collection<? extends String>)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:

-				unsetDefaultLabel();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:

-				return isSetDefaultLabel();

-		}

-		return super.eIsSet(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public String toString() {

-		if (eIsProxy()) return super.toString();

-

-		StringBuffer result = new StringBuffer(super.toString());

-		result.append(" (defaultLabel: ");

-		result.append(defaultLabel);

-		result.append(')');

-		return result.toString();

-	}

-

-} //LabelConfigurationImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.LabelConfigurationImpl#getDefaultLabel <em>Default Label</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LabelConfigurationImpl extends EObjectImpl implements LabelConfiguration {
+	/**
+	 * The cached value of the '{@link #getDefaultLabel() <em>Default Label</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefaultLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> defaultLabel;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LabelConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.LABEL_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<String> getDefaultLabel() {
+		if (defaultLabel == null) {
+			defaultLabel = new EDataTypeUniqueEList.Unsettable<String>(String.class, this, ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL);
+		}
+		return defaultLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetDefaultLabel() {
+		if (defaultLabel != null) ((InternalEList.Unsettable<?>)defaultLabel).unset();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetDefaultLabel() {
+		return defaultLabel != null && ((InternalEList.Unsettable<?>)defaultLabel).isSet();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:
+				return getDefaultLabel();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:
+				getDefaultLabel().clear();
+				getDefaultLabel().addAll((Collection<? extends String>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:
+				unsetDefaultLabel();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.LABEL_CONFIGURATION__DEFAULT_LABEL:
+				return isSetDefaultLabel();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (defaultLabel: ");
+		result.append(defaultLabel);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LabelConfigurationImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrGeneralConfigurationImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrGeneralConfigurationImpl.java
index 28013c0..252f4b1 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrGeneralConfigurationImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrGeneralConfigurationImpl.java
@@ -1,243 +1,237 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.common.notify.NotificationChain;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.InternalEObject;

-import org.eclipse.emf.ecore.impl.ENotificationImpl;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Pror General Configuration</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl#getLabelConfiguration <em>Label Configuration</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class ProrGeneralConfigurationImpl extends EObjectImpl implements ProrGeneralConfiguration {

-	/**

-	 * The cached value of the '{@link #getLabelConfiguration() <em>Label Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getLabelConfiguration()

-	 * @generated

-	 * @ordered

-	 */

-	protected LabelConfiguration labelConfiguration;

-

-	/**

-	 * This is true if the Label Configuration containment reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean labelConfigurationESet;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ProrGeneralConfigurationImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.PROR_GENERAL_CONFIGURATION;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public LabelConfiguration getLabelConfiguration() {

-		return labelConfiguration;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicSetLabelConfiguration(LabelConfiguration newLabelConfiguration, NotificationChain msgs) {

-		LabelConfiguration oldLabelConfiguration = labelConfiguration;

-		labelConfiguration = newLabelConfiguration;

-		boolean oldLabelConfigurationESet = labelConfigurationESet;

-		labelConfigurationESet = true;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, oldLabelConfiguration, newLabelConfiguration, !oldLabelConfigurationESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setLabelConfiguration(LabelConfiguration newLabelConfiguration) {

-		if (newLabelConfiguration != labelConfiguration) {

-			NotificationChain msgs = null;

-			if (labelConfiguration != null)

-				msgs = ((InternalEObject)labelConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);

-			if (newLabelConfiguration != null)

-				msgs = ((InternalEObject)newLabelConfiguration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);

-			msgs = basicSetLabelConfiguration(newLabelConfiguration, msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldLabelConfigurationESet = labelConfigurationESet;

-			labelConfigurationESet = true;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, newLabelConfiguration, newLabelConfiguration, !oldLabelConfigurationESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicUnsetLabelConfiguration(NotificationChain msgs) {

-		LabelConfiguration oldLabelConfiguration = labelConfiguration;

-		labelConfiguration = null;

-		boolean oldLabelConfigurationESet = labelConfigurationESet;

-		labelConfigurationESet = false;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, oldLabelConfiguration, null, oldLabelConfigurationESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetLabelConfiguration() {

-		if (labelConfiguration != null) {

-			NotificationChain msgs = null;

-			msgs = ((InternalEObject)labelConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);

-			msgs = basicUnsetLabelConfiguration(msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldLabelConfigurationESet = labelConfigurationESet;

-			labelConfigurationESet = false;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, null, oldLabelConfigurationESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetLabelConfiguration() {

-		return labelConfigurationESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:

-				return basicUnsetLabelConfiguration(msgs);

-		}

-		return super.eInverseRemove(otherEnd, featureID, msgs);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:

-				return getLabelConfiguration();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:

-				setLabelConfiguration((LabelConfiguration)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:

-				unsetLabelConfiguration();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:

-				return isSetLabelConfiguration();

-		}

-		return super.eIsSet(featureID);

-	}

-

-} //ProrGeneralConfigurationImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pror General Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrGeneralConfigurationImpl#getLabelConfiguration <em>Label Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProrGeneralConfigurationImpl extends EObjectImpl implements ProrGeneralConfiguration {
+	/**
+	 * The cached value of the '{@link #getLabelConfiguration() <em>Label Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabelConfiguration()
+	 * @generated
+	 * @ordered
+	 */
+	protected LabelConfiguration labelConfiguration;
+
+	/**
+	 * This is true if the Label Configuration containment reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean labelConfigurationESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProrGeneralConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.PROR_GENERAL_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LabelConfiguration getLabelConfiguration() {
+		return labelConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLabelConfiguration(LabelConfiguration newLabelConfiguration, NotificationChain msgs) {
+		LabelConfiguration oldLabelConfiguration = labelConfiguration;
+		labelConfiguration = newLabelConfiguration;
+		boolean oldLabelConfigurationESet = labelConfigurationESet;
+		labelConfigurationESet = true;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, oldLabelConfiguration, newLabelConfiguration, !oldLabelConfigurationESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabelConfiguration(LabelConfiguration newLabelConfiguration) {
+		if (newLabelConfiguration != labelConfiguration) {
+			NotificationChain msgs = null;
+			if (labelConfiguration != null)
+				msgs = ((InternalEObject)labelConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);
+			if (newLabelConfiguration != null)
+				msgs = ((InternalEObject)newLabelConfiguration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);
+			msgs = basicSetLabelConfiguration(newLabelConfiguration, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldLabelConfigurationESet = labelConfigurationESet;
+			labelConfigurationESet = true;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, newLabelConfiguration, newLabelConfiguration, !oldLabelConfigurationESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicUnsetLabelConfiguration(NotificationChain msgs) {
+		LabelConfiguration oldLabelConfiguration = labelConfiguration;
+		labelConfiguration = null;
+		boolean oldLabelConfigurationESet = labelConfigurationESet;
+		labelConfigurationESet = false;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, oldLabelConfiguration, null, oldLabelConfigurationESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetLabelConfiguration() {
+		if (labelConfiguration != null) {
+			NotificationChain msgs = null;
+			msgs = ((InternalEObject)labelConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, msgs);
+			msgs = basicUnsetLabelConfiguration(msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldLabelConfigurationESet = labelConfigurationESet;
+			labelConfigurationESet = false;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION, null, null, oldLabelConfigurationESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetLabelConfiguration() {
+		return labelConfigurationESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:
+				return basicUnsetLabelConfiguration(msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:
+				return getLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:
+				setLabelConfiguration((LabelConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:
+				unsetLabelConfiguration();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION__LABEL_CONFIGURATION:
+				return isSetLabelConfiguration();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProrGeneralConfigurationImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationImpl.java
index 338dbc2..afff36e 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationImpl.java
@@ -1,198 +1,192 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.InternalEObject;

-import org.eclipse.emf.ecore.impl.ENotificationImpl;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.rmf.reqif10.DatatypeDefinition;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

-

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Pror Presentation Configuration</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl#getDatatype <em>Datatype</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public abstract class ProrPresentationConfigurationImpl extends EObjectImpl implements ProrPresentationConfiguration {

-	/**

-	 * The cached value of the '{@link #getDatatype() <em>Datatype</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getDatatype()

-	 * @generated

-	 * @ordered

-	 */

-	protected DatatypeDefinition datatype;

-

-	/**

-	 * This is true if the Datatype reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean datatypeESet;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ProrPresentationConfigurationImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.PROR_PRESENTATION_CONFIGURATION;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public DatatypeDefinition getDatatype() {

-		if (datatype != null && datatype.eIsProxy()) {

-			InternalEObject oldDatatype = (InternalEObject)datatype;

-			datatype = (DatatypeDefinition)eResolveProxy(oldDatatype);

-			if (datatype != oldDatatype) {

-				if (eNotificationRequired())

-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, datatype));

-			}

-		}

-		return datatype;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public DatatypeDefinition basicGetDatatype() {

-		return datatype;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setDatatype(DatatypeDefinition newDatatype) {

-		DatatypeDefinition oldDatatype = datatype;

-		datatype = newDatatype;

-		boolean oldDatatypeESet = datatypeESet;

-		datatypeESet = true;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, datatype, !oldDatatypeESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetDatatype() {

-		DatatypeDefinition oldDatatype = datatype;

-		boolean oldDatatypeESet = datatypeESet;

-		datatype = null;

-		datatypeESet = false;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, null, oldDatatypeESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetDatatype() {

-		return datatypeESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:

-				if (resolve) return getDatatype();

-				return basicGetDatatype();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:

-				setDatatype((DatatypeDefinition)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:

-				unsetDatatype();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:

-				return isSetDatatype();

-		}

-		return super.eIsSet(featureID);

-	}

-

-} //ProrPresentationConfigurationImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.rmf.reqif10.DatatypeDefinition;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pror Presentation Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationImpl#getDatatype <em>Datatype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ProrPresentationConfigurationImpl extends EObjectImpl implements ProrPresentationConfiguration {
+	/**
+	 * The cached value of the '{@link #getDatatype() <em>Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatatype()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatatypeDefinition datatype;
+
+	/**
+	 * This is true if the Datatype reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean datatypeESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProrPresentationConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.PROR_PRESENTATION_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatatypeDefinition getDatatype() {
+		if (datatype != null && datatype.eIsProxy()) {
+			InternalEObject oldDatatype = (InternalEObject)datatype;
+			datatype = (DatatypeDefinition)eResolveProxy(oldDatatype);
+			if (datatype != oldDatatype) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, datatype));
+			}
+		}
+		return datatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatatypeDefinition basicGetDatatype() {
+		return datatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDatatype(DatatypeDefinition newDatatype) {
+		DatatypeDefinition oldDatatype = datatype;
+		datatype = newDatatype;
+		boolean oldDatatypeESet = datatypeESet;
+		datatypeESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, datatype, !oldDatatypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetDatatype() {
+		DatatypeDefinition oldDatatype = datatype;
+		boolean oldDatatypeESet = datatypeESet;
+		datatype = null;
+		datatypeESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE, oldDatatype, null, oldDatatypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetDatatype() {
+		return datatypeESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:
+				if (resolve) return getDatatype();
+				return basicGetDatatype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:
+				setDatatype((DatatypeDefinition)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:
+				unsetDatatype();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION__DATATYPE:
+				return isSetDatatype();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProrPresentationConfigurationImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationsImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationsImpl.java
index e2eb43e..64dec86 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationsImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrPresentationConfigurationsImpl.java
@@ -1,174 +1,170 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import java.util.Collection;

-

-import org.eclipse.emf.common.notify.NotificationChain;

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.InternalEObject;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.emf.ecore.util.EObjectContainmentEList;

-import org.eclipse.emf.ecore.util.InternalEList;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Pror Presentation Configurations</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl#getPresentationConfigurations <em>Presentation Configurations</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class ProrPresentationConfigurationsImpl extends EObjectImpl implements ProrPresentationConfigurations {

-	/**

-	 * The cached value of the '{@link #getPresentationConfigurations() <em>Presentation Configurations</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getPresentationConfigurations()

-	 * @generated

-	 * @ordered

-	 */

-	protected EList<ProrPresentationConfiguration> presentationConfigurations;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ProrPresentationConfigurationsImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.PROR_PRESENTATION_CONFIGURATIONS;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EList<ProrPresentationConfiguration> getPresentationConfigurations() {

-		if (presentationConfigurations == null) {

-			presentationConfigurations = new EObjectContainmentEList.Unsettable<ProrPresentationConfiguration>(ProrPresentationConfiguration.class, this, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS);

-		}

-		return presentationConfigurations;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetPresentationConfigurations() {

-		if (presentationConfigurations != null) ((InternalEList.Unsettable<?>)presentationConfigurations).unset();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetPresentationConfigurations() {

-		return presentationConfigurations != null && ((InternalEList.Unsettable<?>)presentationConfigurations).isSet();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:

-				return ((InternalEList<?>)getPresentationConfigurations()).basicRemove(otherEnd, msgs);

-		}

-		return super.eInverseRemove(otherEnd, featureID, msgs);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:

-				return getPresentationConfigurations();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@SuppressWarnings("unchecked")

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:

-				getPresentationConfigurations().clear();

-				getPresentationConfigurations().addAll((Collection<? extends ProrPresentationConfiguration>)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:

-				unsetPresentationConfigurations();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:

-				return isSetPresentationConfigurations();

-		}

-		return super.eIsSet(featureID);

-	}

-

-} //ProrPresentationConfigurationsImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pror Presentation Configurations</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrPresentationConfigurationsImpl#getPresentationConfigurations <em>Presentation Configurations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProrPresentationConfigurationsImpl extends EObjectImpl implements ProrPresentationConfigurations {
+	/**
+	 * The cached value of the '{@link #getPresentationConfigurations() <em>Presentation Configurations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPresentationConfigurations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ProrPresentationConfiguration> presentationConfigurations;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProrPresentationConfigurationsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.PROR_PRESENTATION_CONFIGURATIONS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ProrPresentationConfiguration> getPresentationConfigurations() {
+		if (presentationConfigurations == null) {
+			presentationConfigurations = new EObjectContainmentEList.Unsettable<ProrPresentationConfiguration>(ProrPresentationConfiguration.class, this, ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS);
+		}
+		return presentationConfigurations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetPresentationConfigurations() {
+		if (presentationConfigurations != null) ((InternalEList.Unsettable<?>)presentationConfigurations).unset();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetPresentationConfigurations() {
+		return presentationConfigurations != null && ((InternalEList.Unsettable<?>)presentationConfigurations).isSet();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:
+				return ((InternalEList<?>)getPresentationConfigurations()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:
+				return getPresentationConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:
+				getPresentationConfigurations().clear();
+				getPresentationConfigurations().addAll((Collection<? extends ProrPresentationConfiguration>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:
+				unsetPresentationConfigurations();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS__PRESENTATION_CONFIGURATIONS:
+				return isSetPresentationConfigurations();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProrPresentationConfigurationsImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrSpecViewConfigurationImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrSpecViewConfigurationImpl.java
index 6797911..498c0fa 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrSpecViewConfigurationImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrSpecViewConfigurationImpl.java
@@ -1,399 +1,395 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import java.util.Collection;

-

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.common.notify.NotificationChain;

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.InternalEObject;

-import org.eclipse.emf.ecore.impl.ENotificationImpl;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.emf.ecore.util.EObjectContainmentEList;

-import org.eclipse.emf.ecore.util.InternalEList;

-import org.eclipse.rmf.reqif10.Specification;

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Pror Spec View Configuration</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getSpecification <em>Specification</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getColumns <em>Columns</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getLeftHeaderColumn <em>Left Header Column</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class ProrSpecViewConfigurationImpl extends EObjectImpl implements ProrSpecViewConfiguration {

-	/**

-	 * The cached value of the '{@link #getSpecification() <em>Specification</em>}' reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getSpecification()

-	 * @generated

-	 * @ordered

-	 */

-	protected Specification specification;

-

-	/**

-	 * This is true if the Specification reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean specificationESet;

-

-	/**

-	 * The cached value of the '{@link #getColumns() <em>Columns</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getColumns()

-	 * @generated

-	 * @ordered

-	 */

-	protected EList<Column> columns;

-

-	/**

-	 * The cached value of the '{@link #getLeftHeaderColumn() <em>Left Header Column</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getLeftHeaderColumn()

-	 * @generated

-	 * @ordered

-	 */

-	protected Column leftHeaderColumn;

-

-	/**

-	 * This is true if the Left Header Column containment reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean leftHeaderColumnESet;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ProrSpecViewConfigurationImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.PROR_SPEC_VIEW_CONFIGURATION;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public Specification getSpecification() {

-		if (specification != null && specification.eIsProxy()) {

-			InternalEObject oldSpecification = (InternalEObject)specification;

-			specification = (Specification)eResolveProxy(oldSpecification);

-			if (specification != oldSpecification) {

-				if (eNotificationRequired())

-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, specification));

-			}

-		}

-		return specification;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public Specification basicGetSpecification() {

-		return specification;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setSpecification(Specification newSpecification) {

-		Specification oldSpecification = specification;

-		specification = newSpecification;

-		boolean oldSpecificationESet = specificationESet;

-		specificationESet = true;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, specification, !oldSpecificationESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetSpecification() {

-		Specification oldSpecification = specification;

-		boolean oldSpecificationESet = specificationESet;

-		specification = null;

-		specificationESet = false;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, null, oldSpecificationESet));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetSpecification() {

-		return specificationESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EList<Column> getColumns() {

-		if (columns == null) {

-			columns = new EObjectContainmentEList.Unsettable<Column>(Column.class, this, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS);

-		}

-		return columns;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetColumns() {

-		if (columns != null) ((InternalEList.Unsettable<?>)columns).unset();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetColumns() {

-		return columns != null && ((InternalEList.Unsettable<?>)columns).isSet();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public Column getLeftHeaderColumn() {

-		return leftHeaderColumn;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicSetLeftHeaderColumn(Column newLeftHeaderColumn, NotificationChain msgs) {

-		Column oldLeftHeaderColumn = leftHeaderColumn;

-		leftHeaderColumn = newLeftHeaderColumn;

-		boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;

-		leftHeaderColumnESet = true;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, oldLeftHeaderColumn, newLeftHeaderColumn, !oldLeftHeaderColumnESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setLeftHeaderColumn(Column newLeftHeaderColumn) {

-		if (newLeftHeaderColumn != leftHeaderColumn) {

-			NotificationChain msgs = null;

-			if (leftHeaderColumn != null)

-				msgs = ((InternalEObject)leftHeaderColumn).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);

-			if (newLeftHeaderColumn != null)

-				msgs = ((InternalEObject)newLeftHeaderColumn).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);

-			msgs = basicSetLeftHeaderColumn(newLeftHeaderColumn, msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;

-			leftHeaderColumnESet = true;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, newLeftHeaderColumn, newLeftHeaderColumn, !oldLeftHeaderColumnESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicUnsetLeftHeaderColumn(NotificationChain msgs) {

-		Column oldLeftHeaderColumn = leftHeaderColumn;

-		leftHeaderColumn = null;

-		boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;

-		leftHeaderColumnESet = false;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, oldLeftHeaderColumn, null, oldLeftHeaderColumnESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetLeftHeaderColumn() {

-		if (leftHeaderColumn != null) {

-			NotificationChain msgs = null;

-			msgs = ((InternalEObject)leftHeaderColumn).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);

-			msgs = basicUnsetLeftHeaderColumn(msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;

-			leftHeaderColumnESet = false;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, null, oldLeftHeaderColumnESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetLeftHeaderColumn() {

-		return leftHeaderColumnESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:

-				return ((InternalEList<?>)getColumns()).basicRemove(otherEnd, msgs);

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:

-				return basicUnsetLeftHeaderColumn(msgs);

-		}

-		return super.eInverseRemove(otherEnd, featureID, msgs);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:

-				if (resolve) return getSpecification();

-				return basicGetSpecification();

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:

-				return getColumns();

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:

-				return getLeftHeaderColumn();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@SuppressWarnings("unchecked")

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:

-				setSpecification((Specification)newValue);

-				return;

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:

-				getColumns().clear();

-				getColumns().addAll((Collection<? extends Column>)newValue);

-				return;

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:

-				setLeftHeaderColumn((Column)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:

-				unsetSpecification();

-				return;

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:

-				unsetColumns();

-				return;

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:

-				unsetLeftHeaderColumn();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:

-				return isSetSpecification();

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:

-				return isSetColumns();

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:

-				return isSetLeftHeaderColumn();

-		}

-		return super.eIsSet(featureID);

-	}

-

-} //ProrSpecViewConfigurationImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.rmf.reqif10.Specification;
+
+import org.eclipse.rmf.reqif10.pror.configuration.Column;
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pror Spec View Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getSpecification <em>Specification</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getColumns <em>Columns</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrSpecViewConfigurationImpl#getLeftHeaderColumn <em>Left Header Column</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProrSpecViewConfigurationImpl extends EObjectImpl implements ProrSpecViewConfiguration {
+	/**
+	 * The cached value of the '{@link #getSpecification() <em>Specification</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSpecification()
+	 * @generated
+	 * @ordered
+	 */
+	protected Specification specification;
+
+	/**
+	 * This is true if the Specification reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean specificationESet;
+
+	/**
+	 * The cached value of the '{@link #getColumns() <em>Columns</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumns()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Column> columns;
+
+	/**
+	 * The cached value of the '{@link #getLeftHeaderColumn() <em>Left Header Column</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLeftHeaderColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected Column leftHeaderColumn;
+
+	/**
+	 * This is true if the Left Header Column containment reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean leftHeaderColumnESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProrSpecViewConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.PROR_SPEC_VIEW_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Specification getSpecification() {
+		if (specification != null && specification.eIsProxy()) {
+			InternalEObject oldSpecification = (InternalEObject)specification;
+			specification = (Specification)eResolveProxy(oldSpecification);
+			if (specification != oldSpecification) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, specification));
+			}
+		}
+		return specification;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Specification basicGetSpecification() {
+		return specification;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSpecification(Specification newSpecification) {
+		Specification oldSpecification = specification;
+		specification = newSpecification;
+		boolean oldSpecificationESet = specificationESet;
+		specificationESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, specification, !oldSpecificationESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetSpecification() {
+		Specification oldSpecification = specification;
+		boolean oldSpecificationESet = specificationESet;
+		specification = null;
+		specificationESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION, oldSpecification, null, oldSpecificationESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetSpecification() {
+		return specificationESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Column> getColumns() {
+		if (columns == null) {
+			columns = new EObjectContainmentEList.Unsettable<Column>(Column.class, this, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS);
+		}
+		return columns;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetColumns() {
+		if (columns != null) ((InternalEList.Unsettable<?>)columns).unset();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetColumns() {
+		return columns != null && ((InternalEList.Unsettable<?>)columns).isSet();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Column getLeftHeaderColumn() {
+		return leftHeaderColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLeftHeaderColumn(Column newLeftHeaderColumn, NotificationChain msgs) {
+		Column oldLeftHeaderColumn = leftHeaderColumn;
+		leftHeaderColumn = newLeftHeaderColumn;
+		boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;
+		leftHeaderColumnESet = true;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, oldLeftHeaderColumn, newLeftHeaderColumn, !oldLeftHeaderColumnESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLeftHeaderColumn(Column newLeftHeaderColumn) {
+		if (newLeftHeaderColumn != leftHeaderColumn) {
+			NotificationChain msgs = null;
+			if (leftHeaderColumn != null)
+				msgs = ((InternalEObject)leftHeaderColumn).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);
+			if (newLeftHeaderColumn != null)
+				msgs = ((InternalEObject)newLeftHeaderColumn).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);
+			msgs = basicSetLeftHeaderColumn(newLeftHeaderColumn, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;
+			leftHeaderColumnESet = true;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, newLeftHeaderColumn, newLeftHeaderColumn, !oldLeftHeaderColumnESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicUnsetLeftHeaderColumn(NotificationChain msgs) {
+		Column oldLeftHeaderColumn = leftHeaderColumn;
+		leftHeaderColumn = null;
+		boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;
+		leftHeaderColumnESet = false;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, oldLeftHeaderColumn, null, oldLeftHeaderColumnESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetLeftHeaderColumn() {
+		if (leftHeaderColumn != null) {
+			NotificationChain msgs = null;
+			msgs = ((InternalEObject)leftHeaderColumn).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, msgs);
+			msgs = basicUnsetLeftHeaderColumn(msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldLeftHeaderColumnESet = leftHeaderColumnESet;
+			leftHeaderColumnESet = false;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN, null, null, oldLeftHeaderColumnESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetLeftHeaderColumn() {
+		return leftHeaderColumnESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:
+				return ((InternalEList<?>)getColumns()).basicRemove(otherEnd, msgs);
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:
+				return basicUnsetLeftHeaderColumn(msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:
+				if (resolve) return getSpecification();
+				return basicGetSpecification();
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:
+				return getColumns();
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:
+				return getLeftHeaderColumn();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:
+				setSpecification((Specification)newValue);
+				return;
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:
+				getColumns().clear();
+				getColumns().addAll((Collection<? extends Column>)newValue);
+				return;
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:
+				setLeftHeaderColumn((Column)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:
+				unsetSpecification();
+				return;
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:
+				unsetColumns();
+				return;
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:
+				unsetLeftHeaderColumn();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__SPECIFICATION:
+				return isSetSpecification();
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__COLUMNS:
+				return isSetColumns();
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION__LEFT_HEADER_COLUMN:
+				return isSetLeftHeaderColumn();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProrSpecViewConfigurationImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrToolExtensionImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrToolExtensionImpl.java
index eb4e49b..162e5c4 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrToolExtensionImpl.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/ProrToolExtensionImpl.java
@@ -1,433 +1,428 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.impl;

-

-import java.util.Collection;

-

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.common.notify.NotificationChain;

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.InternalEObject;

-import org.eclipse.emf.ecore.impl.ENotificationImpl;

-import org.eclipse.emf.ecore.impl.EObjectImpl;

-import org.eclipse.emf.ecore.util.EObjectContainmentEList;

-import org.eclipse.emf.ecore.util.InternalEList;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-

-/**

- * <!-- begin-user-doc -->

- * An implementation of the model object '<em><b>Pror Tool Extension</b></em>'.

- * <!-- end-user-doc -->

- * <p>

- * The following features are implemented:

- * <ul>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getSpecViewConfigurations <em>Spec View Configurations</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getGeneralConfiguration <em>General Configuration</em>}</li>

- *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getPresentationConfigurations <em>Presentation Configurations</em>}</li>

- * </ul>

- * </p>

- *

- * @generated

- */

-public class ProrToolExtensionImpl extends EObjectImpl implements ProrToolExtension {

-	/**

-	 * The cached value of the '{@link #getSpecViewConfigurations() <em>Spec View Configurations</em>}' containment reference list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getSpecViewConfigurations()

-	 * @generated

-	 * @ordered

-	 */

-	protected EList<ProrSpecViewConfiguration> specViewConfigurations;

-

-	/**

-	 * The cached value of the '{@link #getGeneralConfiguration() <em>General Configuration</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getGeneralConfiguration()

-	 * @generated

-	 * @ordered

-	 */

-	protected ProrGeneralConfiguration generalConfiguration;

-

-	/**

-	 * This is true if the General Configuration containment reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean generalConfigurationESet;

-

-	/**

-	 * The cached value of the '{@link #getPresentationConfigurations() <em>Presentation Configurations</em>}' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getPresentationConfigurations()

-	 * @generated

-	 * @ordered

-	 */

-	protected ProrPresentationConfigurations presentationConfigurations;

-

-	/**

-	 * This is true if the Presentation Configurations containment reference has been set.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	protected boolean presentationConfigurationsESet;

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * Set to public, so that the framework can instantiate this class.

-	 * <!-- end-user-doc -->

-	 * @generated NOT

-	 */

-	public ProrToolExtensionImpl() {

-		super();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	protected EClass eStaticClass() {

-		return ConfigurationPackage.Literals.PROR_TOOL_EXTENSION;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public EList<ProrSpecViewConfiguration> getSpecViewConfigurations() {

-		if (specViewConfigurations == null) {

-			specViewConfigurations = new EObjectContainmentEList.Unsettable<ProrSpecViewConfiguration>(ProrSpecViewConfiguration.class, this, ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS);

-		}

-		return specViewConfigurations;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetSpecViewConfigurations() {

-		if (specViewConfigurations != null) ((InternalEList.Unsettable<?>)specViewConfigurations).unset();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetSpecViewConfigurations() {

-		return specViewConfigurations != null && ((InternalEList.Unsettable<?>)specViewConfigurations).isSet();

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrGeneralConfiguration getGeneralConfiguration() {

-		return generalConfiguration;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicSetGeneralConfiguration(ProrGeneralConfiguration newGeneralConfiguration, NotificationChain msgs) {

-		ProrGeneralConfiguration oldGeneralConfiguration = generalConfiguration;

-		generalConfiguration = newGeneralConfiguration;

-		boolean oldGeneralConfigurationESet = generalConfigurationESet;

-		generalConfigurationESet = true;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, oldGeneralConfiguration, newGeneralConfiguration, !oldGeneralConfigurationESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setGeneralConfiguration(ProrGeneralConfiguration newGeneralConfiguration) {

-		if (newGeneralConfiguration != generalConfiguration) {

-			NotificationChain msgs = null;

-			if (generalConfiguration != null)

-				msgs = ((InternalEObject)generalConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);

-			if (newGeneralConfiguration != null)

-				msgs = ((InternalEObject)newGeneralConfiguration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);

-			msgs = basicSetGeneralConfiguration(newGeneralConfiguration, msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldGeneralConfigurationESet = generalConfigurationESet;

-			generalConfigurationESet = true;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, newGeneralConfiguration, newGeneralConfiguration, !oldGeneralConfigurationESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicUnsetGeneralConfiguration(NotificationChain msgs) {

-		ProrGeneralConfiguration oldGeneralConfiguration = generalConfiguration;

-		generalConfiguration = null;

-		boolean oldGeneralConfigurationESet = generalConfigurationESet;

-		generalConfigurationESet = false;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, oldGeneralConfiguration, null, oldGeneralConfigurationESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetGeneralConfiguration() {

-		if (generalConfiguration != null) {

-			NotificationChain msgs = null;

-			msgs = ((InternalEObject)generalConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);

-			msgs = basicUnsetGeneralConfiguration(msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldGeneralConfigurationESet = generalConfigurationESet;

-			generalConfigurationESet = false;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, null, oldGeneralConfigurationESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetGeneralConfiguration() {

-		return generalConfigurationESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ProrPresentationConfigurations getPresentationConfigurations() {

-		return presentationConfigurations;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicSetPresentationConfigurations(ProrPresentationConfigurations newPresentationConfigurations, NotificationChain msgs) {

-		ProrPresentationConfigurations oldPresentationConfigurations = presentationConfigurations;

-		presentationConfigurations = newPresentationConfigurations;

-		boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;

-		presentationConfigurationsESet = true;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, oldPresentationConfigurations, newPresentationConfigurations, !oldPresentationConfigurationsESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setPresentationConfigurations(ProrPresentationConfigurations newPresentationConfigurations) {

-		if (newPresentationConfigurations != presentationConfigurations) {

-			NotificationChain msgs = null;

-			if (presentationConfigurations != null)

-				msgs = ((InternalEObject)presentationConfigurations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);

-			if (newPresentationConfigurations != null)

-				msgs = ((InternalEObject)newPresentationConfigurations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);

-			msgs = basicSetPresentationConfigurations(newPresentationConfigurations, msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;

-			presentationConfigurationsESet = true;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, newPresentationConfigurations, newPresentationConfigurations, !oldPresentationConfigurationsESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public NotificationChain basicUnsetPresentationConfigurations(NotificationChain msgs) {

-		ProrPresentationConfigurations oldPresentationConfigurations = presentationConfigurations;

-		presentationConfigurations = null;

-		boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;

-		presentationConfigurationsESet = false;

-		if (eNotificationRequired()) {

-			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, oldPresentationConfigurations, null, oldPresentationConfigurationsESet);

-			if (msgs == null) msgs = notification; else msgs.add(notification);

-		}

-		return msgs;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void unsetPresentationConfigurations() {

-		if (presentationConfigurations != null) {

-			NotificationChain msgs = null;

-			msgs = ((InternalEObject)presentationConfigurations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);

-			msgs = basicUnsetPresentationConfigurations(msgs);

-			if (msgs != null) msgs.dispatch();

-		}

-		else {

-			boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;

-			presentationConfigurationsESet = false;

-			if (eNotificationRequired())

-				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, null, oldPresentationConfigurationsESet));

-		}

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public boolean isSetPresentationConfigurations() {

-		return presentationConfigurationsESet;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:

-				return ((InternalEList<?>)getSpecViewConfigurations()).basicRemove(otherEnd, msgs);

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:

-				return basicUnsetGeneralConfiguration(msgs);

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:

-				return basicUnsetPresentationConfigurations(msgs);

-		}

-		return super.eInverseRemove(otherEnd, featureID, msgs);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public Object eGet(int featureID, boolean resolve, boolean coreType) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:

-				return getSpecViewConfigurations();

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:

-				return getGeneralConfiguration();

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:

-				return getPresentationConfigurations();

-		}

-		return super.eGet(featureID, resolve, coreType);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@SuppressWarnings("unchecked")

-	@Override

-	public void eSet(int featureID, Object newValue) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:

-				getSpecViewConfigurations().clear();

-				getSpecViewConfigurations().addAll((Collection<? extends ProrSpecViewConfiguration>)newValue);

-				return;

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:

-				setGeneralConfiguration((ProrGeneralConfiguration)newValue);

-				return;

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:

-				setPresentationConfigurations((ProrPresentationConfigurations)newValue);

-				return;

-		}

-		super.eSet(featureID, newValue);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public void eUnset(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:

-				unsetSpecViewConfigurations();

-				return;

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:

-				unsetGeneralConfiguration();

-				return;

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:

-				unsetPresentationConfigurations();

-				return;

-		}

-		super.eUnset(featureID);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	@Override

-	public boolean eIsSet(int featureID) {

-		switch (featureID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:

-				return isSetSpecViewConfigurations();

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:

-				return isSetGeneralConfiguration();

-			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:

-				return isSetPresentationConfigurations();

-		}

-		return super.eIsSet(featureID);

-	}

-

-} //ProrToolExtensionImpl

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;
+import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pror Tool Extension</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getSpecViewConfigurations <em>Spec View Configurations</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getGeneralConfiguration <em>General Configuration</em>}</li>
+ *   <li>{@link org.eclipse.rmf.reqif10.pror.configuration.impl.ProrToolExtensionImpl#getPresentationConfigurations <em>Presentation Configurations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProrToolExtensionImpl extends EObjectImpl implements ProrToolExtension {
+	/**
+	 * The cached value of the '{@link #getSpecViewConfigurations() <em>Spec View Configurations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSpecViewConfigurations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ProrSpecViewConfiguration> specViewConfigurations;
+
+	/**
+	 * The cached value of the '{@link #getGeneralConfiguration() <em>General Configuration</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGeneralConfiguration()
+	 * @generated
+	 * @ordered
+	 */
+	protected ProrGeneralConfiguration generalConfiguration;
+
+	/**
+	 * This is true if the General Configuration containment reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean generalConfigurationESet;
+
+	/**
+	 * The cached value of the '{@link #getPresentationConfigurations() <em>Presentation Configurations</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPresentationConfigurations()
+	 * @generated
+	 * @ordered
+	 */
+	protected ProrPresentationConfigurations presentationConfigurations;
+
+	/**
+	 * This is true if the Presentation Configurations containment reference has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean presentationConfigurationsESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProrToolExtensionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.PROR_TOOL_EXTENSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ProrSpecViewConfiguration> getSpecViewConfigurations() {
+		if (specViewConfigurations == null) {
+			specViewConfigurations = new EObjectContainmentEList.Unsettable<ProrSpecViewConfiguration>(ProrSpecViewConfiguration.class, this, ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS);
+		}
+		return specViewConfigurations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetSpecViewConfigurations() {
+		if (specViewConfigurations != null) ((InternalEList.Unsettable<?>)specViewConfigurations).unset();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetSpecViewConfigurations() {
+		return specViewConfigurations != null && ((InternalEList.Unsettable<?>)specViewConfigurations).isSet();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrGeneralConfiguration getGeneralConfiguration() {
+		return generalConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetGeneralConfiguration(ProrGeneralConfiguration newGeneralConfiguration, NotificationChain msgs) {
+		ProrGeneralConfiguration oldGeneralConfiguration = generalConfiguration;
+		generalConfiguration = newGeneralConfiguration;
+		boolean oldGeneralConfigurationESet = generalConfigurationESet;
+		generalConfigurationESet = true;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, oldGeneralConfiguration, newGeneralConfiguration, !oldGeneralConfigurationESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGeneralConfiguration(ProrGeneralConfiguration newGeneralConfiguration) {
+		if (newGeneralConfiguration != generalConfiguration) {
+			NotificationChain msgs = null;
+			if (generalConfiguration != null)
+				msgs = ((InternalEObject)generalConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);
+			if (newGeneralConfiguration != null)
+				msgs = ((InternalEObject)newGeneralConfiguration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);
+			msgs = basicSetGeneralConfiguration(newGeneralConfiguration, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldGeneralConfigurationESet = generalConfigurationESet;
+			generalConfigurationESet = true;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, newGeneralConfiguration, newGeneralConfiguration, !oldGeneralConfigurationESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicUnsetGeneralConfiguration(NotificationChain msgs) {
+		ProrGeneralConfiguration oldGeneralConfiguration = generalConfiguration;
+		generalConfiguration = null;
+		boolean oldGeneralConfigurationESet = generalConfigurationESet;
+		generalConfigurationESet = false;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, oldGeneralConfiguration, null, oldGeneralConfigurationESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetGeneralConfiguration() {
+		if (generalConfiguration != null) {
+			NotificationChain msgs = null;
+			msgs = ((InternalEObject)generalConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, msgs);
+			msgs = basicUnsetGeneralConfiguration(msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldGeneralConfigurationESet = generalConfigurationESet;
+			generalConfigurationESet = false;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION, null, null, oldGeneralConfigurationESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetGeneralConfiguration() {
+		return generalConfigurationESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProrPresentationConfigurations getPresentationConfigurations() {
+		return presentationConfigurations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPresentationConfigurations(ProrPresentationConfigurations newPresentationConfigurations, NotificationChain msgs) {
+		ProrPresentationConfigurations oldPresentationConfigurations = presentationConfigurations;
+		presentationConfigurations = newPresentationConfigurations;
+		boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;
+		presentationConfigurationsESet = true;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, oldPresentationConfigurations, newPresentationConfigurations, !oldPresentationConfigurationsESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPresentationConfigurations(ProrPresentationConfigurations newPresentationConfigurations) {
+		if (newPresentationConfigurations != presentationConfigurations) {
+			NotificationChain msgs = null;
+			if (presentationConfigurations != null)
+				msgs = ((InternalEObject)presentationConfigurations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);
+			if (newPresentationConfigurations != null)
+				msgs = ((InternalEObject)newPresentationConfigurations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);
+			msgs = basicSetPresentationConfigurations(newPresentationConfigurations, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;
+			presentationConfigurationsESet = true;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.SET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, newPresentationConfigurations, newPresentationConfigurations, !oldPresentationConfigurationsESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicUnsetPresentationConfigurations(NotificationChain msgs) {
+		ProrPresentationConfigurations oldPresentationConfigurations = presentationConfigurations;
+		presentationConfigurations = null;
+		boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;
+		presentationConfigurationsESet = false;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, oldPresentationConfigurations, null, oldPresentationConfigurationsESet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetPresentationConfigurations() {
+		if (presentationConfigurations != null) {
+			NotificationChain msgs = null;
+			msgs = ((InternalEObject)presentationConfigurations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, msgs);
+			msgs = basicUnsetPresentationConfigurations(msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else {
+			boolean oldPresentationConfigurationsESet = presentationConfigurationsESet;
+			presentationConfigurationsESet = false;
+			if (eNotificationRequired())
+				eNotify(new ENotificationImpl(this, Notification.UNSET, ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS, null, null, oldPresentationConfigurationsESet));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetPresentationConfigurations() {
+		return presentationConfigurationsESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:
+				return ((InternalEList<?>)getSpecViewConfigurations()).basicRemove(otherEnd, msgs);
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:
+				return basicUnsetGeneralConfiguration(msgs);
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:
+				return basicUnsetPresentationConfigurations(msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:
+				return getSpecViewConfigurations();
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:
+				return getGeneralConfiguration();
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:
+				return getPresentationConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:
+				getSpecViewConfigurations().clear();
+				getSpecViewConfigurations().addAll((Collection<? extends ProrSpecViewConfiguration>)newValue);
+				return;
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:
+				setGeneralConfiguration((ProrGeneralConfiguration)newValue);
+				return;
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:
+				setPresentationConfigurations((ProrPresentationConfigurations)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:
+				unsetSpecViewConfigurations();
+				return;
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:
+				unsetGeneralConfiguration();
+				return;
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:
+				unsetPresentationConfigurations();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__SPEC_VIEW_CONFIGURATIONS:
+				return isSetSpecViewConfigurations();
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__GENERAL_CONFIGURATION:
+				return isSetGeneralConfiguration();
+			case ConfigurationPackage.PROR_TOOL_EXTENSION__PRESENTATION_CONFIGURATIONS:
+				return isSetPresentationConfigurations();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProrToolExtensionImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/UnifiedColumnImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/UnifiedColumnImpl.java
new file mode 100644
index 0000000..693cc5d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/impl/UnifiedColumnImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
+import org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unified Column</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class UnifiedColumnImpl extends ColumnImpl implements UnifiedColumn {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UnifiedColumnImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ConfigurationPackage.Literals.UNIFIED_COLUMN;
+	}
+
+} //UnifiedColumnImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationAdapterFactory.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationAdapterFactory.java
index 21a62a6..20bd688 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationAdapterFactory.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationAdapterFactory.java
@@ -1,241 +1,246 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.util;

-

-import org.eclipse.emf.common.notify.Adapter;

-import org.eclipse.emf.common.notify.Notifier;

-import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;

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

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-

-/**

- * <!-- begin-user-doc -->

- * The <b>Adapter Factory</b> for the model.

- * It provides an adapter <code>createXXX</code> method for each class of the model.

- * <!-- end-user-doc -->

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage

- * @generated

- */

-public class ConfigurationAdapterFactory extends AdapterFactoryImpl {

-	/**

-	 * The cached model package.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected static ConfigurationPackage modelPackage;

-

-	/**

-	 * Creates an instance of the adapter factory.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ConfigurationAdapterFactory() {

-		if (modelPackage == null) {

-			modelPackage = ConfigurationPackage.eINSTANCE;

-		}

-	}

-

-	/**

-	 * Returns whether this factory is applicable for the type of the object.

-	 * <!-- begin-user-doc -->

-	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.

-	 * <!-- end-user-doc -->

-	 * @return whether this factory is applicable for the type of the object.

-	 * @generated

-	 */

-	@Override

-	public boolean isFactoryForType(Object object) {

-		if (object == modelPackage) {

-			return true;

-		}

-		if (object instanceof EObject) {

-			return ((EObject)object).eClass().getEPackage() == modelPackage;

-		}

-		return false;

-	}

-

-	/**

-	 * The switch that delegates to the <code>createXXX</code> methods.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected ConfigurationSwitch<Adapter> modelSwitch =

-		new ConfigurationSwitch<Adapter>() {

-			@Override

-			public Adapter caseProrToolExtension(ProrToolExtension object) {

-				return createProrToolExtensionAdapter();

-			}

-			@Override

-			public Adapter caseProrSpecViewConfiguration(ProrSpecViewConfiguration object) {

-				return createProrSpecViewConfigurationAdapter();

-			}

-			@Override

-			public Adapter caseColumn(Column object) {

-				return createColumnAdapter();

-			}

-			@Override

-			public Adapter caseProrPresentationConfigurations(ProrPresentationConfigurations object) {

-				return createProrPresentationConfigurationsAdapter();

-			}

-			@Override

-			public Adapter caseProrPresentationConfiguration(ProrPresentationConfiguration object) {

-				return createProrPresentationConfigurationAdapter();

-			}

-			@Override

-			public Adapter caseProrGeneralConfiguration(ProrGeneralConfiguration object) {

-				return createProrGeneralConfigurationAdapter();

-			}

-			@Override

-			public Adapter caseLabelConfiguration(LabelConfiguration object) {

-				return createLabelConfigurationAdapter();

-			}

-			@Override

-			public Adapter defaultCase(EObject object) {

-				return createEObjectAdapter();

-			}

-		};

-

-	/**

-	 * Creates an adapter for the <code>target</code>.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param target the object to adapt.

-	 * @return the adapter for the <code>target</code>.

-	 * @generated

-	 */

-	@Override

-	public Adapter createAdapter(Notifier target) {

-		return modelSwitch.doSwitch((EObject)target);

-	}

-

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension <em>Pror Tool Extension</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 org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension

-	 * @generated

-	 */

-	public Adapter createProrToolExtensionAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration <em>Pror Spec View Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration

-	 * @generated

-	 */

-	public Adapter createProrSpecViewConfigurationAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.Column <em>Column</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 org.eclipse.rmf.reqif10.pror.configuration.Column

-	 * @generated

-	 */

-	public Adapter createColumnAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations <em>Pror Presentation Configurations</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 org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations

-	 * @generated

-	 */

-	public Adapter createProrPresentationConfigurationsAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration <em>Pror Presentation Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration

-	 * @generated

-	 */

-	public Adapter createProrPresentationConfigurationAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration <em>Pror General Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration

-	 * @generated

-	 */

-	public Adapter createProrGeneralConfigurationAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration <em>Label Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration

-	 * @generated

-	 */

-	public Adapter createLabelConfigurationAdapter() {

-		return null;

-	}

-

-	/**

-	 * Creates a new adapter for the default case.

-	 * <!-- begin-user-doc -->

-	 * This default implementation returns null.

-	 * <!-- end-user-doc -->

-	 * @return the new adapter.

-	 * @generated

-	 */

-	public Adapter createEObjectAdapter() {

-		return null;

-	}

-

-} //ConfigAdapterFactory

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.rmf.reqif10.pror.configuration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage
+ * @generated
+ */
+public class ConfigurationAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ConfigurationPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ConfigurationPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConfigurationSwitch<Adapter> modelSwitch =
+		new ConfigurationSwitch<Adapter>() {
+			@Override
+			public Adapter caseProrToolExtension(ProrToolExtension object) {
+				return createProrToolExtensionAdapter();
+			}
+			@Override
+			public Adapter caseProrSpecViewConfiguration(ProrSpecViewConfiguration object) {
+				return createProrSpecViewConfigurationAdapter();
+			}
+			@Override
+			public Adapter caseColumn(Column object) {
+				return createColumnAdapter();
+			}
+			@Override
+			public Adapter caseProrPresentationConfigurations(ProrPresentationConfigurations object) {
+				return createProrPresentationConfigurationsAdapter();
+			}
+			@Override
+			public Adapter caseProrPresentationConfiguration(ProrPresentationConfiguration object) {
+				return createProrPresentationConfigurationAdapter();
+			}
+			@Override
+			public Adapter caseProrGeneralConfiguration(ProrGeneralConfiguration object) {
+				return createProrGeneralConfigurationAdapter();
+			}
+			@Override
+			public Adapter caseLabelConfiguration(LabelConfiguration object) {
+				return createLabelConfigurationAdapter();
+			}
+			@Override
+			public Adapter caseUnifiedColumn(UnifiedColumn object) {
+				return createUnifiedColumnAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension <em>Pror Tool Extension</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 org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension
+	 * @generated
+	 */
+	public Adapter createProrToolExtensionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration <em>Pror Spec View Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration
+	 * @generated
+	 */
+	public Adapter createProrSpecViewConfigurationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.Column <em>Column</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 org.eclipse.rmf.reqif10.pror.configuration.Column
+	 * @generated
+	 */
+	public Adapter createColumnAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations <em>Pror Presentation Configurations</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 org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations
+	 * @generated
+	 */
+	public Adapter createProrPresentationConfigurationsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration <em>Pror Presentation Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration
+	 * @generated
+	 */
+	public Adapter createProrPresentationConfigurationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration <em>Pror General Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration
+	 * @generated
+	 */
+	public Adapter createProrGeneralConfigurationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration <em>Label Configuration</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 org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration
+	 * @generated
+	 */
+	public Adapter createLabelConfigurationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn <em>Unified Column</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 org.eclipse.rmf.reqif10.pror.configuration.UnifiedColumn
+	 * @generated
+	 */
+	public Adapter createUnifiedColumnAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ConfigurationAdapterFactory
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceFactoryImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceFactoryImpl.java
deleted file mode 100644
index 7cf92a7..0000000
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceFactoryImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.eclipse.rmf.reqif10.pror.configuration.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Resource Factory</b> associated with the package.
- * <!-- end-user-doc -->
- * @see org.eclipse.rmf.reqif10.pror.configuration.util.ConfigurationResourceImpl
- * @generated
- */
-public class ConfigurationResourceFactoryImpl extends ResourceFactoryImpl {
-	/**
-	 * Creates an instance of the resource factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ConfigurationResourceFactoryImpl() {
-		super();
-	}
-
-	/**
-	 * Creates an instance of the resource.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Resource createResource(URI uri) {
-		XMLResource result = new ConfigurationResourceImpl(uri);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
-		return result;
-	}
-
-} //ConfigurationResourceFactoryImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceImpl.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceImpl.java
deleted file mode 100644
index 0e1ad84..0000000
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationResourceImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.eclipse.rmf.reqif10.pror.configuration.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Resource </b> associated with the package.
- * <!-- end-user-doc -->
- * @see org.eclipse.rmf.reqif10.pror.configuration.util.ConfigurationResourceFactoryImpl
- * @generated
- */
-public class ConfigurationResourceImpl extends XMLResourceImpl {
-	/**
-	 * Creates an instance of the resource.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param uri the URI of the new resource.
-	 * @generated
-	 */
-	public ConfigurationResourceImpl(URI uri) {
-		super(uri);
-	}
-
-} //ConfigurationResourceImpl
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationSwitch.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationSwitch.java
index f4ef911..fe3c828 100644
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationSwitch.java
+++ b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationSwitch.java
@@ -1,251 +1,258 @@
-/*******************************************************************************

- * Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     Michael Jastram - initial API and implementation

- ******************************************************************************/

-

-package org.eclipse.rmf.reqif10.pror.configuration.util;

-

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

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.util.Switch;

-import org.eclipse.rmf.reqif10.pror.configuration.Column;

-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;

-import org.eclipse.rmf.reqif10.pror.configuration.LabelConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrGeneralConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrPresentationConfigurations;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrSpecViewConfiguration;

-import org.eclipse.rmf.reqif10.pror.configuration.ProrToolExtension;

-

-

-/**

- * <!-- begin-user-doc -->

- * The <b>Switch</b> for the model's inheritance hierarchy.

- * It supports the call {@link #doSwitch(EObject) doSwitch(object)}

- * to invoke the <code>caseXXX</code> method for each class of the model,

- * starting with the actual class of the object

- * and proceeding up the inheritance hierarchy

- * until a non-null result is returned,

- * which is the result of the switch.

- * <!-- end-user-doc -->

- * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage

- * @generated

- */

-public class ConfigurationSwitch<T> extends Switch<T> {

-	/**

-	 * The cached model package

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	protected static ConfigurationPackage modelPackage;

-

-	/**

-	 * Creates an instance of the switch.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public ConfigurationSwitch() {

-		if (modelPackage == null) {

-			modelPackage = ConfigurationPackage.eINSTANCE;

-		}

-	}

-

-	/**

-	 * Checks whether this is a switch for the given package.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @parameter ePackage the package in question.

-	 * @return whether this is a switch for the given package.

-	 * @generated

-	 */

-	@Override

-	protected boolean isSwitchFor(EPackage ePackage) {

-		return ePackage == modelPackage;

-	}

-

-	/**

-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the first non-null result returned by a <code>caseXXX</code> call.

-	 * @generated

-	 */

-	@Override

-	protected T doSwitch(int classifierID, EObject theEObject) {

-		switch (classifierID) {

-			case ConfigurationPackage.PROR_TOOL_EXTENSION: {

-				ProrToolExtension prorToolExtension = (ProrToolExtension)theEObject;

-				T result = caseProrToolExtension(prorToolExtension);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION: {

-				ProrSpecViewConfiguration prorSpecViewConfiguration = (ProrSpecViewConfiguration)theEObject;

-				T result = caseProrSpecViewConfiguration(prorSpecViewConfiguration);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.COLUMN: {

-				Column column = (Column)theEObject;

-				T result = caseColumn(column);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS: {

-				ProrPresentationConfigurations prorPresentationConfigurations = (ProrPresentationConfigurations)theEObject;

-				T result = caseProrPresentationConfigurations(prorPresentationConfigurations);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION: {

-				ProrPresentationConfiguration prorPresentationConfiguration = (ProrPresentationConfiguration)theEObject;

-				T result = caseProrPresentationConfiguration(prorPresentationConfiguration);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION: {

-				ProrGeneralConfiguration prorGeneralConfiguration = (ProrGeneralConfiguration)theEObject;

-				T result = caseProrGeneralConfiguration(prorGeneralConfiguration);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			case ConfigurationPackage.LABEL_CONFIGURATION: {

-				LabelConfiguration labelConfiguration = (LabelConfiguration)theEObject;

-				T result = caseLabelConfiguration(labelConfiguration);

-				if (result == null) result = defaultCase(theEObject);

-				return result;

-			}

-			default: return defaultCase(theEObject);

-		}

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Pror Tool Extension</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>Pror Tool Extension</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseProrToolExtension(ProrToolExtension object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Pror Spec View Configuration</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>Pror Spec View Configuration</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseProrSpecViewConfiguration(ProrSpecViewConfiguration object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Column</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>Column</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseColumn(Column object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Pror Presentation Configurations</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>Pror Presentation Configurations</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseProrPresentationConfigurations(ProrPresentationConfigurations object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Pror Presentation Configuration</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>Pror Presentation Configuration</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseProrPresentationConfiguration(ProrPresentationConfiguration object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Pror General Configuration</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>Pror General Configuration</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseProrGeneralConfiguration(ProrGeneralConfiguration object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>Label Configuration</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>Label Configuration</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

-	 * @generated

-	 */

-	public T caseLabelConfiguration(LabelConfiguration object) {

-		return null;

-	}

-

-	/**

-	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.

-	 * <!-- begin-user-doc -->

-	 * This implementation returns null;

-	 * returning a non-null result will terminate the switch, but this is the last case anyway.

-	 * <!-- end-user-doc -->

-	 * @param object the target of the switch.

-	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.

-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)

-	 * @generated

-	 */

-	@Override

-	public T defaultCase(EObject object) {

-		return null;

-	}

-

-} //ConfigSwitch

+/**
+ */
+package org.eclipse.rmf.reqif10.pror.configuration.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.rmf.reqif10.pror.configuration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage
+ * @generated
+ */
+public class ConfigurationSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ConfigurationPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ConfigurationPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ConfigurationPackage.PROR_TOOL_EXTENSION: {
+				ProrToolExtension prorToolExtension = (ProrToolExtension)theEObject;
+				T result = caseProrToolExtension(prorToolExtension);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.PROR_SPEC_VIEW_CONFIGURATION: {
+				ProrSpecViewConfiguration prorSpecViewConfiguration = (ProrSpecViewConfiguration)theEObject;
+				T result = caseProrSpecViewConfiguration(prorSpecViewConfiguration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.COLUMN: {
+				Column column = (Column)theEObject;
+				T result = caseColumn(column);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATIONS: {
+				ProrPresentationConfigurations prorPresentationConfigurations = (ProrPresentationConfigurations)theEObject;
+				T result = caseProrPresentationConfigurations(prorPresentationConfigurations);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.PROR_PRESENTATION_CONFIGURATION: {
+				ProrPresentationConfiguration prorPresentationConfiguration = (ProrPresentationConfiguration)theEObject;
+				T result = caseProrPresentationConfiguration(prorPresentationConfiguration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.PROR_GENERAL_CONFIGURATION: {
+				ProrGeneralConfiguration prorGeneralConfiguration = (ProrGeneralConfiguration)theEObject;
+				T result = caseProrGeneralConfiguration(prorGeneralConfiguration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.LABEL_CONFIGURATION: {
+				LabelConfiguration labelConfiguration = (LabelConfiguration)theEObject;
+				T result = caseLabelConfiguration(labelConfiguration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ConfigurationPackage.UNIFIED_COLUMN: {
+				UnifiedColumn unifiedColumn = (UnifiedColumn)theEObject;
+				T result = caseUnifiedColumn(unifiedColumn);
+				if (result == null) result = caseColumn(unifiedColumn);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pror Tool Extension</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>Pror Tool Extension</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProrToolExtension(ProrToolExtension object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pror Spec View Configuration</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>Pror Spec View Configuration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProrSpecViewConfiguration(ProrSpecViewConfiguration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Column</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>Column</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseColumn(Column object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pror Presentation Configurations</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>Pror Presentation Configurations</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProrPresentationConfigurations(ProrPresentationConfigurations object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pror Presentation Configuration</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>Pror Presentation Configuration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProrPresentationConfiguration(ProrPresentationConfiguration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pror General Configuration</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>Pror General Configuration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProrGeneralConfiguration(ProrGeneralConfiguration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Configuration</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>Label Configuration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLabelConfiguration(LabelConfiguration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Unified Column</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>Unified Column</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUnifiedColumn(UnifiedColumn object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ConfigurationSwitch
diff --git a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationXMLProcessor.java b/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationXMLProcessor.java
deleted file mode 100644
index 9105fa9..0000000
--- a/org.eclipse.rmf.reqif10.pror/src/org/eclipse/rmf/reqif10/pror/configuration/util/ConfigurationXMLProcessor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.eclipse.rmf.reqif10.pror.configuration.util;
-
-import java.util.Map;
-
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
-import org.eclipse.rmf.reqif10.pror.configuration.ConfigurationPackage;
-
-/**
- * This class contains helper methods to serialize and deserialize XML documents
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class ConfigurationXMLProcessor extends XMLProcessor {
-
-	/**
-	 * Public constructor to instantiate the helper.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ConfigurationXMLProcessor() {
-		super((EPackage.Registry.INSTANCE));
-		ConfigurationPackage.eINSTANCE.eClass();
-	}
-	
-	/**
-	 * Register for "*" and "xml" file extensions the ConfigurationResourceFactoryImpl factory.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected Map<String, Resource.Factory> getRegistrations() {
-		if (registrations == null) {
-			super.getRegistrations();
-			registrations.put(XML_EXTENSION, new ConfigurationResourceFactoryImpl());
-			registrations.put(STAR_EXTENSION, new ConfigurationResourceFactoryImpl());
-		}
-		return registrations;
-	}
-
-} //ConfigurationXMLProcessor
diff --git a/org.eclipse.rmf.serialization/.classpath b/org.eclipse.rmf.reqif10.search.test/.classpath
similarity index 75%
rename from org.eclipse.rmf.serialization/.classpath
rename to org.eclipse.rmf.reqif10.search.test/.classpath
index 472ee29..3daaadd 100644
--- a/org.eclipse.rmf.serialization/.classpath
+++ b/org.eclipse.rmf.reqif10.search.test/.classpath
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.rmf.reqif10.search.test/.gitignore b/org.eclipse.rmf.reqif10.search.test/.gitignore
new file mode 100644
index 0000000..c0a0d46
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/.gitignore
@@ -0,0 +1,3 @@
+/bin/
+/target/
+
diff --git a/org.eclipse.rmf.serialization/.project b/org.eclipse.rmf.reqif10.search.test/.project
similarity index 92%
rename from org.eclipse.rmf.serialization/.project
rename to org.eclipse.rmf.reqif10.search.test/.project
index 3a80015..e5ce847 100644
--- a/org.eclipse.rmf.serialization/.project
+++ b/org.eclipse.rmf.reqif10.search.test/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.rmf.serialization</name>
+	<name>org.eclipse.rmf.reqif10.search.test</name>
 	<comment></comment>
 	<projects>
 	</projects>
@@ -22,7 +22,7 @@
 		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
 	</natures>
 </projectDescription>
diff --git a/org.eclipse.rmf.reqif10.search.test/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.search.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b40476c
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Fragment-Host: org.eclipse.rmf.reqif10.search
+Bundle-Name: Tests for Search
+Bundle-SymbolicName: org.eclipse.rmf.reqif10.search.test
+Bundle-Version: 0.12.0.qualifier
+Export-Package: org.eclipse.rmf.reqif10.search.test,
+ org.eclipse.rmf.reqif10.search.testdata
+Bundle-Vendor: Formal Mind GmbH
+Require-Bundle: org.eclipse.rmf.reqif10.pror.tests,
+ org.eclipse.emf.edit,
+ org.junit;bundle-version="4.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.rmf.reqif10.search.test/build.properties b/org.eclipse.rmf.reqif10.search.test/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/org.eclipse.rmf.reqif10.search.test/pom.xml b/org.eclipse.rmf.reqif10.search.test/pom.xml
new file mode 100644
index 0000000..2d137f4
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<groupId>org.eclipse.rmf</groupId>

+		<artifactId>org.eclipse.rmf.releng</artifactId>

+		<version>0.12.0-SNAPSHOT</version>

+		<relativePath>../org.eclipse.rmf.releng/pom.xml</relativePath>

+	</parent>

+	<groupId>org.eclipse.rmf.plugins</groupId>

+	<artifactId>org.eclipse.rmf.reqif10.search.test</artifactId>

+	<properties>

+    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+  	</properties>

+	<packaging>eclipse-test-plugin</packaging>

+	<profiles>

+		<profile>

+			<id>macosx</id>

+			<activation>

+				<os>

+					<family>mac</family>

+				</os>

+			</activation>

+			<properties>

+				<test.vmargs>-Xmx512m -XX:MaxPermSize=256m -XstartOnFirstThread</test.vmargs>

+			</properties>

+		</profile>

+		<profile>

+			<id>other-os</id>

+			<activation>

+				<os>

+					<family>!mac</family>

+				</os>

+			</activation>

+			<properties>

+				<test.vmargs>-Xmx512m -XX:MaxPermSize=256m</test.vmargs>

+			</properties>

+		</profile>

+	</profiles>

+	<build>

+		<sourceDirectory>src</sourceDirectory>

+		<plugins>

+			<plugin>

+				<groupId>org.eclipse.tycho</groupId>

+				<artifactId>tycho-surefire-plugin</artifactId>

+				<version>${tycho.version}</version>

+				<configuration>

+					<includes>

+						<include>**/*Test.class</include>

+					</includes>

+					<useUIHarness>false</useUIHarness>

+					<useUIThread>false</useUIThread>

+					<argLine>${test.vmargs}</argLine>

+				</configuration>

+			</plugin>

+			<plugin>

+				<artifactId>maven-antrun-plugin</artifactId>

+				<version>${antrun.version}</version>

+				<executions>

+					<execution>

+						<id>generate-commit-id</id>

+						<phase>generate-sources</phase>

+						<configuration>

+							<target>

+								<mkdir dir="${project.build.outputDirectory}"/>

+								<touch file = "${project.build.outputDirectory}/commit-id" /> 

+								<exec executable="git" output="${project.build.outputDirectory}/commit-id">

+									<arg value="rev-parse" />

+									<arg value="HEAD" />

+								</exec>

+							</target>

+						</configuration>

+						<goals>

+							<goal>run</goal>

+						</goals>

+					</execution>

+				</executions>

+			</plugin>

+		</plugins>

+	</build>

+</project>
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AbstractFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AbstractFilterTest.java
new file mode 100644
index 0000000..4b5e733
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AbstractFilterTest.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+
+
+
+package org.eclipse.rmf.reqif10.search.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.eclipse.rmf.reqif10.pror.testframework.AbstractItemProviderTest;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.junit.Test;
+
+public abstract class AbstractFilterTest extends AbstractItemProviderTest {
+
+	static Map<Operator, Integer> operatorCounts = new HashMap<Operator, Integer>();
+
+	/**
+	 * The fixture for this Identifiable test case.
+	 */
+	protected SpecElementWithAttributes fixture = null;
+
+	/**
+	 * Sets the fixture for this Identifiable test case.
+	 */
+	protected void setFixture(SpecElementWithAttributes fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Identifiable test case.
+	 */
+	protected SpecElementWithAttributes getFixture() {
+		return fixture;
+	}
+	
+	
+	/**
+	 * runs the filters matcher against the fixture
+	 * @param filter
+	 * @param expected
+	 */
+	public void doMatch(IFilter filter, boolean expected){
+		Integer c = operatorCounts.get(filter.getOperator());
+		c = (c == null ? 1 : ++c);
+		operatorCounts.put(filter.getOperator(), c);
+		
+		System.out.println(filter.toString());
+		
+		assertEquals(expected, filter.match(getFixture()));
+	}
+	
+	
+	@Test
+	public void testExceptionsUnsupportedOperation() throws Exception {
+		if (getSupportedOperators() == null)
+			fail("getSupportedOperators returned null");
+		
+		for (Operator operator : Operator.values()) {
+			if (getSupportedOperators().contains(operator)){
+				continue;
+			}
+			
+			Exception exception = null;
+			try{
+				createFilterInstance(operator);
+			}catch (Exception e){
+				exception = e;
+			}
+			assertTrue(operator.toString() + " should not be supported", exception != null);
+			assertTrue(exception instanceof IllegalArgumentException);
+			assertTrue(exception.getMessage().contains(operator.toString()));
+		}
+	}
+
+	public abstract Set<Operator> getSupportedOperators();
+
+	public abstract IFilter createFilterInstance(Operator operator);
+	
+		
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		getFixture().getValues().clear();
+		doEmptyTest();
+	}
+	
+	@Test
+	public void testOnNullValue() throws Exception {
+		createFixture(null);
+		doEmptyTest();
+	}
+
+	/**
+	 * this test defines a filters behavior if a match is run against an empty value
+	 * 
+	 * it will be called two times: 
+	 *  on a specObject in which the attribute is not set at all
+	 *  on a specObject in which the attribute is set, but theValue is null
+	 * 
+	 * @throws Exception
+	 */
+	public abstract void doEmptyTest() throws Exception;
+	
+	
+	public abstract void createFixture(Object object);
+	
+	
+	/**
+	 * create a specObjectType, adds the give attributeDefinition and sets it as the type of the specObject
+	 * 
+	 * @param specObject
+	 */
+	protected void createSpecObjectType(SpecObject specObject, AttributeDefinition attributeDefinition){
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		specObjectType.getSpecAttributes().add(attributeDefinition);
+		specObject.setType(specObjectType);
+		
+	}
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AttributeTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AttributeTest.java
new file mode 100644
index 0000000..ee51680
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/AttributeTest.java
@@ -0,0 +1,121 @@
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.GregorianCalendar;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeValueString;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.junit.Test;
+
+public class AttributeTest extends AbstractFilterTest{
+
+	private AttributeDefinitionString attributeDefinition;
+
+	
+	@Test
+	public void testIsSet() throws Exception {
+		StringFilter filter;
+		
+		// The attribute is defined and a value is set
+		createFixture("test", true);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
+		doMatch(filter, true);
+		
+		// The attribute is defined and the value is null
+		createFixture(null, true);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
+		doMatch(filter, false);
+		
+		// The attribute is not defined
+		createFixture(null, false);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		/* is not set: return true only if the attribute exisits, but is not set (irrespective of default value).
+		 */
+		StringFilter filter;
+		
+		// The attribute is defined and a value is set
+		createFixture("test", true);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
+		doMatch(filter, false);
+		
+		// The attribute is defined and the value is null
+		createFixture(null, true);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
+		doMatch(filter, true);
+
+		// The attribute is not defined
+		createFixture(null, false);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
+		doMatch(filter, false);
+		
+	}
+	
+	
+	public void createFixture(Object value, boolean withAttribute) {
+		String theValue = (String) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionString definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		
+		AttributeValueString attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueString();
+		attributeValue.setDefinition(attributeDefinition);
+		if (value != null){
+			attributeValue.setTheValue(theValue);
+		}
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		specObject.setLastChange(new GregorianCalendar(2014, 12, 03));
+		specObject.setIdentifier("THE_SPECOBJECT_ID");
+		specObject.setDesc("THE_SPECOBJECT_DESC");
+		specObject.setLongName("THE_SPECOBJECT_LONG_NAME");
+		
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		if (withAttribute){
+			specObjectType.getSpecAttributes().add(attributeDefinition);
+		}
+		specObject.setType(specObjectType);
+		
+		setFixture(specObject);
+	}
+	
+	@Override
+	public void createFixture(Object value) {
+		createFixture(value, true);
+	}
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return StringFilter.SUPPORTED_OPERATORS;
+	}
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new StringFilter(operator, "", attributeDefinition, true);
+	}
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		// Do nothing
+	}
+	
+	@Override
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterDefaultsTest.java
new file mode 100644
index 0000000..1e37382
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterDefaultsTest.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import org.eclipse.rmf.reqif10.AttributeValueBoolean;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.junit.Test;
+
+public class BoolFilterDefaultsTest extends BoolFilterTest {
+
+	
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	
+	public void createFixture(Object value){
+		if ((value != null) && ! (value instanceof Boolean)) {
+			throw new IllegalArgumentException();	
+		}
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionBoolean();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionBoolean definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionBoolean();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueBoolean attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueBoolean();
+		attributeValue.setDefinition(attributeDefinition);
+		if (value == null){
+			//attributeValue.setTheValue(false);
+			// we do nothing here to simulate a non set value
+			// attributeValue.isSetTheValue() will return false
+		}else{
+			attributeValue.setTheValue((Boolean) value);
+		}
+		attributeDefinition.setDefaultValue(attributeValue);
+		
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		specObjectType.getSpecAttributes().add(attributeDefinition);
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.setType(specObjectType);
+		
+		setFixture(specObject);
+	}
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterTest.java
new file mode 100644
index 0000000..7bd75bf
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/BoolFilterTest.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.AttributeValueBoolean;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.BoolFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.junit.Before;
+import org.junit.Test;
+
+public class BoolFilterTest extends AbstractFilterTest {
+
+	AttributeDefinitionBoolean attributeDefinition;
+
+	@Before
+	public void setUp(){
+		createFixture(true);
+	}
+	
+
+	@Test
+	public void testIsTrue() throws Exception {
+		BoolFilter filter;
+		filter = new BoolFilter(Operator.IS, true, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new BoolFilter(Operator.IS, false, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testIsFalse() throws Exception {
+		createFixture(false);
+		
+		BoolFilter filter;
+		filter = new BoolFilter(Operator.IS, true, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new BoolFilter(Operator.IS, false, attributeDefinition);
+		doMatch(filter, true);
+	}
+	
+
+	@Test
+	public void testIsSet() throws Exception {
+		BoolFilter filter;
+		filter = new BoolFilter(Operator.IS_SET, true, attributeDefinition);
+		doMatch(filter, true);
+		
+		AttributeDefinitionBoolean nonExistingAttributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionBoolean();
+		nonExistingAttributeDefinition.setIdentifier("AD_ID0");
+		
+		filter = new BoolFilter(Operator.IS, false, nonExistingAttributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		BoolFilter filter;
+		filter = new BoolFilter(Operator.IS_NOT_SET, true, attributeDefinition);
+		doMatch(filter, false);
+		
+		AttributeDefinitionBoolean nonExistingAttributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionBoolean();
+		nonExistingAttributeDefinition.setIdentifier("AD_ID1");
+		
+		filter = new BoolFilter(Operator.IS_NOT_SET, false, nonExistingAttributeDefinition);
+		doMatch(filter, false);
+	}	
+	
+	
+	/* 
+	 * A match on a specObject that does not contain this attribute should always return false
+	 */
+	public void doEmptyTest() throws Exception {
+		
+		BoolFilter filter = new BoolFilter(Operator.IS, true, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new BoolFilter(Operator.IS, false, attributeDefinition);
+		doMatch(filter, false);
+	}	
+	
+	
+		
+	public void createFixture(Object value){
+		if ((value != null) && ! (value instanceof Boolean)) {
+			throw new IllegalArgumentException();	
+		}
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionBoolean();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionBoolean definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionBoolean();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueBoolean attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueBoolean();
+		attributeValue.setDefinition(attributeDefinition);
+		if (value == null){
+			//attributeValue.setTheValue(false);
+			// we do nothing here to simulate a non set value
+			// attributeValue.isSetTheValue() will return false
+		}else{
+			attributeValue.setTheValue((Boolean) value);
+		}
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+
+	@Override
+	public BoolFilter createFilterInstance(Operator operator) {
+		return new BoolFilter(operator, true, attributeDefinition); 
+	}
+
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return BoolFilter.SUPPORTED_OPERATORS;
+	}
+
+
+
+	
+	
+	
+	
+
+
+
+	
+
+}
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/CompoundFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/CompoundFilterTest.java
new file mode 100644
index 0000000..775c3ab
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/CompoundFilterTest.java
@@ -0,0 +1,129 @@
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.AttributeValueBoolean;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.BoolFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.SimpleCompoundFilter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CompoundFilterTest extends AbstractFilterTest {
+
+	private AttributeDefinitionBoolean attributeDefinition1;
+	private AttributeDefinitionBoolean attributeDefinition2;
+	private AttributeDefinitionBoolean attributeDefinition3;
+	private BoolFilter filterTrue1;
+	private BoolFilter filterTrue2;
+	private BoolFilter filterFalse1;
+	private List<IFilter> filters;
+
+	@Before
+	public void setUp() {
+		createFixture(true);
+		
+		filterTrue1 = new BoolFilter(IFilter.Operator.IS, true, attributeDefinition1);
+		filterTrue2 = new BoolFilter(IFilter.Operator.IS, true, attributeDefinition2);
+		filterFalse1 = new BoolFilter(IFilter.Operator.IS, true, attributeDefinition3);
+		
+		filters = new ArrayList<IFilter>();
+		filters.add(filterTrue1);
+		filters.add(filterTrue2);
+		filters.add(filterFalse1);
+	}
+	
+	
+	@Test
+	public void testOr() throws Exception {
+		SimpleCompoundFilter filter = new SimpleCompoundFilter(filters, true);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testAnd() throws Exception {
+		SimpleCompoundFilter filter = new SimpleCompoundFilter(filters, false);
+		doMatch(filter, true);
+	}
+	
+	@Test
+	public void testAnd2() throws Exception {
+		filters.clear();
+		filters.add(filterTrue1);
+		filters.add(filterTrue2);
+		
+		SimpleCompoundFilter filter = new SimpleCompoundFilter(filters, false);
+		doMatch(filter, true);
+	}
+	
+	@Override
+	public void createFixture(Object value) {
+		if ((value != null) && !(value instanceof Boolean)) {
+			throw new IllegalArgumentException();
+		}
+
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		attributeDefinition1 = createBooleanAttribute(specObject, true);
+		attributeDefinition2 = createBooleanAttribute(specObject, true);
+		attributeDefinition3 = createBooleanAttribute(specObject, false);
+
+		createSpecObjectType(specObject, attributeDefinition1);
+
+		setFixture(specObject);
+	}
+	
+	
+	
+	/* creates a new datatypeDefinition, attributeDefinition and attributeValue and adds it to the element
+	 * 
+	 * returns the newly created AttributeDefinition
+	 */
+	private AttributeDefinitionBoolean createBooleanAttribute(SpecElementWithAttributes element, Boolean value){
+		AttributeDefinitionBoolean attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionBoolean();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionBoolean definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionBoolean();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueBoolean attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueBoolean();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue((Boolean) value);
+		
+		element.getValues().add(attributeValue);
+		
+		return attributeDefinition;
+	}
+	
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return null;
+	}
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		// TODO Auto-generated method stub
+	}
+
+	
+	@Override
+	public void testExceptionsUnsupportedOperation() throws Exception {
+	
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterDefaultsTest.java
new file mode 100644
index 0000000..f168f4b
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterDefaultsTest.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.GregorianCalendar;
+
+import org.eclipse.rmf.reqif10.AttributeValueDate;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionDate;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.junit.Test;
+
+public class DateFilterDefaultsTest extends DateFilterTest {
+
+	@Test
+	public void testOnEmptyAttribute() {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	
+	
+	@Override	
+	public void createFixture(Object value){
+		GregorianCalendar theValue = (GregorianCalendar) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionDate();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionDate definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionDate();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueDate attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueDate();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		attributeDefinition.setDefaultValue(attributeValue);	
+		
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		specObjectType.getSpecAttributes().add(attributeDefinition);
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		//specObject.getValues().add(attributeValue);
+		specObject.setLastChange(new GregorianCalendar(2014, 11, 03, 12, 0, 0));
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterTest.java
new file mode 100644
index 0000000..0e54fdb
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/DateFilterTest.java
@@ -0,0 +1,442 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.GregorianCalendar;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
+import org.eclipse.rmf.reqif10.AttributeValueDate;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionDate;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class DateFilterTest extends AbstractFilterTest{
+
+	SpecObject specObject;
+	AttributeDefinitionDate attributeDefinition; 
+
+	@Rule public ExpectedException thrown= ExpectedException.none();
+	
+	@Override	
+	public void createFixture(Object value){
+		GregorianCalendar theValue = (GregorianCalendar) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionDate();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionDate definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionDate();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueDate attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueDate();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		specObject.setLastChange(new GregorianCalendar(2014, 11, 03, 12, 0, 0));
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}	
+	
+	
+	@Before
+	public void setUp(){
+		createFixture(new GregorianCalendar(2014, 11, 03));
+	}
+	
+	
+	@Test
+	public void testIs() throws Exception {
+		DateFilter filter;
+			
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014, 11, 03), null,  attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014, 11, 04), null,  attributeDefinition);
+		doMatch(filter, false);
+
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014,11,03,0,0,0), null,  attributeDefinition);
+		doMatch(filter, true);
+		
+		// we do the match on date only, the time of the day should be ignored 
+		createFixture(new GregorianCalendar(2014, 11, 03, 13, 14, 15));		
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014,11,03), null,  attributeDefinition);
+		doMatch(filter, true);
+				
+		// for is and is_not operator the time of the day is ignored
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014,11,03,20,0,0), null,  attributeDefinition);
+		doMatch(filter, true);
+		
+		// match two different representations of the same point in time (i.e. different time zones)
+		GregorianCalendar fixtureDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+		fixtureDate.set(2014, 11, 3, 23, 0, 0);
+		GregorianCalendar filterDate = new GregorianCalendar(TimeZone.getTimeZone("GMT+9"));
+		filterDate.set(2014, 11, 4, 8, 0, 0);
+		//System.out.println((filterDate.getTimeInMillis() - fixtureDate.getTimeInMillis()) / 1000 / 60 / 60);
+		
+		createFixture(fixtureDate);
+		filter = new DateFilter(IFilter.Operator.IS, filterDate, null,  attributeDefinition);
+		doMatch(filter, true);
+		
+		
+	}
+	
+	
+	@Test
+	public void testIsOnInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014, 11, 03), null,  DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014, 11, 04), null,  DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014,11,03,0,0,0), null,  DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testIsNot() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(2014, 11, 04), null,  attributeDefinition);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(2014, 11, 03), null,  attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotOnInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(2014, 11, 04), null,  DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(2014, 11, 03), null,  DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+
+	@Test
+	public void testBetween() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 01), new GregorianCalendar(2014, 11, 04), attributeDefinition);
+		doMatch(filter, true);
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 04), new GregorianCalendar(2014, 11, 01), attributeDefinition);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 03), new GregorianCalendar(2014, 11, 03), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 01), new GregorianCalendar(2014, 11, 03), attributeDefinition);
+		doMatch(filter, true);
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 03), new GregorianCalendar(2014, 11, 06), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 01, 01), new GregorianCalendar(2014, 11, 01), attributeDefinition);
+		doMatch(filter, false);
+	}
+		
+	@Test
+	public void testBetweenOnInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 01), new GregorianCalendar(2014, 11, 04), DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 11, 03), new GregorianCalendar(2014, 11, 03), DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 01, 01), new GregorianCalendar(2014, 11, 01), DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testBefore() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2015, 1, 1), new GregorianCalendar(2014, 11, 04), attributeDefinition);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 11, 3), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testBeforeOnInternal(){
+		DateFilter filter;
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2015, 1, 1), new GregorianCalendar(2014, 11, 04), DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 11, 3), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 1, 1), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testAfter() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2000, 1, 1), null, attributeDefinition);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(3000, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2014, 11, 03), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testAfterOnInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2000, 1, 1), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(3000, 1, 1), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2014, 11, 02), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2014, 11, 03, 0, 0, 0), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2014, 11, 03), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2014, 11, 03, 12, 0, 0), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+	
+	public void doEmptyTest(){
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN, new GregorianCalendar(2014, 1, 1), new GregorianCalendar(2014, 1, 1), attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER, new GregorianCalendar(2000, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testInternalAttributes() throws Exception {
+		DateFilter filter;
+
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(
+				2014, 11, 3), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(
+				2014, 11, 3, 17, 0, 0), null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.IS, new GregorianCalendar(
+				2014, 11, 4), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+
+		filter = new DateFilter(IFilter.Operator.IS_NOT, new GregorianCalendar(
+				2014, 11, 4), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+
+		filter = new DateFilter(IFilter.Operator.IS_NOT,
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+
+		filter = new DateFilter(IFilter.Operator.BETWEEN,
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+
+		filter = new DateFilter(IFilter.Operator.BETWEEN,
+				new GregorianCalendar(2014, 11, 3, 0, 0, 0),
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN,
+				new GregorianCalendar(2014, 11, 3, 12, 0, 0),
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BETWEEN,
+				new GregorianCalendar(2014, 11, 3, 0, 0, 0),
+				new GregorianCalendar(2014, 11, 3, 12, 0, 0),
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE,
+				new GregorianCalendar(2014, 11, 3, 23, 59, 59),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE,
+				new GregorianCalendar(2014, 11, 3, 12, 0, 0),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE,
+				new GregorianCalendar(2014, 11, 4),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.BEFORE,
+				new GregorianCalendar(2014, 11, 3),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER,
+				new GregorianCalendar(2014, 11, 3),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER,
+				new GregorianCalendar(2014, 11, 3, 12, 0, 0),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(IFilter.Operator.AFTER,
+				new GregorianCalendar(2014, 11, 5),
+				null,
+				DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS_SET, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		AttributeDefinitionDate attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionDate();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new DateFilter(IFilter.Operator.IS_SET, new GregorianCalendar(2014, 1, 1), null, attributeDefinition2);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(IFilter.Operator.IS_NOT_SET, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		AttributeDefinitionDate attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionDate();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new DateFilter(IFilter.Operator.IS_NOT_SET, new GregorianCalendar(2014, 1, 1), null, attributeDefinition2);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsSetInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(Operator.IS_SET, new GregorianCalendar(2014, 1, 1), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		filter = new DateFilter(Operator.IS_SET, null, null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+		
+		getFixture().setLastChange(null);
+		filter = new DateFilter(Operator.IS_SET, null, null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testIsNotSetInternal() throws Exception {
+		DateFilter filter;
+		
+		filter = new DateFilter(Operator.IS_NOT_SET, new GregorianCalendar(2014, 1, 1), null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		filter = new DateFilter(Operator.IS_NOT_SET, null, null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, false);
+		
+		getFixture().setLastChange(null);
+		filter = new DateFilter(Operator.IS_NOT_SET, null, null, DateFilter.InternalAttribute.LAST_CHANGE);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testExceptionsAttributeDefinition() throws Exception {
+		thrown.expect(IllegalArgumentException.class);
+		new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 1, 1), null, (AttributeDefinitionDate) null);
+	}
+	
+	@Test
+	public void testExceptionsInternalAttribute() throws Exception {
+		thrown.expect(IllegalArgumentException.class);
+		new DateFilter(IFilter.Operator.BEFORE, new GregorianCalendar(2014, 1, 1), null, (InternalAttribute) null);
+	}
+	
+	@Override
+	public DateFilter createFilterInstance(Operator operator) {
+		return new DateFilter(operator, new GregorianCalendar(2014, 1, 1), null, attributeDefinition);
+	}
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return DateFilter.SUPPORTED_OPERATORS;
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterDefaultsTest.java
new file mode 100644
index 0000000..4280e1d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterDefaultsTest.java
@@ -0,0 +1,67 @@
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.Collection;
+
+import org.eclipse.rmf.reqif10.AttributeValueEnumeration;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.junit.Test;
+
+public class EnumFilterDefaultsTest extends EnumFilterTest {
+
+
+	@Test
+	public void testOnEmptyAttribute() {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	
+	@SuppressWarnings("unchecked")
+	@Override
+	public void createFixture(Object values) {
+		if (specifiedValues == null){
+			throw new NullPointerException();
+		}
+		
+		Collection<EnumValue> enumValues = null;
+		if (values instanceof Collection<?>) {
+			enumValues = (Collection<EnumValue>) values;
+		}else if (values != null){
+			throw new IllegalArgumentException();
+		}
+		
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionEnumeration();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionEnumeration definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionEnumeration();
+		definition.setIdentifier("DD_ID0");
+		definition.getSpecifiedValues().addAll(specifiedValues);
+		attributeDefinition.setType(definition);
+		
+		AttributeValueEnumeration attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueEnumeration();
+		attributeValue.setDefinition(attributeDefinition);
+		if (enumValues != null){
+			attributeValue.getValues().addAll(enumValues);
+		}
+		attributeDefinition.setDefaultValue(attributeValue);
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}	
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterTest.java
new file mode 100644
index 0000000..c70badc
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/EnumFilterTest.java
@@ -0,0 +1,276 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.math.BigInteger;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.AttributeValueEnumeration;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.EmbeddedValue;
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.EnumFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EnumFilterTest extends AbstractFilterTest{
+
+	AttributeDefinitionEnumeration attributeDefinition;
+	LinkedList<EnumValue> specifiedValues;
+	
+	@Before
+	public void setUp(){
+		specifiedValues = new LinkedList<EnumValue>();
+		specifiedValues.add(createEnumValue(1));
+		specifiedValues.add(createEnumValue(2));
+		specifiedValues.add(createEnumValue(3));
+		
+		createFixture(specifiedValues);
+	}
+	
+	
+	@Test
+	public void testEquals() throws Exception {
+		EnumFilter filter;
+		LinkedList<EnumValue> testValues = new LinkedList<EnumValue>();
+		testValues.addAll(specifiedValues);
+		
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		testValues.clear();
+		testValues.add(specifiedValues.get(2));
+		testValues.add(specifiedValues.get(0));
+		testValues.add(specifiedValues.get(1));
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		testValues.removeFirst();
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		
+		createFixture(specifiedValues);
+		filter = new EnumFilter(Operator.EQUALS, testValues, attributeDefinition);
+		doMatch(filter, false);
+		
+		testValues.clear();
+		testValues.addAll(specifiedValues);
+		testValues.addAll(specifiedValues);
+		createFixture(specifiedValues);
+		filter = new EnumFilter(Operator.EQUALS, testValues, attributeDefinition);
+		doMatch(filter, true);
+	}
+	
+	@Test
+	public void testNotEquals() throws Exception {
+		EnumFilter filter;
+		LinkedList<EnumValue> testValues = new LinkedList<EnumValue>();
+		testValues.addAll(specifiedValues);
+		
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.NOT_EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		
+		testValues.removeFirst();
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.NOT_EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		createFixture(specifiedValues);
+		filter = new EnumFilter(Operator.NOT_EQUALS, testValues, attributeDefinition);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testContainsAll() throws Exception {
+		EnumFilter filter;
+				
+		createFixture(specifiedValues);
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		createFixture(specifiedValues);
+		LinkedList<EnumValue> testValues = new LinkedList<EnumValue>();
+		testValues.add(specifiedValues.get(0));
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		testValues.add(specifiedValues.get(2));
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		testValues.add(specifiedValues.get(1));
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		testValues.clear();
+		testValues.add(specifiedValues.getFirst());
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testContainsAny() throws Exception {
+		EnumFilter filter;
+		
+		createFixture(specifiedValues);
+		filter = new EnumFilter(Operator.CONTAINS_ANY, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		LinkedList<EnumValue> testValues = new LinkedList<EnumValue>();
+		testValues.add(specifiedValues.get(1));
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.CONTAINS_ANY, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		LinkedList<EnumValue> testValues2 = new LinkedList<EnumValue>();
+		testValues2.add(specifiedValues.get(0));
+		createFixture(testValues);
+		filter = new EnumFilter(Operator.CONTAINS_ANY, testValues2, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		EnumFilter filter;
+		
+		filter = new EnumFilter(IFilter.Operator.IS_SET, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		
+		AttributeDefinitionEnumeration attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionEnumeration();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new EnumFilter(IFilter.Operator.IS_SET, specifiedValues, attributeDefinition2);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		EnumFilter filter;
+		
+		filter = new EnumFilter(IFilter.Operator.IS_NOT_SET, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		
+		AttributeDefinitionEnumeration attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionEnumeration();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new EnumFilter(IFilter.Operator.IS_NOT_SET, specifiedValues, attributeDefinition2);
+		doMatch(filter, false);
+	}	
+	
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		EnumFilter filter;
+		LinkedList<EnumValue> emptyList = new LinkedList<EnumValue>();
+		
+		filter = new EnumFilter(Operator.EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		filter = new EnumFilter(Operator.EQUALS, emptyList, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new EnumFilter(Operator.NOT_EQUALS, specifiedValues, attributeDefinition);
+		doMatch(filter, true);
+		filter = new EnumFilter(Operator.NOT_EQUALS, emptyList, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new EnumFilter(Operator.CONTAINS_ALL, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		filter = new EnumFilter(Operator.CONTAINS_ALL, emptyList, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new EnumFilter(Operator.CONTAINS_ANY, specifiedValues, attributeDefinition);
+		doMatch(filter, false);
+		filter = new EnumFilter(Operator.CONTAINS_ANY, emptyList, attributeDefinition);
+		doMatch(filter, true);
+		
+	}
+	
+		
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return EnumFilter.SUPPORTED_OPERATORS;
+	}
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new EnumFilter(operator, specifiedValues, attributeDefinition);
+	}
+
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public void createFixture(Object values) {
+		if (specifiedValues == null){
+			throw new NullPointerException();
+		}
+		
+		Collection<EnumValue> enumValues = null;
+		if (values instanceof Collection<?>) {
+			enumValues = (Collection<EnumValue>) values;
+		}else if (values != null){
+			throw new IllegalArgumentException();
+		}
+		
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionEnumeration();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionEnumeration definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionEnumeration();
+		definition.setIdentifier("DD_ID0");
+		definition.getSpecifiedValues().addAll(specifiedValues);
+		attributeDefinition.setType(definition);
+		
+		AttributeValueEnumeration attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueEnumeration();
+		attributeValue.setDefinition(attributeDefinition);
+		if (enumValues != null){
+			attributeValue.getValues().addAll(enumValues);
+		}
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+	/*
+	 * Constructs an enumValue
+	 * 
+	 * The id and embeddedValue is derived from the number parameter, hence only numbers should be given 
+	 */
+	private EnumValue createEnumValue(Integer number){
+		EnumValue enumValue = ReqIF10Factory.eINSTANCE.createEnumValue();
+		enumValue.setIdentifier("ENUMVALUE_" + number);
+		EmbeddedValue embeddedValue = ReqIF10Factory.eINSTANCE.createEmbeddedValue();
+		embeddedValue.setKey(new BigInteger(number.toString()));
+		embeddedValue.setOtherContent(number.toString());
+		enumValue.setProperties(embeddedValue);
+		
+		return enumValue;
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterDefaultsTest.java
new file mode 100644
index 0000000..29b5d92
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterDefaultsTest.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.math.BigInteger;
+
+import org.eclipse.rmf.reqif10.AttributeValueInteger;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionInteger;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.junit.Test;
+
+public class IntegerFilterDefaultsTest extends IntegerFilterTest {
+
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	/**
+	 * Sets the value as the defaultValue.
+	 * No value is set on the specObject
+	 * All test from super class should then pass using the default value of the attribute 
+	 */
+	@Override
+	public void createFixture(Object value) {
+		BigInteger theValue = (BigInteger) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionInteger();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionInteger definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionInteger();
+		definition.setIdentifier("DD_ID0");
+		
+		attributeDefinition.setType(definition);
+		AttributeValueInteger attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueInteger();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		attributeDefinition.setDefaultValue(attributeValue);
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterTest.java
new file mode 100644
index 0000000..7eeab00
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/IntegerFilterTest.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.math.BigInteger;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
+import org.eclipse.rmf.reqif10.AttributeValueInteger;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionInteger;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IntegerFilterTest extends AbstractFilterTest {
+
+	
+	AttributeDefinitionInteger attributeDefinition;
+
+	
+	
+	@Before
+	public void setUp(){
+		createFixture(new BigInteger("1"));
+	}
+	
+	
+	@Test
+	public void testIs() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS, BigInteger.ONE, null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.IS, BigInteger.ZERO, null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testIsNot() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_NOT, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.IS_NOT, BigInteger.ONE, null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testBetween() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("0"), new BigInteger("2"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("0"), new BigInteger("1"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("1"), new BigInteger("2"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("2"), new BigInteger("3"), attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("3"), new BigInteger("0"), attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testGreater() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.GREATER, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.GREATER, new BigInteger("1"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.GREATER, new BigInteger("2"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.GREATER, new BigInteger("0"), new BigInteger("2"), attributeDefinition);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testSmaller() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.SMALLER, new BigInteger("2"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.SMALLER, new BigInteger("1"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.SMALLER, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.SMALLER, new BigInteger("0"), new BigInteger("2"), attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_SET, new BigInteger("2"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		AttributeDefinitionInteger attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionInteger();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new NumberFilter(Operator.IS_SET, new BigInteger("2"), null, attributeDefinition2);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_NOT_SET, new BigInteger("2"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		AttributeDefinitionInteger attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionInteger();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new NumberFilter(Operator.IS_NOT_SET, new BigInteger("2"), null, attributeDefinition2);
+		doMatch(filter, false);
+	}	
+	
+	
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new NumberFilter(operator, BigInteger.ZERO, null, attributeDefinition);
+	}
+	
+
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.IS_NOT, new BigInteger("10"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new BigInteger("0"), new BigInteger("10"), attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.GREATER, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.SMALLER, new BigInteger("0"), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+
+
+	@Override
+	public void createFixture(Object value) {
+		BigInteger theValue = (BigInteger) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionInteger();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionInteger definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionInteger();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueInteger attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueInteger();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return NumberFilter.SUPPORTED_OPERATORS;
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterDefaultsTest.java
new file mode 100644
index 0000000..4313dc9
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterDefaultsTest.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import org.eclipse.rmf.reqif10.AttributeValueReal;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionReal;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.junit.Test;
+
+public class RealFilterDefaultsTest extends RealFilterTest {
+
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	
+	/**
+	 * Sets the value as the defaultValue.
+	 * No value is set on the specObject
+	 * All test from super class should then pass using the default value of the attribute 
+	 */
+	@Override
+	public void createFixture(Object value) {
+		Double theValue = (Double) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionReal();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionReal definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionReal();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueReal attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueReal();
+		attributeValue.setDefinition(attributeDefinition);
+		
+		if (theValue != null){
+			attributeValue.setTheValue(theValue);
+		}
+		
+		attributeDefinition.setDefaultValue(attributeValue);
+		
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		specObjectType.getSpecAttributes().add(attributeDefinition);
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.setType(specObjectType);
+		
+		setFixture(specObject);
+	}
+	
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterTest.java
new file mode 100644
index 0000000..9c48206
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/RealFilterTest.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
+import org.eclipse.rmf.reqif10.AttributeDefinitionReal;
+import org.eclipse.rmf.reqif10.AttributeValueReal;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionReal;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class RealFilterTest extends AbstractFilterTest {
+
+	
+	AttributeDefinitionReal attributeDefinition;
+
+	
+	
+	@Before
+	public void setUp(){
+		createFixture(new Double("1"));
+	}
+	
+	
+	@Test
+	public void testIs() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS, new Double("1"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.IS, new Double("0"), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testIsNot() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_NOT, new Double("0"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.IS_NOT, new Double("1"), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testBetween() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("0"), new Double("2"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("0"), new Double("1"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("1"), new Double("2"), attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("2"), new Double("3"), attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("3"), new Double("0"), attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testGreater() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.GREATER, new Double("0"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.GREATER, new Double("1"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.GREATER, new Double("2"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.GREATER, new Double("0"), new Double("2"), attributeDefinition);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testSmaller() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.SMALLER, new Double("2"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.SMALLER, new Double("1"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.SMALLER, new Double("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.SMALLER, new Double("0"), new Double("2"), attributeDefinition);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_SET, new Double("2"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		AttributeDefinitionReal attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionReal();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new NumberFilter(Operator.IS_SET, new Double("2"), null, attributeDefinition2);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS_NOT_SET, new Double("2"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		AttributeDefinitionInteger attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionInteger();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new NumberFilter(Operator.IS_NOT_SET, new Double("2"), null, attributeDefinition2);
+		doMatch(filter, false);
+	}	
+	
+	
+	
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new NumberFilter(operator, new Double(0), null, attributeDefinition);
+	}
+	
+
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		NumberFilter filter;
+		
+		filter = new NumberFilter(Operator.IS, new Double("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.IS_NOT, new Double("10"), null, attributeDefinition);
+		doMatch(filter, true);
+		
+		filter = new NumberFilter(Operator.BETWEEN, new Double("0"), new Double("10"), attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.GREATER, new Double("0"), null, attributeDefinition);
+		doMatch(filter, false);
+		
+		filter = new NumberFilter(Operator.SMALLER, new Double("0"), null, attributeDefinition);
+		doMatch(filter, false);
+	}
+
+
+	@Override
+	public void createFixture(Object value) {
+		Double theValue = (Double) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionReal();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionReal definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionReal();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueReal attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueReal();
+		attributeValue.setDefinition(attributeDefinition);
+		
+		if (theValue != null){
+			System.out.println("seeting the value " + theValue);
+			attributeValue.setTheValue(theValue);
+		}
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return NumberFilter.SUPPORTED_OPERATORS;
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/SimpleCompoundFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/SimpleCompoundFilterTest.java
new file mode 100644
index 0000000..3c0740c
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/SimpleCompoundFilterTest.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigInteger;
+import java.util.GregorianCalendar;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
+import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeValue;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.pror.testframework.AbstractItemProviderTest;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
+import org.eclipse.rmf.reqif10.search.filter.SimpleCompoundFilter;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.eclipse.rmf.reqif10.search.testdata.TestData;
+import org.junit.Test;
+
+public class SimpleCompoundFilterTest extends AbstractItemProviderTest {
+
+	
+	@Test
+	public void testName() throws Exception {
+		URI uri = TestData.getURI("testMultipleAttributes.reqif");
+		final Resource resource = editingDomain.getResourceSet().getResource(uri, true);
+		final ReqIF reqif = (ReqIF) resource.getContents().get(0);
+		SpecObject so = reqif.getCoreContent().getSpecObjects().get(0);
+		
+		
+		AttributeDefinitionString adString = null;
+		AttributeDefinitionDate adDate = null;
+		AttributeDefinitionInteger adInteger = null;
+		for (AttributeValue attributeValue : so.getValues()) {
+			AttributeDefinition attributeDefinition = ReqIF10Util.getAttributeDefinition(attributeValue);
+			System.out.println(attributeDefinition.getClass());
+			if (attributeDefinition instanceof AttributeDefinitionString) {
+				adString = (AttributeDefinitionString) attributeDefinition;
+			}
+			if (attributeDefinition instanceof AttributeDefinitionInteger) {
+				adInteger = (AttributeDefinitionInteger) attributeDefinition;
+			}
+			if (attributeDefinition instanceof AttributeDefinitionDate) {
+				adDate = (AttributeDefinitionDate) attributeDefinition;
+			}
+		}
+		
+		
+		LinkedList<IFilter> filters = new LinkedList<IFilter>();
+		filters.add(new DateFilter(Operator.AFTER, new GregorianCalendar(2014, 1, 1), null, adDate)); // matches
+		filters.add(new NumberFilter(Operator.GREATER, new BigInteger("100"), null, adInteger)); // does not match
+		filters.add(new StringFilter(Operator.CONTAINS, "c", adString, false)); // matches
+			
+		
+		SimpleCompoundFilter orFilter = new SimpleCompoundFilter(filters, true);
+		for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
+			assertTrue(orFilter.match(specObject));
+		}
+		
+		
+		SimpleCompoundFilter andFilter = new SimpleCompoundFilter(filters, false);
+		for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
+			assertFalse(andFilter.match(specObject));
+		}
+		
+		filters = new LinkedList<IFilter>();
+		filters.add(new DateFilter(Operator.AFTER, new GregorianCalendar(2014, 1, 1), null, adDate)); // matches
+		filters.add(new StringFilter(Operator.CONTAINS, "c", adString, false)); // matches
+
+		andFilter = new SimpleCompoundFilter(filters, false);
+		for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
+			assertTrue(andFilter.match(specObject));
+		}
+		
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterDefaultsValueTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterDefaultsValueTest.java
new file mode 100644
index 0000000..9206478
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterDefaultsValueTest.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.GregorianCalendar;
+
+import org.eclipse.rmf.reqif10.AttributeValueString;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.SpecObjectType;
+import org.junit.Test;
+
+public class StringFilterDefaultsValueTest extends StringFilterTest {
+
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+
+	/**
+	 * Sets the value as the defaultValue.
+	 * No value is set on the specObject
+	 * All test from super class should then pass using the default value of the attribute 
+	 */
+	@Override
+	public void createFixture(Object value) {
+		String theValue = (String) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionString definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		
+		AttributeValueString attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueString();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		attributeDefinition.setDefaultValue(attributeValue);
+
+		SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
+		specObjectType.getSpecAttributes().add(attributeDefinition);
+		
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.setType(specObjectType);
+		specObject.setLastChange(new GregorianCalendar(2014, 12, 03));
+		specObject.setIdentifier("THE_SPECOBJECT_ID");
+		specObject.setDesc("THE_SPECOBJECT_DESC");
+		specObject.setLongName("THE_SPECOBJECT_LONG_NAME");
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+
+	}
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+	
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterInternalTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterInternalTest.java
new file mode 100644
index 0000000..ada170f
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterInternalTest.java
@@ -0,0 +1,197 @@
+package org.eclipse.rmf.reqif10.search.test;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Set;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeValueString;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+
+@RunWith(Parameterized.class)
+public class StringFilterInternalTest extends AbstractFilterTest {
+
+	@Parameters
+	public static Collection<Object[]> data() {
+				
+		/*
+		 * AbstractTextFilter.InternalAttribute.DESC => THE_SPECOBJECT_DESC
+		 * AbstractTextFilter.InternalAttribute.IDENTIFIER  => THE_SPECOBJECT_ID
+		 * AbstractTextFilter.InternalAttribute.LONG_NAME => THE_SPECOBJECT_LONG_NAME
+		 *
+		 * Operator, FilterValue, Attribute, expectedResult
+		 * 
+		 */
+		
+		
+		HashMap<InternalAttribute, String> values = new HashMap<AbstractTextFilter.InternalAttribute, String>();
+		values.put(AbstractTextFilter.InternalAttribute.DESC, "THE_SPECOBJECT_DESC");
+		values.put(AbstractTextFilter.InternalAttribute.IDENTIFIER, "THE_SPECOBJECT_ID");
+		values.put(AbstractTextFilter.InternalAttribute.LONG_NAME, "THE_SPECOBJECT_LONG_NAME");
+		
+		
+		ArrayList<Object[]> testData = new ArrayList<Object[]>();
+		 
+		for (AbstractTextFilter.InternalAttribute attribute : values.keySet()) {
+			// match the value on the value
+			testData.add(new Object[] { 
+					IFilter.Operator.EQUALS, values.get(attribute), attribute, true,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_EQUALS, values.get(attribute), attribute, true,
+					false });
+			
+			// match the value on the value.toLowerCase and caseInSensitive
+			testData.add(new Object[] { 
+					IFilter.Operator.EQUALS, values.get(attribute).toLowerCase(), attribute, false,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_EQUALS, values.get(attribute).toLowerCase(), attribute, false,
+					false });
+			
+			// match the value on the value.toLowerCase and caseSensitive
+			testData.add(new Object[] { 
+					IFilter.Operator.EQUALS, values.get(attribute).toLowerCase(), attribute, true,
+					false });
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_EQUALS, values.get(attribute).toLowerCase(), attribute, true,
+					true });
+			
+			
+			testData.add(new Object[] { 
+					IFilter.Operator.CONTAINS, "THE_", attribute, true,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.CONTAINS, "THE_", attribute, false,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.CONTAINS, "the_", attribute, true,
+					false });
+			
+			
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_CONTAINS, "E", attribute, true,
+					false });
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_CONTAINS, "e", attribute, false,
+					false });
+			testData.add(new Object[] { 
+					IFilter.Operator.NOT_CONTAINS, "XXX", attribute, true,
+					true });
+			
+			testData.add(new Object[] { 
+					IFilter.Operator.REGEXP, ".*E.*", attribute, true,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.REGEXP, ".*e.*", attribute, false,
+					true });
+			testData.add(new Object[] { 
+					IFilter.Operator.REGEXP, ".*e.*", attribute, true,
+					false });
+			
+		}
+		
+		
+		return testData;
+
+	}
+	
+	Operator operator;
+	String filterValue;
+	AbstractTextFilter.InternalAttribute attribute;
+	boolean caseSensitive;
+	boolean expectedResult;
+	
+	
+	
+	public StringFilterInternalTest(Operator operator, String filterValue, AbstractTextFilter.InternalAttribute attribute, Boolean caseSensitive, Boolean expectedResult) {
+		this.operator = operator;
+		this.filterValue = filterValue;
+		this.attribute = attribute;
+		this.expectedResult = expectedResult;
+		this.caseSensitive = caseSensitive;
+	}
+
+	
+	@Test
+	public void testFilter() throws Exception {
+		System.out.println("running " +  this.operator + " " + this.filterValue + " on " + attribute + "expecting " + expectedResult);
+		
+		StringFilter filter = new StringFilter(operator, filterValue, attribute, caseSensitive);
+		doMatch(filter, expectedResult);
+	}
+
+	
+	
+	@Before
+	public void setUp(){
+		createFixture("abcDEF");
+	}
+	
+	@Override
+	public void createFixture(Object value) {
+		String theValue = (String) value;
+		
+		AttributeDefinitionString attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionString definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueString attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueString();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		specObject.setLastChange(new GregorianCalendar(2014, 12, 03));
+		specObject.setIdentifier("THE_SPECOBJECT_ID");
+		specObject.setDesc("THE_SPECOBJECT_DESC");
+		specObject.setLongName("THE_SPECOBJECT_LONG_NAME");
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+	
+	
+	
+
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	public void testExceptionsUnsupportedOperation() throws Exception {
+		
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterTest.java
new file mode 100644
index 0000000..d5d3dba
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/StringFilterTest.java
@@ -0,0 +1,333 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.GregorianCalendar;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeValue;
+import org.eclipse.rmf.reqif10.AttributeValueString;
+import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.eclipse.rmf.reqif10.search.testdata.TestData;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class StringFilterTest extends AbstractFilterTest{
+
+	AttributeDefinitionString attributeDefinition; 
+
+	@Rule public ExpectedException thrown= ExpectedException.none();
+	
+	@Before
+	public void setUp(){
+		createFixture("abcDEF");
+	}
+	
+	
+	@Test
+	public void testEquals() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abcDEF",  attributeDefinition, true);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abcDEF",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abcdef",  attributeDefinition, true);
+		doMatch(filter, false);
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abcdef",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abc",  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abc",  attributeDefinition, true);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testNotEquals() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.NOT_EQUALS, "X",  attributeDefinition, true);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.NOT_EQUALS, "abcdef",  attributeDefinition, true);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.NOT_EQUALS, "abcdef",  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		filter = new StringFilter(IFilter.Operator.NOT_EQUALS, "abcDEF",  attributeDefinition, true);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testContains() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "A",  attributeDefinition, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "A",  attributeDefinition, true);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "nonexisting substring",  attributeDefinition, true);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "nonexisting substring",  attributeDefinition, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "abcDEF",  attributeDefinition, true);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "abcDEF",  attributeDefinition, false);
+		doMatch(filter, true);
+	}
+	
+	
+	@Test
+	public void testNotContains() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "A",  attributeDefinition, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "A",  attributeDefinition, true);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "nonexisting substring",  attributeDefinition, true);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "nonexisting substring",  attributeDefinition, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "abcDEF",  attributeDefinition, true);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "abcDEF",  attributeDefinition, false);
+		doMatch(filter, false);
+	}
+	
+	@Test
+	public void testRegExp() throws Exception {
+		StringFilter filter;
+		
+		filter= new StringFilter(IFilter.Operator.REGEXP, ".*b.*",  attributeDefinition, true);
+		doMatch(filter, true);
+		
+		filter= new StringFilter(IFilter.Operator.REGEXP, ".*b.*",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		filter= new StringFilter(IFilter.Operator.REGEXP, ".*ABC.*",  attributeDefinition, true);
+		doMatch(filter, false);
+		
+		filter= new StringFilter(IFilter.Operator.REGEXP, ".*ABC.*",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+	}
+		
+	
+	@Override
+	public void doEmptyTest(){
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.EQUALS, "abcdef",  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		// A missing AD should always yield false for equals
+		filter = new StringFilter(IFilter.Operator.EQUALS, "",  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		// A missing AD should always yield true for not_equals
+		filter = new StringFilter(IFilter.Operator.NOT_EQUALS, "",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		// A missing AD should always yield false for contains
+		filter = new StringFilter(IFilter.Operator.CONTAINS, "",  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		// A missing AD should always yield true for not_contains
+		filter = new StringFilter(IFilter.Operator.NOT_CONTAINS, "",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		// apply Regexp to empty string
+		filter = new StringFilter(IFilter.Operator.REGEXP, "",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.REGEXP, ".*",  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.REGEXP, ".+",  attributeDefinition, false);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testExceptionsAttributeDefinition() throws Exception {
+		thrown.expect(IllegalArgumentException.class);
+		new StringFilter(IFilter.Operator.EQUALS, "abcdef",  (AttributeDefinitionString) null, false);
+	}
+	
+	@Test
+	public void testExceptionsInternalAttribute() throws Exception {
+		thrown.expect(IllegalArgumentException.class);
+		new StringFilter(IFilter.Operator.EQUALS, "abcdef",  (InternalAttribute) null, false);
+	}
+	
+	
+	@Test
+	public void testDefaultString() throws Exception {
+		
+		URI uri = TestData.getURI("defaultValues.reqif");
+		final Resource resource = editingDomain.getResourceSet().getResource(uri, true);
+		final ReqIF reqif = (ReqIF) resource.getContents().get(0);
+		SpecObject so0 = reqif.getCoreContent().getSpecObjects().get(0);
+		SpecObject so1 = reqif.getCoreContent().getSpecObjects().get(1);
+		
+		AttributeDefinitionString adString = null;
+		for (AttributeValue attributeValue : so0.getValues()) {
+			AttributeDefinition attributeDefinition = ReqIF10Util.getAttributeDefinition(attributeValue);
+			//System.out.println(attributeDefinition.getClass());
+			if (attributeDefinition instanceof AttributeDefinitionString) {
+				adString = (AttributeDefinitionString) attributeDefinition;
+			}
+		}
+		
+		StringFilter stringFilter = new StringFilter(Operator.EQUALS, "the default description value", adString, true);
+		assertFalse(stringFilter.match(so0));
+		assertTrue(stringFilter.match(so1));
+		
+	}
+	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.IS_SET, null,  attributeDefinition, false);
+		doMatch(filter, true);
+		
+		AttributeDefinitionString attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new StringFilter(IFilter.Operator.IS_SET, null,  attributeDefinition2, false);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		StringFilter filter;
+		
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, null,  attributeDefinition, false);
+		doMatch(filter, false);
+		
+		AttributeDefinitionString attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, null,  attributeDefinition2, false);
+		doMatch(filter, false);
+	}
+	
+	
+	@Test
+	public void isSetInternal() throws Exception {
+		StringFilter filter; 
+		
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.DESC, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.IDENTIFIER, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.LONG_NAME, false);
+		doMatch(filter, true);
+		
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.DESC, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.IDENTIFIER, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.LONG_NAME, false);
+		doMatch(filter, false);
+		
+		SpecElementWithAttributes specObject = getFixture();
+		specObject.setDesc(null);
+		specObject.setLongName(null);
+		specObject.setIdentifier(null);
+		
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.DESC, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.IDENTIFIER, false);
+		doMatch(filter, false);
+		filter = new StringFilter(IFilter.Operator.IS_SET, "", AbstractTextFilter.InternalAttribute.LONG_NAME, false);
+		doMatch(filter, false);
+		
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.DESC, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.IDENTIFIER, false);
+		doMatch(filter, true);
+		filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", AbstractTextFilter.InternalAttribute.LONG_NAME, false);
+		doMatch(filter, true);
+	}
+	
+	
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return StringFilter.SUPPORTED_OPERATORS; 
+	}
+
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new StringFilter(operator, "", attributeDefinition, true);
+	}
+
+
+	
+
+	@Override
+	public void createFixture(Object value) {
+		String theValue = (String) value;
+		
+		attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
+		attributeDefinition.setIdentifier("AD_ID0");
+		DatatypeDefinitionString definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
+		definition.setIdentifier("DD_ID0");
+		attributeDefinition.setType(definition);
+		AttributeValueString attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueString();
+		attributeValue.setDefinition(attributeDefinition);
+		attributeValue.setTheValue(theValue);
+		SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
+		specObject.getValues().add(attributeValue);
+		specObject.setLastChange(new GregorianCalendar(2014, 12, 03));
+		specObject.setIdentifier("THE_SPECOBJECT_ID");
+		specObject.setDesc("THE_SPECOBJECT_DESC");
+		specObject.setLongName("THE_SPECOBJECT_LONG_NAME");
+		
+		createSpecObjectType(specObject, attributeDefinition);
+		
+		setFixture(specObject);
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterDefaultsTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterDefaultsTest.java
new file mode 100644
index 0000000..19c3d80
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterDefaultsTest.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import static org.junit.Assert.fail;
+
+import java.net.URISyntaxException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.search.testdata.TestData;
+import org.junit.Test;
+
+public class XhtmlFilterDefaultsTest extends XhtmlFilterTest {
+
+	@Test
+	public void testOnEmptyAttribute() throws Exception {
+		// Do nothing, since this test will fall back on default values 
+	}
+	
+	
+	/*
+	 * The Value in this reqif is:
+	 * <xhtml:div><xhtml:p style="text-align: left">hello</xhtml:p><xhtml:p style=" text-align: left">world</xhtml:p></xhtml:div>
+	 * 
+	 * (non-Javadoc)
+	 * @see org.eclipse.rmf.reqif10.search.test.AbstractFilterTest#createFixture(java.lang.Object)
+	 */
+	@Override
+	public void createFixture(Object value) {
+		try {
+			URI uri = TestData.getURI("xhtml_with_defaultValues.reqif");
+			//URI uri = TestData.getURI("simplexhtml.reqif");
+			final Resource resource = editingDomain.getResourceSet().getResource(uri, true);
+			final ReqIF reqif = (ReqIF) resource.getContents().get(0);
+			specObject = reqif.getCoreContent().getSpecObjects().get(0);
+			
+			attributeDefinition = (AttributeDefinitionXHTML) reqif.getCoreContent().getSpecTypes().get(0).getSpecAttributes().get(1);
+			
+			if (value == null){
+				attributeDefinition.getDefaultValue().setTheValue(null);
+			}
+			
+			setFixture(specObject);
+		} catch (URISyntaxException e) {
+			e.printStackTrace();
+			fail("Could not load testdata");
+		}
+	}
+
+	
+	@Override
+	public void testIsSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+
+	@Override
+	public void testIsNotSet() throws Exception {
+		// super would fail because of the changed fixture
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterTest.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterTest.java
new file mode 100644
index 0000000..5d430f4
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/test/XhtmlFilterTest.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.test;
+
+import static org.junit.Assert.fail;
+
+import java.net.URISyntaxException;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
+import org.eclipse.rmf.reqif10.AttributeValueXHTML;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.ReqIF10Factory;
+import org.eclipse.rmf.reqif10.SpecObject;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.eclipse.rmf.reqif10.search.filter.XhtmlFilter;
+import org.eclipse.rmf.reqif10.search.testdata.TestData;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class XhtmlFilterTest extends AbstractFilterTest{
+
+	SpecObject specObject;
+	AttributeDefinitionXHTML attributeDefinition; 
+
+	@Rule public ExpectedException thrown= ExpectedException.none();
+	
+	@Before
+	public void seUp(){
+		createFixture("");
+	}
+		
+	
+	@Test
+	public void testContains() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "HELLO",  attributeDefinition, false);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "HELLO",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "<xhtml:p",  attributeDefinition, false);
+		doMatch(xhtmlFilter, true);
+	}
+	
+	
+	@Test
+	public void testNotContains() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "HELLO",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "NOTHING",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+	}
+	
+
+	
+	@Test
+	public void testRegExp() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP, "<xhtml:p.*>hel+o",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP, "NOTHING",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+	}
+
+	@Test
+	public void testRegExpPlain() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "hello\\s* world",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "hello.*world",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+	}	
+	
+	@Test
+	public void testIsSet() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.IS_SET, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		AttributeDefinitionXHTML attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionXHTML();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.IS_SET, "hello",  attributeDefinition2, true);
+		doMatch(xhtmlFilter, false);
+	}
+	
+	@Test
+	public void testIsNotSet() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.IS_NOT_SET, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		
+		AttributeDefinitionXHTML attributeDefinition2 = ReqIF10Factory.eINSTANCE.createAttributeDefinitionXHTML();
+		attributeDefinition2.setIdentifier("AD_ID1");
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.IS_NOT_SET, "hello",  attributeDefinition2, true);
+		doMatch(xhtmlFilter, false);
+	}
+
+
+	@Test
+	public void testExceptionsAttributeDefinition() throws Exception {
+		thrown.expect(IllegalArgumentException.class);
+		new StringFilter(IFilter.Operator.EQUALS, "abcdef",  (AttributeDefinitionString) null, false);
+	}
+	
+	
+	@Override
+	public Set<Operator> getSupportedOperators() {
+		return XhtmlFilter.SUPPORTED_OPERATORS;
+	}
+
+
+	@Override
+	public IFilter createFilterInstance(Operator operator) {
+		return new XhtmlFilter(operator, "", attributeDefinition, true);
+	}
+
+
+	@Override
+	public void doEmptyTest() throws Exception {
+		XhtmlFilter xhtmlFilter;
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "HELLO",  attributeDefinition, false);
+		doMatch(xhtmlFilter, false);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "HELLO",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.CONTAINS, "<xhtml:p",  attributeDefinition, false);
+		doMatch(xhtmlFilter, false);
+		
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "hello",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "HELLO",  attributeDefinition, false);
+		doMatch(xhtmlFilter, true);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.NOT_CONTAINS, "NOTHING",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP, "<xhtml:p.*>hel+o",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP, "x*",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP, "",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "h",  attributeDefinition, true);
+		doMatch(xhtmlFilter, false);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "x*",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+		xhtmlFilter = new XhtmlFilter(IFilter.Operator.REGEXP_PLAIN, "",  attributeDefinition, true);
+		doMatch(xhtmlFilter, true);
+	}
+
+	/*
+	 * The Value in this reqif is:
+	 * <xhtml:div><xhtml:p style="text-align: left">hello</xhtml:p><xhtml:p style=" text-align: left">world</xhtml:p></xhtml:div>
+	 * 
+	 * (non-Javadoc)
+	 * @see org.eclipse.rmf.reqif10.search.test.AbstractFilterTest#createFixture(java.lang.Object)
+	 */
+	@Override
+	public void createFixture(Object value) {
+		try {
+			URI uri = TestData.getURI("simplexhtml.reqif");
+			final Resource resource = editingDomain.getResourceSet().getResource(uri, true);
+			final ReqIF reqif = (ReqIF) resource.getContents().get(0);
+			specObject = reqif.getCoreContent().getSpecObjects().get(0);
+			AttributeValueXHTML attributeValue = (AttributeValueXHTML) specObject.getValues().get(1);
+			
+			if (value == null){
+				attributeValue.setTheValue(null);
+			}
+			
+			attributeDefinition = (AttributeDefinitionXHTML) ReqIF10Util.getAttributeDefinition(attributeValue);
+			
+			createSpecObjectType(specObject, attributeDefinition);
+			
+			setFixture(specObject);
+		} catch (URISyntaxException e) {
+			e.printStackTrace();
+			fail("Could not load testdata");
+		}
+	}
+
+		
+}
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/TestData.java b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/TestData.java
new file mode 100644
index 0000000..2427745
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/TestData.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 Formal Mind GmbH and University of Dusseldorf.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.testdata;
+
+import java.net.URISyntaxException;
+
+import org.eclipse.emf.common.util.URI;
+
+/**
+ * 
+ * This class only exists to provide easy access to the RIF files in this folder.
+ * 
+ * @author jastram
+ *
+ */
+public class TestData {
+	
+	private TestData() {
+		throw new RuntimeException("Not intended for instantiation");
+	}
+	
+	/**
+	 * Retrieves the URI for the given test file.  The test file must not have any path elements and reside in the package, e.g.<p>
+	 * 
+	 * <pre>
+	 * URI resourceURI = TestData.getURI("simple.reqif");
+	 * </pre>
+	 * @param filename a path-less filename.
+	 * 
+	 * @return the URI for the file.
+	 * 
+	 * @throws URISyntaxException
+	 */
+	public static URI getURI(String filename) throws URISyntaxException {
+		return URI.createURI(TestData.class.getResource(filename).toURI().toString());
+	}
+	
+
+}
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/defaultValues.reqif b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/defaultValues.reqif
new file mode 100644
index 0000000..d0a8be3
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/defaultValues.reqif
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="rmf-6b0eac91-be76-4966-8f99-b29816a73dd9">
+      <COMMENT>Created by: iw</COMMENT>
+      <CREATION-TIME>2014-12-08T15:16:35.198+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_0P8Z437kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_0P8Z5H7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_0P8Z5X7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_0P8Z437kEeSfaZJzCJmPhw</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+              <DEFAULT-VALUE>
+                <ATTRIBUTE-VALUE-STRING THE-VALUE="the default description value">
+                  <DEFINITION>
+                    <ATTRIBUTE-DEFINITION-STRING-REF>_0P8Z5X7kEeSfaZJzCJmPhw</ATTRIBUTE-DEFINITION-STRING-REF>
+                  </DEFINITION>
+                </ATTRIBUTE-VALUE-STRING>
+              </DEFAULT-VALUE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPECIFICATION-TYPE IDENTIFIER="_0P8Z5n7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_0P9A8H7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_0P8Z437kEeSfaZJzCJmPhw</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="_0P9A8X7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Start editing here.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_0P8Z5X7kEeSfaZJzCJmPhw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_0P8Z5H7kEeSfaZJzCJmPhw</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_3ptyEH7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:53.778+01:00">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_0P8Z5H7kEeSfaZJzCJmPhw</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_0P9A837kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_0P9A8H7kEeSfaZJzCJmPhw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_0P8Z5n7kEeSfaZJzCJmPhw</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_0P9A9X7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:35.198+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_0P9A8X7kEeSfaZJzCJmPhw</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+            <SPEC-HIERARCHY IDENTIFIER="_3p3jEH7kEeSfaZJzCJmPhw" LAST-CHANGE="2014-12-08T15:16:53.778+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_3ptyEH7kEeSfaZJzCJmPhw</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_0P9A837kEeSfaZJzCJmPhw">
+            <configuration:columns>
+              <configuration:Column label="Description" width="400"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/simplexhtml.reqif b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/simplexhtml.reqif
new file mode 100644
index 0000000..d5e5c38
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/simplexhtml.reqif
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="769accad-0e26-41d2-b336-ce59fba43b1b">
+      <COMMENT>Created by: iw</COMMENT>
+      <CREATION-TIME>2014-12-04T17:09:36.070+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_8Q8OY3vPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+        <DATATYPE-DEFINITION-XHTML IDENTIFIER="_9FAIkHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:39.734+01:00" LONG-NAME="T_Xhtml"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_8Q8OZHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8Q8OZXvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8Q8OY3vPEeSShJpFBALhDQ</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            <ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_-wMfEHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:51.233+01:00" LONG-NAME="xhtml_content">
+              <TYPE>
+                <DATATYPE-DEFINITION-XHTML-REF>_9FAIkHvPEeSShJpFBALhDQ</DATATYPE-DEFINITION-XHTML-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-XHTML>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPECIFICATION-TYPE IDENTIFIER="_8Q8OZnvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8Q8OZ3vPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8Q8OY3vPEeSShJpFBALhDQ</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="_8Q8OaHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:10:53.129+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Start editing here.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8Q8OZXvPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-XHTML>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-XHTML-REF>_-wMfEHvPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-XHTML-REF>
+              </DEFINITION>
+              <THE-VALUE>
+                <xhtml:div><xhtml:p style="text-align: left">hello</xhtml:p><xhtml:p style=" text-align: left">world</xhtml:p></xhtml:div>
+              </THE-VALUE>
+            </ATTRIBUTE-VALUE-XHTML>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_8Q8OZHvPEeSShJpFBALhDQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_8Q8OanvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8Q8OZ3vPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_8Q8OZnvPEeSShJpFBALhDQ</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_8Q81cXvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_8Q8OaHvPEeSShJpFBALhDQ</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_8Q8OanvPEeSShJpFBALhDQ">
+            <configuration:columns>
+              <configuration:Column label="Description" width="300"/>
+              <configuration:Column label="xhtml_content"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+        <configuration:presentationConfigurations>
+          <configuration:ProrPresentationConfigurations/>
+        </configuration:presentationConfigurations>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/test.reqif b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/test.reqif
new file mode 100644
index 0000000..ec10d4d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/test.reqif
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="rmf-f3745dea-d527-4b6c-93cf-392f69bc01ef">
+      <COMMENT>Created by: iw</COMMENT>
+      <CREATION-TIME>2014-12-02T15:03:58.977+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_D8iR83osEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_D8iR9HosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_D8iR9XosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_D8iR83osEeSxZbz_wS3a6A</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPECIFICATION-TYPE IDENTIFIER="_D8iR9nosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_D8iR93osEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_D8iR83osEeSxZbz_wS3a6A</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT DESC="ABC desc" IDENTIFIER="_D8iR-HosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T16:48:13.455+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="ABC">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_D8iR9XosEeSxZbz_wS3a6A</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_D8iR9HosEeSxZbz_wS3a6A</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_jqZK0HosEeS4esDce-Cxdg" LAST-CHANGE="2014-12-02T16:48:17.457+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="DEF">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_D8iR9XosEeSxZbz_wS3a6A</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_D8iR9HosEeSxZbz_wS3a6A</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_D8iR-nosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_D8iR93osEeSxZbz_wS3a6A</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_D8iR9nosEeSxZbz_wS3a6A</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_D8iR_HosEeSxZbz_wS3a6A" LAST-CHANGE="2014-12-02T15:03:58.977+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_D8iR-HosEeSxZbz_wS3a6A</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+            <SPEC-HIERARCHY IDENTIFIER="_jqkxAHosEeS4esDce-Cxdg" LAST-CHANGE="2014-12-02T15:07:06.160+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_jqZK0HosEeS4esDce-Cxdg</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_D8iR-nosEeSxZbz_wS3a6A">
+            <configuration:columns>
+              <configuration:Column label="Description" width="400"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/testMultipleAttributes.reqif b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/testMultipleAttributes.reqif
new file mode 100644
index 0000000..72767b0
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/testMultipleAttributes.reqif
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="rmf-c9a54daa-05ef-480b-8e04-1eae676ef1c9">
+      <COMMENT>Created by: iw</COMMENT>
+      <CREATION-TIME>2014-12-08T13:51:37.208+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_8lu2k37YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+        <DATATYPE-DEFINITION-INTEGER IDENTIFIER="_9ejU8H7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:41.590+01:00" LONG-NAME="T_int" MAX="100" MIN="0"/>
+        <DATATYPE-DEFINITION-DATE IDENTIFIER="_IDQCwH7ZEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:52:51.088+01:00" LONG-NAME="T_Date"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_8lu2lH7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8lu2lX7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8lu2k37YEeSOL5kCsWyMsg</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            <ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_J4qFMH7ZEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:53:04.461+01:00" LONG-NAME="theDate">
+              <TYPE>
+                <DATATYPE-DEFINITION-DATE-REF>_IDQCwH7ZEeSOL5kCsWyMsg</DATATYPE-DEFINITION-DATE-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-DATE>
+            <ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_MdFw0H7ZEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:53:21.134+01:00" LONG-NAME="theInt">
+              <TYPE>
+                <DATATYPE-DEFINITION-INTEGER-REF>_9ejU8H7YEeSOL5kCsWyMsg</DATATYPE-DEFINITION-INTEGER-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-INTEGER>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPECIFICATION-TYPE IDENTIFIER="_8lu2ln7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8lu2l37YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8lu2k37YEeSOL5kCsWyMsg</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="_8lu2mH7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T14:07:48.529+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="abc">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8lu2lX7YEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-DATE THE-VALUE="2014-12-08T00:00:00.000+01:00">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-DATE-REF>_J4qFMH7ZEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-DATE-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-DATE>
+            <ATTRIBUTE-VALUE-INTEGER THE-VALUE="3">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-INTEGER-REF>_MdFw0H7ZEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-INTEGER-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-INTEGER>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_8lu2lH7YEeSOL5kCsWyMsg</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_N2uLUH7bEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T14:07:48.920+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="cde">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8lu2lX7YEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-DATE THE-VALUE="2014-12-09T00:00:00.000+01:00">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-DATE-REF>_J4qFMH7ZEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-DATE-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-DATE>
+            <ATTRIBUTE-VALUE-INTEGER THE-VALUE="4">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-INTEGER-REF>_MdFw0H7ZEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-INTEGER-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-INTEGER>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_8lu2lH7YEeSOL5kCsWyMsg</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_8lvdoH7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8lu2l37YEeSOL5kCsWyMsg</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_8lu2ln7YEeSOL5kCsWyMsg</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_8lvdon7YEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T13:51:37.208+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_8lu2mH7YEeSOL5kCsWyMsg</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+            <SPEC-HIERARCHY IDENTIFIER="_N24jYH7bEeSOL5kCsWyMsg" LAST-CHANGE="2014-12-08T14:07:48.921+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_N2uLUH7bEeSOL5kCsWyMsg</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_8lvdoH7YEeSOL5kCsWyMsg">
+            <configuration:columns>
+              <configuration:Column label="Description" width="250"/>
+              <configuration:Column label="theDate" width="50"/>
+              <configuration:Column label="theInt"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/xhtml_with_defaultValues.reqif b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/xhtml_with_defaultValues.reqif
new file mode 100644
index 0000000..cb2f647
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.test/src/org/eclipse/rmf/reqif10/search/testdata/xhtml_with_defaultValues.reqif
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="769accad-0e26-41d2-b336-ce59fba43b1b">
+      <COMMENT>Created by: iw</COMMENT>
+      <CREATION-TIME>2014-12-04T17:09:36.070+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_8Q8OY3vPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+        <DATATYPE-DEFINITION-XHTML IDENTIFIER="_9FAIkHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:39.734+01:00" LONG-NAME="T_Xhtml"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_8Q8OZHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8Q8OZXvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8Q8OY3vPEeSShJpFBALhDQ</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            
+            
+            <ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_-wMfEHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:51.233+01:00" LONG-NAME="xhtml_content">
+              <TYPE>
+                <DATATYPE-DEFINITION-XHTML-REF>_9FAIkHvPEeSShJpFBALhDQ</DATATYPE-DEFINITION-XHTML-REF>
+              </TYPE>
+
+			  
+			  
+              <DEFAULT-VALUE>
+                <ATTRIBUTE-VALUE-XHTML>
+                  <DEFINITION>
+                    <ATTRIBUTE-DEFINITION-XHTML-REF>_-wMfEHvPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-XHTML-REF>
+                  </DEFINITION>
+                  <THE-VALUE>
+                    <xhtml:div><xhtml:p style="text-align: left">hello</xhtml:p><xhtml:p style=" text-align: left">world</xhtml:p></xhtml:div>
+                  </THE-VALUE>
+                </ATTRIBUTE-VALUE-XHTML>
+              </DEFAULT-VALUE>			  
+			  
+			  
+			  
+            </ATTRIBUTE-DEFINITION-XHTML>
+                        
+            
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPECIFICATION-TYPE IDENTIFIER="_8Q8OZnvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_8Q8OZ3vPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_8Q8OY3vPEeSShJpFBALhDQ</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="_8Q8OaHvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:10:53.129+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Start editing here.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8Q8OZXvPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-XHTML>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-XHTML-REF>_-wMfEHvPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-XHTML-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-XHTML>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_8Q8OZHvPEeSShJpFBALhDQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_8Q8OanvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_8Q8OZ3vPEeSShJpFBALhDQ</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_8Q8OZnvPEeSShJpFBALhDQ</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_8Q81cXvPEeSShJpFBALhDQ" LAST-CHANGE="2014-12-04T17:09:36.070+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_8Q8OaHvPEeSShJpFBALhDQ</SPEC-OBJECT-REF>
+              </OBJECT>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_8Q8OanvPEeSShJpFBALhDQ">
+            <configuration:columns>
+              <configuration:Column label="Description" width="300"/>
+              <configuration:Column label="xhtml_content"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+        <configuration:presentationConfigurations>
+          <configuration:ProrPresentationConfigurations/>
+        </configuration:presentationConfigurations>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.reqif10.search.ui/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.search.ui/META-INF/MANIFEST.MF
index 9eba1ac..8fcbaad 100644
--- a/org.eclipse.rmf.reqif10.search.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.search.ui/META-INF/MANIFEST.MF
@@ -21,5 +21,8 @@
  org.eclipse.rmf.reqif10.edit,

  org.eclipse.jface.databinding,

  org.eclipse.core.databinding.property,

- org.eclipse.rmf.reqif10.xhtml.edit

+ org.eclipse.rmf.reqif10.xhtml.edit,

+ com.google.guava,

+ org.eclipse.help,

+ org.eclipse.core.resources

 Bundle-ActivationPolicy: lazy

diff --git a/org.eclipse.rmf.reqif10.search.ui/build.properties b/org.eclipse.rmf.reqif10.search.ui/build.properties
index 15f69b6..b30ee3a 100644
--- a/org.eclipse.rmf.reqif10.search.ui/build.properties
+++ b/org.eclipse.rmf.reqif10.search.ui/build.properties
@@ -7,7 +7,8 @@
                about.html,\

                epl-v10.html,\

                notice.html,\

-               icons/

+               icons/,\

+               help-contexts.xml

 jars.compile.order = .

 source.. = src/

 output.. = bin/

diff --git a/org.eclipse.rmf.reqif10.search.ui/help-contexts.xml b/org.eclipse.rmf.reqif10.search.ui/help-contexts.xml
new file mode 100644
index 0000000..a80496b
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/help-contexts.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contexts>
+   <context id="reqifSearchHelp" title="ReqIF Search">
+      <description>Allows you to search the active ReqIF file.  Add as many criteria as you like.  Upon search, the result will be shown in the Search View.  See the Handbook for more details.
+
+Please consult the Handbook for more information.</description>
+      <topic href="../com.formalmind.handbook/sec-search.html" label="Details on Search (right-click to open in new window)"/>
+   </context>
+</contexts>
diff --git a/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Next_Result.png b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Next_Result.png
new file mode 100644
index 0000000..33a59dc
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Next_Result.png
Binary files differ
diff --git a/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Prev_Result.png b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Prev_Result.png
new file mode 100644
index 0000000..66278e7
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Prev_Result.png
Binary files differ
diff --git a/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Result.xcf b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Result.xcf
new file mode 100644
index 0000000..0397cb6
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/icons/full/obj16/Result.xcf
Binary files differ
diff --git a/org.eclipse.rmf.reqif10.search.ui/plugin.properties b/org.eclipse.rmf.reqif10.search.ui/plugin.properties
index 399ee84..5f64683 100644
--- a/org.eclipse.rmf.reqif10.search.ui/plugin.properties
+++ b/org.eclipse.rmf.reqif10.search.ui/plugin.properties
@@ -4,4 +4,4 @@
 providerName = Eclipse Modeling Project

 

 _UI_HorizontalOrientation_label = Horizontal orientation

-_UI_VerticalOrientation_label = Vertical orientation
\ No newline at end of file
+_UI_VerticalOrientation_label = Vertical orientation

diff --git a/org.eclipse.rmf.reqif10.search.ui/plugin.xml b/org.eclipse.rmf.reqif10.search.ui/plugin.xml
index ab01e37..af7e37c 100644
--- a/org.eclipse.rmf.reqif10.search.ui/plugin.xml
+++ b/org.eclipse.rmf.reqif10.search.ui/plugin.xml
@@ -7,6 +7,40 @@
 <plugin>

 

    <extension

+         point="org.eclipse.ui.editorActions">

+      <editorContribution

+            id="org.eclipse.rmf.reqif10.search.ui.SpecificationEditorSearchNavigation"

+            targetID="org.eclipse.rmf.reqif10.pror.SpecificationEditor">

+         <action

+               class="org.eclipse.rmf.reqif10.search.ui.ResultNavigator"

+               enablesFor="999999"

+               icon="icons/full/obj16/Next_Result.png"

+               id="org.eclipse.rmf.reqif10.search.next"

+               label="Next Search Result"

+               menubarPath="org.eclipse.rmf.reqif10MenuID/additions"

+               style="push"

+               toolbarPath="additions">

+            <class

+                  class="org.eclipse.rmf.reqif10.search.ui.ResultNavigator">

+            </class>

+         </action>

+         <action

+               class="org.eclipse.rmf.reqif10.search.ui.ResultNavigator"

+               enablesFor="999999"

+               icon="icons/full/obj16/Prev_Result.png"

+               id="org.eclipse.rmf.reqif10.search.prev"

+               label="Previous Search Result"

+               menubarPath="org.eclipse.rmf.reqif10MenuID/additions"

+               style="push"

+               toolbarPath="additions">

+            <class

+                  class="org.eclipse.rmf.reqif10.search.ui.ResultNavigator">

+            </class>

+         </action>

+      </editorContribution>

+   </extension>

+

+   <extension

          point="org.eclipse.search.searchResultViewPages">

       <viewPage

             class="org.eclipse.rmf.reqif10.search.ui.ReqIFSearchResultPage"

@@ -20,9 +54,25 @@
             class="org.eclipse.rmf.reqif10.search.ui.ReqIFSearchPage"

             icon="icons/full/obj16/ReqIf.png"

             id="org.eclipse.rmf.reqif10.search.ui.page.reqif"

-            label="ReqIF"

-            showScopeSection="true">

+            label="ReqIF Search (Raw)"

+            showScopeSection="true"

+            tabPosition="0">

+      </page>

+      <page

+            class="org.eclipse.rmf.reqif10.search.filter.ui.ReqIFSearchPage"

+            icon="icons/full/obj16/ReqIf.png"

+            id="org.eclipse.rmf.reqif10.search.filter.ui.page"

+            label="ReqIF Search"

+            searchViewHelpContextId="reqifSearchHelp"

+            showScopeSection="false"

+            tabPosition="0">

       </page>

    </extension>

-

+   <extension

+         point="org.eclipse.help.contexts">

+      <contexts

+            file="help-contexts.xml"

+            plugin="org.eclipse.rmf.reqif10.search.ui">

+      </contexts>

+   </extension>

 </plugin>

diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControl.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControl.java
new file mode 100644
index 0000000..7c66509
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControl.java
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
+import org.eclipse.rmf.reqif10.AttributeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
+import org.eclipse.rmf.reqif10.AttributeDefinitionReal;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
+import org.eclipse.rmf.reqif10.search.filter.BoolFilter;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.EnumFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.Control;
+
+/**
+ * Represents the actual {@link Control} that holds the settings for the
+ * contained filter. The infrastructure manages the operator.
+ * 
+ * Also provides factory methods for building {@link FilterControl} instances.
+ * 
+ * @author jastram
+ */
+public abstract class FilterControl extends Composite {
+
+	protected IFilter templateFilter;
+	protected Object attribute;
+
+	private Combo operatorControl;
+
+	/**
+	 * New {@link FilterControl} for the given {@link #attribute}, which can be
+	 * an internal attribute or an {@link AttributeDefinition}.
+	 */
+	public FilterControl(FilterPanel parent, AttributeDefinition attribute) {
+		super(parent, SWT.FLAT);
+		this.attribute = attribute;
+		init();
+	}
+
+	public FilterControl(FilterPanel parent, InternalAttribute attribute) {
+		super(parent, SWT.FLAT);
+		this.attribute = attribute;
+		init();
+	}
+
+	public FilterControl(
+			FilterPanel parent,
+			org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter.InternalAttribute attribute) {
+		super(parent, SWT.FLAT);
+		this.attribute = attribute;
+		init();
+	}
+
+	/**
+	 * New {@link FilterControl} for the given template {@link IFilter}.
+	 */
+	public FilterControl(FilterPanel parent, IFilter template) {
+		super(parent, SWT.FLAT);
+		this.templateFilter = template;
+		this.attribute = template.getAttribute();
+		init();
+	}
+
+
+
+	/**
+	 * Returns the operator selected in the GUI, never null.
+	 * 
+	 * @return
+	 */
+	protected final Operator getOperator() {
+		return getOperators().get(operatorControl.getSelectionIndex());
+	}
+
+	/**
+	 * Typical implementation:
+	 * 
+	 * <pre>
+	 * return ABCFilter.SUPPORTED_OPERATORS.asList();
+	 * </pre>
+	 */
+	protected abstract List<Operator> getOperators();
+
+	/**
+	 * Called when the operator changes. As different operators require
+	 * different numbers of values, the GUI may need to be adapted accordingly.
+	 * 
+	 * If initialize is true, the controls should be initialized from the
+	 * template.
+	 */
+	protected abstract void updateValueControls(boolean initialize);
+
+	/**
+	 * Constructs a Filter object from the current configuration of the Control.
+	 * 
+	 * @return the {@link IFilter} object.
+	 */
+	abstract public IFilter getFilter();
+
+	private void init() {
+		if (attribute == null) throw new NullPointerException();
+		setLayout(new GridLayout(3, false));
+		createOperators();
+		updateValueControls(templateFilter != null);
+	}
+
+	private void createOperators() {
+		operatorControl = new Combo(this, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		GridData layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+		operatorControl.setLayoutData(layoutData);
+		for (Operator operator : getOperators()) {
+			operatorControl.add(operator.toLocaleString());
+		}
+		operatorControl.select(0);
+		if (templateFilter != null) {
+			operatorControl.select(getOperators().indexOf(
+					templateFilter.getOperator()));
+		}
+
+		operatorControl.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				updateValueControls(false);
+				layout(true);
+			}
+		});
+	}
+
+	// //////////////////////////////////////////////////////////////////////////
+
+	/**
+	 * This factory instantiates the correct FilterControl for a given filter.
+	 */
+	public static FilterControl createFilterControl(FilterPanel parent,
+			IFilter filter) {
+		if (filter instanceof AbstractTextFilter)
+			return new FilterControlString(parent, (AbstractTextFilter) filter);
+		if (filter instanceof DateFilter)
+			return new FilterControlDate(parent, (DateFilter) filter);
+		if (filter instanceof NumberFilter)
+			return new FilterControlNumber(parent, (NumberFilter) filter);
+		if (filter instanceof BoolFilter)
+			return new FilterControlBoolean(parent, (BoolFilter) filter);
+		if (filter instanceof EnumFilter)
+			return new FilterControlEnum(parent, (EnumFilter) filter);
+
+		throw new IllegalArgumentException("Don't know how to create: "
+				+ filter);
+	}
+
+	/**
+	 * This factory instantiates the correct FilterControl for a given filter.
+	 */
+	public static FilterControl createFilterControl(FilterPanel parent,
+			AbstractTextFilter.InternalAttribute internalTextAttribute) {
+		return new FilterControlString(parent, internalTextAttribute);
+	}
+
+	/**
+	 * This factory instantiates the correct FilterControl for a given filter.
+	 */
+	public static FilterControl createFilterControl(FilterPanel parent,
+			DateFilter.InternalAttribute internalDateAttribute) {
+		return new FilterControlDate(parent, internalDateAttribute);
+	}
+
+	/**
+	 * This factory instantiates the correct FilterControl for a given filter.
+	 */
+	public static FilterControl createFilterControl(FilterPanel parent,
+			AttributeDefinition attribute) {
+		if (attribute instanceof AttributeDefinitionString
+				|| attribute instanceof AttributeDefinitionXHTML) {
+			return new FilterControlString(parent, attribute);
+		} else if (attribute instanceof AttributeDefinitionInteger
+				|| attribute instanceof AttributeDefinitionReal) {
+			return new FilterControlNumber(parent, attribute);
+		} else if (attribute instanceof AttributeDefinitionDate) {
+			return new FilterControlDate(parent,
+					(AttributeDefinitionDate) attribute);
+		} else if (attribute instanceof AttributeDefinitionBoolean) {
+			return new FilterControlBoolean(parent,
+					(AttributeDefinitionBoolean) attribute);
+		} else if (attribute instanceof AttributeDefinitionEnumeration) {
+			return new FilterControlEnum(parent,
+					(AttributeDefinitionEnumeration) attribute);
+		}
+		throw new IllegalArgumentException("Don't know how to create (yet): "
+				+ attribute);
+	}
+
+	/**
+	 * This method retrieves a value from the Plugin.
+	 */
+	public static String getString(String key) {
+		// Note that ResourceBundle has nothing to do with Eclipse. But it's a
+		// convenient
+		// means of accessing plugin.properties, which we need anyway.
+		return ResourceBundle.getBundle("plugin").getString(key);
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlBoolean.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlBoolean.java
new file mode 100644
index 0000000..654d579
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlBoolean.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.search.filter.BoolFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+
+/**
+ * Used for Boolean
+ * 
+ * @author jastram
+ */
+public class FilterControlBoolean extends FilterControl {
+	
+	private Combo valueControl;
+
+	public FilterControlBoolean(FilterPanel parent,
+			AttributeDefinitionBoolean attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlBoolean(FilterPanel parent, BoolFilter template) {
+		super(parent, template);
+	}
+
+	protected void updateValueControls(boolean initialize) {
+		if (getOperator() == Operator.IS_SET || getOperator() == Operator.IS_NOT_SET) {
+			showValueControl(false);			
+		} else {
+			showValueControl(true);
+			if (initialize) {
+				Boolean defaultValue = (Boolean) templateFilter.getFilterValue1();
+				valueControl.select(Boolean.TRUE.equals(defaultValue) ? 1 : 0);
+			}
+		}		
+		layout();
+	}
+
+	private void showValueControl(boolean show) {
+		if (show && valueControl == null) {
+			valueControl = new Combo(this, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+			valueControl.add("FALSE"); // index: 0
+			valueControl.add("TRUE");  // index: 1
+			valueControl.select(0);
+			GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+			valueControl.setLayoutData(layoutData);			
+		} else if (!show && valueControl != null) {
+			valueControl.dispose();
+			valueControl = null;
+		}
+	}
+
+	public IFilter getFilter() {
+		Boolean value = valueControl == null ? null : new Boolean(valueControl.getSelectionIndex() == 1);
+		return new BoolFilter(getOperator(), value, (AttributeDefinitionBoolean) attribute);
+	}
+
+	@Override
+	protected List<Operator> getOperators() {
+		return BoolFilter.SUPPORTED_OPERATORS.asList();
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlDate.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlDate.java
new file mode 100644
index 0000000..d16e8a3
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlDate.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.DateTime;
+
+public class FilterControlDate extends FilterControl {
+
+	private DateTime control[];
+
+	public FilterControlDate(FilterPanel parent, DateFilter.InternalAttribute attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlDate(FilterPanel parent,
+			AttributeDefinitionDate attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlDate(FilterPanel parent, DateFilter template) {
+		super(parent, template);		
+	}
+
+	@Override
+	protected List<Operator> getOperators() {
+		return DateFilter.SUPPORTED_OPERATORS.asList();
+	}
+
+	@Override
+	protected void updateValueControls(boolean initialize) {
+		if (getOperator() == Operator.IS_SET
+				|| getOperator() == Operator.IS_NOT_SET) {
+			showControl(0, false);
+			showControl(1, false);
+		}
+		else if (getOperator() == Operator.BETWEEN) {
+			showControl(0, true);
+			showControl(1, true);
+		} else {
+			showControl(0, true);
+			showControl(1, false);
+		}
+		
+		if (initialize) {
+			if (control[0] != null) {
+				GregorianCalendar cal = (GregorianCalendar) templateFilter.getFilterValue1();
+				control[0].setDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
+			}
+			if (control[1] != null) {
+				GregorianCalendar cal = (GregorianCalendar) templateFilter.getFilterValue2();
+				control[1].setDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
+			}
+		}
+
+		layout();
+	}
+
+	private void showControl(int controlId, boolean show) {
+		 if (control == null) control = new DateTime[2];
+		 
+		if (show && control[controlId] == null) {
+			control[controlId] = new DateTime(this, SWT.DATE | SWT.DROP_DOWN | SWT.BORDER);
+			GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+			control[controlId].setLayoutData(layoutData);
+		} 
+		if (! show && control[controlId] != null) {
+			control[controlId].dispose();
+			control[controlId] = null;
+		}
+	}
+
+	@Override
+	public IFilter getFilter() {
+		GregorianCalendar value1 = control[0] == null ? null
+				: new GregorianCalendar(control[0].getYear(),
+						control[0].getMonth(), control[0].getDay());
+		GregorianCalendar value2 = control[1] == null ? null
+				: new GregorianCalendar(control[1].getYear(),
+						control[1].getMonth(), control[1].getDay());
+		if (attribute instanceof InternalAttribute) {
+			return new DateFilter(getOperator(), value1, value2,
+					(InternalAttribute) attribute);
+		} else {
+			return new DateFilter(getOperator(), value1, value2,
+					(AttributeDefinitionDate) attribute);
+		}
+	}
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlEnum.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlEnum.java
new file mode 100644
index 0000000..d136e55
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlEnum.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.rmf.reqif10.AttributeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.pror.editor.presentation.EnumSelector;
+import org.eclipse.rmf.reqif10.search.filter.EnumFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Used for plain text and XHTML
+ * 
+ * @author jastram
+ */
+public class FilterControlEnum extends FilterControl {
+	
+	private Button valueControl;
+	private Collection<EnumValue> items;
+
+	public FilterControlEnum(FilterPanel parent,
+			AttributeDefinitionEnumeration attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlEnum(FilterPanel parent, EnumFilter template) {
+		super(parent, template);
+	}
+
+	@Override
+	protected List<Operator> getOperators() {
+		return EnumFilter.SUPPORTED_OPERATORS.asList();
+	}
+
+	@Override
+	protected void updateValueControls(boolean initialize) {
+		if (getOperator() == Operator.IS_SET
+				|| getOperator() == Operator.IS_NOT_SET) {
+			showControl(false);
+		} else {
+			showControl(true);
+		}
+		if (initialize) {
+			if (valueControl != null) {
+				updateItems(((EnumFilter)templateFilter).getFilterValue1());
+			}
+		}
+	}
+
+	private void showControl(boolean show) {
+		if (show && valueControl == null) {
+			if (items == null) items = new ArrayList<EnumValue>();
+
+			valueControl = new Button(this, SWT.PUSH | SWT.FLAT | SWT.WRAP);
+			GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+			layoutData.widthHint = 200;
+			valueControl.setLayoutData(layoutData);
+			valueControl.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					popupSelector(valueControl);
+				}
+			});
+		}
+		if (!show && valueControl != null) {
+			valueControl.dispose();
+			valueControl = null;
+			items = null;
+		}
+	}
+
+	protected void popupSelector(Control control) {
+		EList<EnumValue> specifiedValues = ((AttributeDefinitionEnumeration) attribute)
+				.getType().getSpecifiedValues();
+		Shell shell = EnumSelector.createShell(control);
+		EnumSelector selector = new EnumSelector(specifiedValues, items, shell,
+				SWT.BORDER);
+		int status = selector.showEnumSelector(shell);
+		if (status == SWT.OK) {
+			updateItems(selector.getItems());
+		}
+	}
+
+	private void updateItems(Collection<EnumValue> items) {
+		EList<EnumValue> specifiedValues = ((AttributeDefinitionEnumeration) attribute)
+				.getType().getSpecifiedValues();
+		this.items = items;
+		StringBuilder sb = new StringBuilder();
+		for (Iterator<EnumValue> i = items.iterator(); i.hasNext();) {
+			EnumValue value = i.next();
+
+			// In case items have been removed
+			if (! specifiedValues.contains(value)) continue;
+
+			String label = value.getLongName() != null ? value.getLongName() : value.getIdentifier(); 
+			sb.append(label);
+			if (i.hasNext()) sb.append(", ");
+		}
+		valueControl.setText(sb.toString());
+		layout();
+		getParent().layout();
+		getParent().getParent().layout();
+	}
+
+	public IFilter getFilter() {
+		return new EnumFilter(getOperator(), items,
+				(AttributeDefinitionEnumeration) attribute);
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlNumber.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlNumber.java
new file mode 100644
index 0000000..332b6b9
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlNumber.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionReal;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * This control handles Integers and Reals.
+
+ * @author jastram
+ */
+public class FilterControlNumber extends FilterControl {
+
+	private NumberControl control[];
+
+	public FilterControlNumber(FilterPanel parent,
+			AttributeDefinition attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlNumber(FilterPanel parent, NumberFilter template) {
+		super(parent, template);
+	}
+	
+		
+	@Override
+	protected List<Operator> getOperators() {
+		return NumberFilter.SUPPORTED_OPERATORS.asList();	}
+
+	@Override
+	protected void updateValueControls(boolean initialize) {
+		if (getOperator() == Operator.IS_SET
+				|| getOperator() == Operator.IS_NOT_SET) {
+			showControl(0, false);
+			showControl(1, false);
+		}
+		else if (getOperator() == Operator.BETWEEN) {
+			showControl(0, true);
+			showControl(1, true);
+		} else {
+			showControl(0, true);
+			showControl(1, false);
+		}
+		
+		if (initialize) {
+			if (templateFilter.getFilterValue1() != null) {
+				control[0].setValue((Number) templateFilter.getFilterValue1());
+			}
+			if (templateFilter.getFilterValue2() != null) {
+				control[1].setValue((Number) templateFilter.getFilterValue2());
+			}
+		}
+
+		layout();
+	}
+	
+	private void showControl(int controlId, boolean show) {
+		 if (control == null) control = new NumberControl[2];
+		 
+		if (show && control[controlId] == null) {
+			control[controlId] = new NumberControl(this, attribute instanceof AttributeDefinitionReal);
+			GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+			control[controlId].getControl().setLayoutData(layoutData);
+		} 
+		if (! show && control[controlId] != null) {
+			control[controlId].getControl().dispose();
+			control[controlId] = null;
+		}
+	}
+
+	@Override
+	public IFilter getFilter() {
+		Number value1 = control[0] == null ? null : control[0].getNumber();
+		Number value2 = control[1] == null ? null : control[1].getNumber();
+		return new NumberFilter(getOperator(), value1, value2, (AttributeDefinition)attribute);
+	}
+}
+
+/**
+ * We need to build our own control, rather than using {@link Spinner}, because
+ * Spinner is a total hack with far too many limitations :-(
+ * 
+ * @author jastram
+ */
+class NumberControl {
+
+	private boolean isReal;
+	private Text text;
+
+	public NumberControl(Composite parent, boolean isReal) {
+		text = new Text(parent, SWT.BORDER | SWT.FILL);
+		this.isReal = isReal;
+		text.setText("0");
+		addValidator();
+	}
+	
+	public Text getControl() {
+		return text;
+	}
+
+	private void addValidator() {
+		text.addVerifyListener(new VerifyListener() {
+			@Override
+			public void verifyText(VerifyEvent e) {
+				final String oldS = text.getText();
+				final String newS = oldS.substring(0, e.start) + e.text
+						+ oldS.substring(e.end);
+				
+				// We allow an empty String
+				if (newS.length() == 0) return;
+
+				try {
+					if (isReal) {
+						new Double(newS);
+					} else {
+						new BigInteger(newS);
+					}
+				} catch (final NumberFormatException numberFormatException) {
+					// value is not decimal
+					e.doit = false;
+				}
+			}
+		});
+	}
+
+	public Number getNumber() {
+		if (text.getText().length() == 0 ) text.setText("0");
+		return isReal ? new Double(text.getText()) : new BigInteger(text.getText());		
+	}
+
+	public void setValue(Number value) {
+		text.setText(value.toString());
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlString.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlString.java
new file mode 100644
index 0000000..ea0ff54
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterControlString.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter.InternalAttribute;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.eclipse.rmf.reqif10.search.filter.XhtmlFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Used for plain text and XHTML
+ * 
+ * @author jastram
+ */
+public class FilterControlString extends FilterControl {
+
+	private Text text;
+	private Button caseSensitive;
+
+	public FilterControlString(FilterPanel parent, StringFilter.InternalAttribute attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlString(FilterPanel parent,
+			AttributeDefinition attribute) {
+		super(parent, attribute);
+	}
+
+	public FilterControlString(FilterPanel parent, AbstractTextFilter template) {
+		super(parent, template);
+	}
+
+	@Override
+	protected List<Operator> getOperators() {
+		if (attribute instanceof AttributeDefinitionXHTML) {
+			return XhtmlFilter.SUPPORTED_OPERATORS.asList();
+		} else {
+			return StringFilter.SUPPORTED_OPERATORS.asList();
+		}
+	}
+
+	@Override
+	protected void updateValueControls(boolean initialize) {
+		if (getOperator() == Operator.IS_SET
+				|| getOperator() == Operator.IS_NOT_SET) {
+			showControl(false);
+		} else {
+			showControl(true);
+		}
+		if (initialize) {
+			if (text != null) {
+				caseSensitive.setSelection(((AbstractTextFilter) templateFilter)
+						.isCaseSensitive());
+				text.setText((String) templateFilter.getFilterValue1());
+	
+			}
+		}
+	}
+
+	private void showControl(boolean show) {
+		if (show && text == null) {
+			caseSensitive = new Button(this, SWT.CHECK);
+			caseSensitive.setText("Aa");
+			caseSensitive.setToolTipText("Case Sensitive");
+			GridData layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+			caseSensitive.setLayoutData(layoutData);
+			
+			text = new Text(this, SWT.SINGLE | SWT.BORDER | SWT.FILL);
+			layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+			text.setLayoutData(layoutData);
+		}
+		if (!show && text != null) {
+			text.dispose();
+			text = null;
+			caseSensitive.dispose();
+			caseSensitive = null;
+		}
+	}
+
+	public IFilter getFilter() {
+		String value = text == null ? null : text.getText();
+		boolean cv = caseSensitive == null ? false : caseSensitive.getSelection();
+		
+		if (attribute instanceof InternalAttribute) {
+			return new StringFilter(getOperator(), value, (InternalAttribute) attribute, cv);
+		} else if (attribute instanceof AttributeDefinitionString) {
+			return new StringFilter(getOperator(), value, (AttributeDefinitionString) attribute, cv);
+		} else if (attribute instanceof AttributeDefinitionXHTML) {
+			return new XhtmlFilter(getOperator(), value, (AttributeDefinitionXHTML) attribute, cv);
+		} else {
+			throw new IllegalStateException("Can't handle: " + attribute);
+		}
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterPanel.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterPanel.java
new file mode 100644
index 0000000..9a5da1f
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterPanel.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.SpecType;
+import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
+import org.eclipse.rmf.reqif10.search.filter.DateFilter;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.StringFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * The {@link FilterPanel} initially only offers the selection of Attributes.
+ * Upon selecting one, the fitting criteria are offered by instantiating the
+ * correct {@link FilterControl}.
+ * 
+ * @author jastram
+ */
+public class FilterPanel extends Composite {
+
+	private ReqIF reqif;
+	private ComboViewer attributeCombo;
+
+	/**
+	 * This constructor creates an empty {@link FilterPanel}.
+	 */
+	public FilterPanel(final Composite parent, ReqIF reqif) {
+		super(parent, SWT.BORDER);
+		this.reqif = reqif;
+		setLayout(new GridLayout(3, false));
+
+		createCloseButton(parent);
+		createAttributeCombo();
+	}
+
+	/**
+	 * This constructor uses an existing {@link IFilter} to populate the panel.
+	 */
+	public FilterPanel(Composite parent, ReqIF reqif, IFilter filter) {
+		this(parent, reqif);
+		
+		// see whether the attribute of the filter still exists
+		Object[] input = ((Object[])attributeCombo.getInput());
+		int attributeIndex = Arrays.asList(input).indexOf(filter.getAttribute());
+		if (attributeIndex == -1) return;
+
+		attributeCombo.getCombo().select(attributeIndex);
+		FilterControl filterControl = FilterControl.createFilterControl(this, filter);
+		filterControl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+		layout();
+		getParent().pack();
+	}
+
+	/**
+	 * The close button disposes the {@link FilterPanel} and repacks the parent.
+	 * @param parent
+	 */
+	private void createCloseButton(final Composite parent) {
+		Label close = new Label(this, SWT.FLAT);
+		close.setText("\u2716");
+		close.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+		close.addMouseListener(new MouseAdapter() {
+			@Override
+			public void mouseUp(MouseEvent e) {
+				dispose();
+				parent.pack();
+			}
+		});
+	}
+
+	/**
+	 * Create the combo that contains both internal attributes and the model's
+	 * attributes. Upon selection change, the corresponding
+	 * {@link FilterControl} is built.
+	 */
+	private void createAttributeCombo() {
+		attributeCombo = new ComboViewer(this, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		GridData layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
+		layoutData.widthHint = 180;
+		attributeCombo.getControl().setLayoutData(layoutData);
+		attributeCombo.setLabelProvider(new AttributeLabelProvider());
+		attributeCombo.setContentProvider(new ArrayContentProvider());
+		attributeCombo.setInput(createAttributeInput().toArray());
+
+		attributeCombo
+				.addSelectionChangedListener(new ISelectionChangedListener() {
+					@Override
+					public void selectionChanged(SelectionChangedEvent event) {
+						if (!event.getSelection().isEmpty()) {
+							Object selectedAttr = ((IStructuredSelection) event
+									.getSelection()).getFirstElement();
+							attributeChanged(selectedAttr);
+						}
+					}
+				});
+	}
+
+	/**
+	 * Create a {@link List} that acts as the input for {@link #attributeCombo}.
+	 * The list is first sorted by {@link SpecType} and then sorted by
+	 * {@link AttributeDefinition}.
+	 */
+	private List<?> createAttributeInput() {
+		List<? super Object> list = new ArrayList<Object>();
+
+		// Internal Attributes
+		list.addAll(Arrays.asList(StringFilter.InternalAttribute.values()));
+		list.addAll(Arrays.asList(DateFilter.InternalAttribute.values()));
+		
+		// All Attributes in the model
+		Map<String, AttributeDefinition> attributes = new HashMap<String, AttributeDefinition>();
+		for (SpecType specType : reqif.getCoreContent().getSpecTypes()) {
+			for (AttributeDefinition ad : specType.getSpecAttributes()) {
+				attributes.put(specType.getLongName() + "." + ad.getLongName() + "." + ad.getIdentifier(), ad);
+			}
+		}
+
+		// Add them in alphabetical order.
+		List<String> sortedKeys = new ArrayList<String>(attributes.keySet());
+		Collections.sort(sortedKeys);
+		for (String key : sortedKeys) {
+			list.add(attributes.get(key));			
+		}
+
+		return list;
+	}
+
+	/**
+	 * Reacts to attribute changes by creating the correct {@link FilterControl}
+	 * . If there already is a {@link FilterControl}, it is discarded.
+	 */
+	protected void attributeChanged(Object attribute) {
+		if (getFilterControl() != null) getFilterControl().dispose();
+		
+		FilterControl filterControl;
+		if (attribute instanceof AbstractTextFilter.InternalAttribute) {
+			filterControl = FilterControl.createFilterControl(this,
+					(AbstractTextFilter.InternalAttribute) attribute);
+		} else if (attribute instanceof DateFilter.InternalAttribute) {
+			filterControl = FilterControl.createFilterControl(this,
+					(DateFilter.InternalAttribute) attribute);
+		} else if (attribute instanceof AttributeDefinition) {
+			filterControl = FilterControl.createFilterControl(this,
+					(AttributeDefinition) attribute);
+		} else {
+			MessageDialog.openError(getShell(), "Invalid Selection",
+					"Cannot handle (yet): " + attribute);
+			filterControl = null;
+		}
+
+		filterControl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+				false));
+		layout();
+		getParent().pack();
+	}
+
+	/**
+	 * @return the current FilterControl, or null of not set.
+	 */
+	private FilterControl getFilterControl() {
+		if (getChildren().length != 3) return null;
+		Control control = getChildren()[2];
+		if (! (control instanceof FilterControl)) return null;
+		return (FilterControl) control;
+	}
+
+	/**
+	 * @return the {@link IFilter} representing the state of the
+	 * {@link FilterPanel}, or null if not set or incorrectly configured.
+	 */
+	public IFilter getFilter() {
+		return getFilterControl() == null ? null : getFilterControl().getFilter();
+	}
+
+	/**
+	 * To handle objects in the Attribute dropdown, instead of just Strings..
+	 */
+	class AttributeLabelProvider extends LabelProvider {
+		@Override
+		public String getText(Object element) {
+			if (element instanceof AttributeDefinition) {
+				AttributeDefinition ad = (AttributeDefinition)element;
+				SpecType specType = (SpecType) ad.eContainer();
+				return ad.getLongName() + " (" + specType.getLongName() + ")";
+			}
+			return element.toString();
+		}
+	}
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterSearchQuery.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterSearchQuery.java
new file mode 100644
index 0000000..95e20bf
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/FilterSearchQuery.java
@@ -0,0 +1,102 @@
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.SpecHierarchy;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.ui.UsageSearchResult;
+import org.eclipse.search.ui.ISearchQuery;
+import org.eclipse.search.ui.ISearchResult;
+
+public class FilterSearchQuery implements ISearchQuery {
+	private IFilter filter;
+	private ReqIF reqif;
+	private UsageSearchResult usageSearchResult;
+
+	public FilterSearchQuery(ReqIF reqif, IFilter filter) {
+		this.filter = filter;
+		this.reqif = reqif;
+	}
+
+	@Override
+	public IStatus run(IProgressMonitor monitor)
+			throws OperationCanceledException {
+		doRun(monitor);
+		// TODO better status
+		monitor.done();
+		return Status.OK_STATUS;
+	}
+
+	@Override
+	public ISearchResult getSearchResult() {
+		return usageSearchResult;
+	}
+
+	@Override
+	public String getLabel() {
+		return filter != null ? filter.toString() : "ReqIF Search...";
+	}
+
+	@Override
+	public boolean canRunInBackground() {
+		return true;
+	}
+
+	@Override
+	public boolean canRerun() {
+		return true;
+	}
+	
+	private void doRun(IProgressMonitor monitor) {
+		monitor.beginTask("Searching...", IProgressMonitor.UNKNOWN);
+		usageSearchResult = new UsageSearchResult(this);
+		Map<Resource, Collection<EObject>> result = find(monitor);
+		usageSearchResult.getSearchEntries().clear();
+		usageSearchResult.getSearchEntries().putAll(result);
+		monitor.done();
+	}
+
+	private Map<Resource, Collection<EObject>> find(IProgressMonitor monitor) {
+		Map<Resource, Collection<EObject>> result = new HashMap<Resource, Collection<EObject>>();
+		TreeIterator<EObject> iterator = EcoreUtil.getAllContents(reqif, true);
+		while (iterator.hasNext()) {
+			EObject obj = iterator.next();
+			SpecElementWithAttributes specElement = null;
+			if (obj instanceof SpecElementWithAttributes) {
+				specElement = (SpecElementWithAttributes) obj;
+			} else if (obj instanceof SpecHierarchy) {
+				specElement = ((SpecHierarchy)obj).getObject();
+			}
+			
+			if (specElement == null) continue;
+
+			if (filter.match(specElement)) {
+				
+				// First, find the resource
+				Collection<EObject> collection = result.get(reqif.eResource());
+				if (collection == null) {
+					collection = new HashSet<EObject>();
+					result.put(reqif.eResource(), collection);
+				}
+				collection.add(obj);
+			}
+			
+		}
+		return result;
+	}
+
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java
new file mode 100644
index 0000000..56ab863
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/filter/ui/ReqIFSearchPage.java
@@ -0,0 +1,349 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Michael Jastram - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter.ui;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.rmf.reqif10.ReqIF;
+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;
+import org.eclipse.rmf.reqif10.search.filter.IFilter;
+import org.eclipse.rmf.reqif10.search.filter.SimpleCompoundFilter;
+import org.eclipse.rmf.reqif10.search.ui.ReqIFSearchUIPlugin;
+import org.eclipse.rmf.reqif10.search.ui.UsageSearchResult;
+import org.eclipse.search.ui.ISearchPage;
+import org.eclipse.search.ui.ISearchPageContainer;
+import org.eclipse.search.ui.ISearchQuery;
+import org.eclipse.search.ui.ISearchResult;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.search2.internal.ui.SearchView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * The actual search page, which allows the creation of filter criteria. These
+ * are realized as {@link FilterPanel}s.
+ * 
+ * Each {@link FilterPanel} consists of {@link FilterControl}s.
+ * 
+ * @author jastram
+ */
+@SuppressWarnings("restriction")
+public class ReqIFSearchPage extends DialogPage implements ISearchPage {
+
+	/**
+	 * Stores the last search during a session.
+	 */
+	private static Map<ReqIF, SimpleCompoundFilter> lastSearches = new HashMap<ReqIF, SimpleCompoundFilter>();
+
+	/** Must only contains {@link FilterPanel}s! */
+	private Composite pane;
+
+	private Button and;
+	private Button or;
+
+	/** A search always relates to a {@link ReqIF}. */
+	private ReqIF reqif;
+
+	private static IPartListener2 listener;
+
+	@Override
+	public void createControl(Composite parent) {
+		// Setup the Layout
+		parent.setLayout(new GridLayout());
+		setControl(parent);
+
+		// Forbit use without a ReqIF.
+		reqif = getReqifEditor() != null ? getReqifEditor().getReqif() : null;
+		if (reqif == null) {
+			createNoSearchMessage(parent);
+			return;
+		}
+
+		// Buildt the GUI
+		Composite toolbar = createToolbar(parent);
+		createAndButton(toolbar);
+		createOrButton(toolbar);
+		createAddButton(toolbar);
+		createClearButton(toolbar);
+		pane = createPane(parent);
+
+		// Restore previous filters.
+		restoreFilter();
+
+		// The plugin help-id is broken.
+		PlatformUI
+				.getWorkbench()
+				.getHelpSystem()
+				.setHelp(parent,
+						"org.eclipse.rmf.reqif10.search.ui.reqifSearchHelp");
+
+		attachPartListener();
+	}
+
+	@Override
+	public void setVisible(boolean visible) {
+		super.setVisible(visible);
+		// Required, so that the correct help is shown.
+		if (true)
+			pane.setFocus();
+	}
+
+	private void createNoSearchMessage(Composite parent) {
+		Label label = new Label(parent, SWT.NONE);
+		label.setText("Please activate a ReqIF Editor before starting search.");
+		label.setLayoutData(new GridData(GridData.CENTER, SWT.CENTER, true,
+				true));
+	}
+
+	private Composite createToolbar(Composite parent) {
+		Composite toolbar = new Composite(parent, SWT.NONE);
+		toolbar.setLayout(new GridLayout(4, false));
+		toolbar.setLayoutData(new GridData(GridData.FILL, SWT.CENTER, true,
+				false));
+		return toolbar;
+	}
+
+	private void createAndButton(Composite toolbar) {
+		and = new Button(toolbar, SWT.RADIO);
+		and.setText("Match all");
+		and.setSelection(true);
+	}
+
+	private void createOrButton(Composite toolbar) {
+		or = new Button(toolbar, SWT.RADIO);
+		or.setText("Match any");
+	}
+
+	private void createClearButton(Composite toolbar) {
+		Button clear = new Button(toolbar, SWT.PUSH);
+		clear.setText("Clear");
+		clear.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+		clear.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				for (Control control : pane.getChildren()) {
+					control.dispose();
+				}
+				pane.pack();
+			}
+		});
+	}
+
+	private void createAddButton(Composite toolbar) {
+		Button add = new Button(toolbar, SWT.PUSH);
+		add.setText("Add new");
+		add.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));
+		add.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				FilterPanel filterPanel = new FilterPanel(pane, reqif);
+				filterPanel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
+						true, false));
+				pane.pack();
+			}
+		});
+	}
+
+	private Composite createPane(Composite parent) {
+		ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL
+				| SWT.NONE);
+		sc.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
+		sc.setBackground(parent.getBackground());
+		Composite pane = new Composite(sc, SWT.NONE);
+		pane.setLayout(new GridLayout());
+		sc.setContent(pane);
+		sc.setExpandHorizontal(true);
+		return pane;
+	}
+
+	private void restoreFilter() {
+		SimpleCompoundFilter wrapperFilter = lastSearches.get(reqif);
+		if (wrapperFilter == null)
+			return;
+
+		or.setSelection(wrapperFilter.isOrFilter());
+		and.setSelection(!wrapperFilter.isOrFilter());
+
+		for (IFilter filter : wrapperFilter.getFilters()) {
+			FilterPanel filterPanel = new FilterPanel(pane, reqif, filter);
+			filterPanel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+					false));
+		}
+		pane.pack();
+	}
+
+	/**
+	 * Looks for an active ReqIF editor.
+	 * 
+	 * @return the active ReqIF or null if none found.
+	 */
+	private IReqifEditor getReqifEditor() {
+		IEditorPart editor = PlatformUI.getWorkbench()
+				.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+		if (editor instanceof IReqifEditor) {
+			return (IReqifEditor) editor;
+		}
+		return null;
+	}
+
+	@Override
+	public boolean performAction() {
+		SimpleCompoundFilter filter = getFilter();
+
+		// Only search if we have filters.
+		if (filter == null || filter.getFilters().size() == 0)
+			return false;
+
+		// Stores the current query as last query.
+		lastSearches.put(reqif, filter);
+		ISearchQuery query = new FilterSearchQuery(reqif, filter);
+
+		NewSearchUI.runQueryInForeground(new ProgressMonitorDialog(getShell()),
+				query);
+		getSearchView().showSearchResult(query.getSearchResult());
+		return true;
+	}
+
+	// Actual search, as taken from org.eclipse.rmf.reqif10.search.ui.page
+	private SearchView getSearchView() {
+		SearchView searchView = null;
+		try {
+			searchView = (org.eclipse.search2.internal.ui.SearchView) PlatformUI
+					.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+					.showView(NewSearchUI.SEARCH_VIEW_ID);
+		} catch (final PartInitException e) {
+			ReqIFSearchUIPlugin.INSTANCE.log(e);
+		}
+		return searchView;
+	}
+
+	/**
+	 * Saving the last search upon closing.
+	 */
+	@Override
+	public void dispose() {
+		if (getFilter() != null) {
+			lastSearches.put(reqif, getFilter());
+		}
+		super.dispose();
+	}
+
+	/**
+	 * Retrieves the filters from the pane in a {@link SimpleCompoundFilter}.
+	 */
+	private SimpleCompoundFilter getFilter() {
+		if (pane == null)
+			return null;
+		ArrayList<IFilter> filters = new ArrayList<IFilter>();
+		for (Control control : pane.getChildren()) {
+			if (control instanceof FilterPanel) {
+				IFilter filter = ((FilterPanel) control).getFilter();
+				if (filter != null)
+					filters.add(filter);
+			}
+		}
+
+		return new SimpleCompoundFilter(filters, or.getSelection());
+	}
+
+	@Override
+	public void setContainer(ISearchPageContainer container) {
+	}
+
+	/**
+	 * We attach a part listener to close related searches in the Search view.
+	 * There is only one (static) PartListener, which is created lazily.
+	 */
+	private void attachPartListener() {
+		// Don't do anything if it already exists.
+		if (listener != null) return;
+
+		listener = new IPartListener2() {
+			@Override
+			public void partClosed(IWorkbenchPartReference partRef) {
+				IWorkbenchPart part = partRef.getPart(false);
+				if (!(part instanceof IReqifEditor)) {
+					return;
+				}
+
+				ReqIF closingReqif = ((IReqifEditor) part).getReqif();
+
+				ISearchResult searchResult = getSearchView()
+						.getCurrentSearchResult();
+				if (searchResult instanceof UsageSearchResult) {
+					Set<Resource> keys = ((UsageSearchResult) searchResult)
+							.getSearchEntries().keySet();
+					for (Resource resource : keys) {
+						if (resource.getURI().equals(
+								closingReqif.eResource().getURI())) {
+							getSearchView().showEmptySearchPage(partRef.getId());
+							return;
+						}
+					}
+				}
+			}
+
+			@Override
+			public void partVisible(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partOpened(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partInputChanged(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partHidden(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partDeactivated(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partBroughtToTop(IWorkbenchPartReference partRef) {
+			}
+
+			@Override
+			public void partActivated(IWorkbenchPartReference partRef) {
+			}
+		};
+
+		System.out.println("Attaching listener.");
+		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+				.addPartListener(listener);
+
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchPage.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchPage.java
index 0a8d700..89284fe 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchPage.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchPage.java
@@ -41,6 +41,7 @@
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;

 import org.eclipse.jface.operation.IRunnableWithProgress;

 import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.rmf.reqif10.pror.editor.IReqifEditor;

 import org.eclipse.rmf.reqif10.pror.editor.presentation.Reqif10Editor;

 import org.eclipse.rmf.reqif10.search.criteria.Criteria;

 import org.eclipse.rmf.reqif10.search.edit.util.ReqIFEditSearcher;

@@ -175,7 +176,7 @@
 						.getEditorReferences();

 				for (IEditorReference editorReference : editorReferences) {

 					IEditorPart editorPart = editorReference.getEditor(false);

-					if (editorPart instanceof Reqif10Editor) {

+					if (editorPart instanceof IReqifEditor) {

 						try {

 							uriMap.put(EditUIUtil.getURI(editorReference

 									.getEditorInput()),

diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchQuery.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchQuery.java
index c74678d..f9576b4 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchQuery.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchQuery.java
@@ -94,12 +94,12 @@
 

 	@Override

 	public boolean canRerun() {

-		return true;

+		return false;

 	}

 

 	@Override

 	public boolean canRunInBackground() {

-		return true;

+		return false;

 	}

 

 	@Override

diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchResultPage.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchResultPage.java
index 7587be8..07c75de 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchResultPage.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ReqIFSearchResultPage.java
@@ -19,6 +19,7 @@
 

 import org.eclipse.core.runtime.IAdaptable;

 import org.eclipse.emf.common.notify.Adapter;

+import org.eclipse.emf.common.notify.AdapterFactory;

 import org.eclipse.emf.ecore.EObject;

 import org.eclipse.emf.ecore.resource.Resource;

 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

@@ -26,12 +27,19 @@
 import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;

 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;

 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.jface.viewers.DoubleClickEvent;

+import org.eclipse.jface.viewers.IColorProvider;

+import org.eclipse.jface.viewers.IDoubleClickListener;

+import org.eclipse.jface.viewers.IStructuredSelection;

 import org.eclipse.jface.viewers.TableViewer;

 import org.eclipse.jface.viewers.TreeViewer;

 import org.eclipse.jface.viewers.Viewer;

 import org.eclipse.jface.viewers.ViewerFilter;

+import org.eclipse.rmf.reqif10.SpecHierarchy;

+import org.eclipse.rmf.reqif10.Specification;

 import org.eclipse.rmf.reqif10.pror.configuration.provider.ConfigurationItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.pror.editor.propertiesview.ProrPropertySheetPage;

+import org.eclipse.rmf.reqif10.pror.editor.util.ProrEditorUtil;

 import org.eclipse.rmf.reqif10.pror.provider.ReqIF10ItemProviderAdapterFactory;

 import org.eclipse.rmf.reqif10.pror.provider.ReqIFContentItemProvider;

 import org.eclipse.rmf.reqif10.pror.util.ProrUtil;

@@ -39,8 +47,11 @@
 import org.eclipse.search.ui.ISearchResult;

 import org.eclipse.search.ui.ISearchResultPage;

 import org.eclipse.search.ui.ISearchResultViewPart;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.Color;

 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Control;

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

 import org.eclipse.ui.IMemento;

 import org.eclipse.ui.part.Page;

 import org.eclipse.ui.views.properties.IPropertySheetPage;

@@ -61,13 +72,15 @@
 	private TreeViewer treeViewer;

 	private AdapterFactoryLabelProvider labelProvider;

 	private AdapterFactoryContentProvider contentProvider;

-	private Set<Object> objectsFound = new HashSet<Object>();

+	private Set<Object> matchedObjectsWithParents = new HashSet<Object>();

 	private ComposedAdapterFactory adapterFactory;

 	/**

 	 * This is the property sheet page.

 	 */

 	protected ProrPropertySheetPage propertySheetPage;

 

+	private Set<Object> matchedObjects;

+

 	private ComposedAdapterFactory createAdapterFactory() {

 		ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory();

 		adapterFactory

@@ -91,16 +104,7 @@
 	public void createControl(final Composite parent) {

 		treeViewer = new TreeViewer(parent);

 		adapterFactory = createAdapterFactory();

-		labelProvider = new AdapterFactoryLabelProvider(adapterFactory) {

-			@Override

-			public String getText(Object object) {

-				if (object instanceof EObject) {

-					ProrUtil.getItemProvider(adapterFactory, object).getText(

-							object);

-				}

-				return super.getText(object);

-			}

-		};

+		labelProvider = new ResultLabelProvider(adapterFactory);

 		treeViewer.setLabelProvider(labelProvider);

 		contentProvider = new AdapterFactoryContentProvider(adapterFactory) {

 			@Override

@@ -117,7 +121,7 @@
 			@Override

 			public boolean select(Viewer viewer, Object parentElement,

 					Object element) {

-				if (objectsFound.contains(element)) {

+				if (matchedObjectsWithParents.contains(element)) {

 					return true;

 				}

 				return false;

@@ -125,6 +129,29 @@
 		};

 		treeViewer.addFilter(viewerFilter);

 		getSite().setSelectionProvider(treeViewer);

+		

+		treeViewer.addDoubleClickListener(new IDoubleClickListener() {

+			

+			@Override

+			public void doubleClick(DoubleClickEvent event) {

+				// Only reacts on SpecHierarchies and Specifications

+				if (event.getSelection() instanceof IStructuredSelection) {

+					IStructuredSelection selection = (IStructuredSelection)event.getSelection();

+						showIfPossible(selection.getFirstElement());

+				}

+			}

+		});

+	}

+

+	/**

+	 * If the provided object is a {@link SpecHierarchy} or

+	 * {@link Specification}, then the corresponding {@link Specification} will

+	 * be opened or activated, and the object will be selected.

+	 */

+	protected void showIfPossible(Object object) {

+		if (object instanceof EObject) {

+			ProrEditorUtil.getEditor((EObject) object);

+		}

 	}

 

 	@Override

@@ -137,26 +164,26 @@
 		if (searchResult instanceof UsageSearchResult) {

 			this.searchResult = (UsageSearchResult) searchResult;

 

-			Set<Object> objects = new HashSet<Object>();

+			matchedObjects = new HashSet<Object>();

 			Map<Resource, Collection<EObject>> resultMap = this.searchResult

 					.getSearchEntries();

 			for (Entry<Resource, Collection<EObject>> entry : resultMap

 					.entrySet()) {

 				if (false == entry.getValue().isEmpty()) {

-					objects.addAll(entry.getValue());

+					matchedObjects.addAll(entry.getValue());

 				}

 			}

 

-			objectsFound.clear();

-			objectsFound.addAll(objects);

+			matchedObjectsWithParents.clear();

+			matchedObjectsWithParents.addAll(matchedObjects);

 			Set<Resource> inputSet = new HashSet<Resource>();

-			for (Object object : objects) {

+			for (Object object : matchedObjects) {

 				Object temp = contentProvider.getParent(object);

 				while (temp != null) {

 					if (temp instanceof Resource) {

 						inputSet.add((Resource) temp);

 					}

-					objectsFound.add(temp);

+					matchedObjectsWithParents.add(temp);

 					temp = contentProvider.getParent(temp);

 				}

 

@@ -168,6 +195,13 @@
 		}

 	}

 

+	/** 

+	 * Returns the current search result.

+	 */

+	UsageSearchResult getSearchResult() {

+		return searchResult;

+	}

+	

 	@Override

 	public void setViewPart(final ISearchResultViewPart part) {

 		// do nothing

@@ -280,8 +314,31 @@
 		if (labelProvider != null) {

 			labelProvider.dispose();

 		}

-		objectsFound.clear();

+		matchedObjectsWithParents.clear();

 		super.dispose();

 	}

 

+	private final class ResultLabelProvider extends AdapterFactoryLabelProvider implements IColorProvider {

+		private ResultLabelProvider(AdapterFactory adapterFactory) {

+			super(adapterFactory);

+		}

+

+		@Override

+		public String getText(Object object) {

+			if (object instanceof EObject) {

+				ProrUtil.getItemProvider(adapterFactory, object)

+						.getText(object);

+			}

+			return super.getText(object);

+		}

+

+		@Override

+		public Color getForeground(Object object) {

+			if (!matchedObjects.contains(object)) {

+				return Display.getCurrent().getSystemColor(SWT.COLOR_GRAY);

+			}

+			return super.getForeground(object);

+		}

+	}

+

 }

diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
new file mode 100644
index 0000000..c724f00
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/ResultNavigator.java
@@ -0,0 +1,202 @@
+package org.eclipse.rmf.reqif10.search.ui;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.rmf.reqif10.SpecHierarchy;
+import org.eclipse.rmf.reqif10.Specification;
+import org.eclipse.rmf.reqif10.pror.editor.ISpecificationEditor;
+import org.eclipse.search.ui.ISearchResultViewPart;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorActionDelegate;
+import org.eclipse.ui.IEditorPart;
+
+public class ResultNavigator implements IEditorActionDelegate, IExecutableExtension {
+	
+	final static String NEXT_ID = "org.eclipse.rmf.reqif10.search.next";
+	final static String PREV_ID = "org.eclipse.rmf.reqif10.search.prev";
+
+	private Specification spec;
+	private SpecHierarchy selectedSpecHierarchy;
+	private ISpecificationEditor editor;
+
+	@Override
+	public void run(IAction action) {
+		editor.setFocus();
+		SpecHierarchy match = null;
+		if (action.getId().equals(NEXT_ID)) {
+			match = next();
+		} else if (action.getId().equals(PREV_ID)) {
+			match = prev();
+		} else {
+			throw new IllegalStateException(action + "");
+		}
+
+		if (match != null) {
+			ISelection selection = new StructuredSelection(match);
+			editor.getSite().getSelectionProvider().setSelection(selection);
+		} else {
+			MessageDialog.openInformation(editor.getSite().getShell(),
+					"No more elements", "No more elements in this direction.");
+		}
+	}
+
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		if (! (selection instanceof IStructuredSelection)) {
+			action.setEnabled(false);
+			return;
+		}
+		Object element = ((IStructuredSelection)selection).getFirstElement();
+		if (! (element instanceof SpecHierarchy)) {
+			action.setEnabled(false);
+			return;
+		}
+		action.setEnabled(specInSearchResult());
+		this.selectedSpecHierarchy = (SpecHierarchy) element;
+	}
+
+	@Override
+	public void setActiveEditor(IAction action, IEditorPart targetEditor) {
+		if (targetEditor instanceof ISpecificationEditor) {
+			this.editor = (ISpecificationEditor)targetEditor;
+			this.spec = ((ISpecificationEditor)targetEditor).getSpecification();
+		} else {
+			this.spec = null;
+			this.editor = null;
+		}
+	}
+	
+	private boolean specInSearchResult() {
+		for (SpecHierarchy sh : getMatchingSpecsHierarchies()) {
+			Specification s = getSpecForSpecHierarchy(sh);
+			if (s == spec) return true;			
+		}
+		return false;
+	}
+
+	private Set<SpecHierarchy> getMatchingSpecsHierarchies() {
+		HashSet<SpecHierarchy> set = new HashSet<SpecHierarchy>();
+
+		ISearchResultViewPart view = NewSearchUI.getSearchResultView();
+		if (view != null && view.getActivePage() instanceof ReqIFSearchResultPage) {
+			ReqIFSearchResultPage page = (ReqIFSearchResultPage)view.getActivePage();
+			UsageSearchResult result = page.getSearchResult();
+			Collection<EObject> entries = result.getSearchEntries().get(spec.eResource());
+			if (entries == null) {
+				return set;
+			}
+			for (EObject entry: entries) {
+				if (entry instanceof SpecHierarchy) {
+					set.add((SpecHierarchy) entry);
+				}				
+			}
+		}
+		return set;
+	}
+	
+	private Specification getSpecForSpecHierarchy(SpecHierarchy entry) {
+		while (true) {
+			if (entry.eContainer() instanceof Specification) {
+				return (Specification) entry.eContainer();
+			} else if (entry.eContainer() instanceof SpecHierarchy) {
+				entry = (SpecHierarchy) entry.eContainer();
+			} else {
+				return null;
+			}
+		}
+	}
+
+	@Override
+	public void setInitializationData(IConfigurationElement config,
+			String propertyName, Object data) throws CoreException {
+		// Not used, but interface implemented to ensure proper class loading.		
+	}
+	
+	private SpecHierarchy next() {
+		Set<SpecHierarchy> bag = getMatchingSpecsHierarchies();
+		SpecHierarchy next = oneDown(selectedSpecHierarchy);
+		while (next != null) {
+			if (bag.contains(next)) return next;
+			next = oneDown(next);
+		}
+		return null;
+	}
+
+	private SpecHierarchy oneDown(SpecHierarchy sh) {
+		// If there are children, go down the hierarchy.
+		if (sh.getChildren().size() > 0) {
+			return sh.getChildren().get(0);
+		}
+		
+		EObject element = sh;
+		while (element instanceof SpecHierarchy) {
+			EObject container = element.eContainer();
+			int pos = getSpecHierarchies(container).indexOf(element);		
+			if (pos < getSpecHierarchies(container).size() - 1) {
+				return (SpecHierarchy) getSpecHierarchies(container).get(pos +1);
+			} else {
+				element = container;
+			}
+		}
+		return null;
+	}
+
+	private SpecHierarchy prev() {
+		Set<SpecHierarchy> bag = getMatchingSpecsHierarchies();
+		SpecHierarchy next = oneUp(selectedSpecHierarchy);
+		while (next != null) {
+			if (bag.contains(next)) return next;
+			next = oneUp(next);
+		}
+		return null;
+	}
+
+	private SpecHierarchy oneUp(SpecHierarchy sh) {
+		EObject element = sh;
+		while (element instanceof SpecHierarchy) {
+			EObject container = element.eContainer();
+			if (! (container instanceof SpecHierarchy || container instanceof Specification)) {
+				return null;
+			}
+			int pos = getSpecHierarchies(container).indexOf(element);		
+			if (pos > 0) {
+				sh = (SpecHierarchy) getSpecHierarchies(container).get(pos - 1);
+				while (sh.getChildren().size() > 0) {
+					sh = sh.getChildren().get(sh.getChildren().size() - 1);
+				}
+				return sh;
+			} else {
+				// Go one up, then as deep as possible
+				if (container instanceof SpecHierarchy) {
+					return (SpecHierarchy) container;
+				} else {
+					return null;
+				}
+			}
+		}
+		return null;
+	}
+	
+	private EList<SpecHierarchy> getSpecHierarchies(EObject eObject) {
+		if (eObject instanceof SpecHierarchy) {
+			return ((SpecHierarchy)eObject).getChildren();
+		}
+		if (eObject instanceof Specification) {
+			return ((Specification)eObject).getChildren();
+		}
+		return null;
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/UsageSearchResult.java b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/UsageSearchResult.java
index 042ee15..ce8b3d9 100644
--- a/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/UsageSearchResult.java
+++ b/org.eclipse.rmf.reqif10.search.ui/src/org/eclipse/rmf/reqif10/search/ui/UsageSearchResult.java
@@ -14,9 +14,7 @@
 import java.util.ArrayList;

 import java.util.Collection;

 import java.util.HashMap;

-import java.util.Iterator;

 import java.util.Map;

-import java.util.Map.Entry;

 

 import org.eclipse.emf.ecore.EObject;

 import org.eclipse.emf.ecore.resource.Resource;

@@ -27,17 +25,16 @@
 

 /**

  * @author Hussein MHANNA

- * 

  */

 public class UsageSearchResult implements ISearchResult {

 

-	private final ReqIFSearchQuery query;

+	private final ISearchQuery query;

 

 	private final Map<Resource, Collection<EObject>> searchEntries;

 

 	private final Collection<ISearchResultListener> searchResultListeners = new ArrayList<ISearchResultListener>();

 

-	public UsageSearchResult(final ReqIFSearchQuery query) {

+	public UsageSearchResult(final ISearchQuery query) {

 		this.query = query;

 		this.searchEntries = new HashMap<Resource, Collection<EObject>>();

 	}

@@ -66,29 +63,28 @@
 	 */

 	@Override

 	public String getLabel() {

-		StringBuilder builder = new StringBuilder("Search in files '");

-		int resultFoundSize = 0;

-		for (Entry<Resource, Collection<EObject>> entry : searchEntries

-				.entrySet()) {

-			if (false == entry.getValue().isEmpty()) {

-				resultFoundSize++;

+		StringBuilder builder = new StringBuilder();

+

+		// add a maximum of 3 filenames

+		int count = 0;

+		for (Resource resource : searchEntries.keySet()) {

+			builder.append(resource.getURI().lastSegment());

+			if (++count > 2) {

+				builder.append("..., ");

+				break;

+			} else {

+				builder.append(", ");

 			}

 		}

-		// to limit the label, we take only max three resources

-		int max = resultFoundSize > 0 ? Math.min(3, resultFoundSize) : 3;

-		int count = 0;

-		Collection<Resource> resources = searchEntries.keySet();

-		for (Iterator<Resource> iterator = resources.iterator(); iterator

-				.hasNext() && count < max;) {

-			Resource resource = iterator.next();

-			builder.append(resource.getURI().lastSegment()).append(" - ");

-			count++;

+

+		Collection<Collection<EObject>> entries = searchEntries.values();

+		int total = 0;

+		for (Collection<EObject> entry : entries) {

+			total += entry.size();

 		}

-		if (count < resultFoundSize) {

-			builder.append("... - ");

-		}

-		builder.append("' result : ").append(resultFoundSize)

-				.append(" occurences");

+

+		builder.append("count: ").append(total).append(". Query: \"")

+				.append(query.getLabel()).append("\"");

 		return builder.toString();

 	}

 

diff --git a/org.eclipse.rmf.reqif10.search/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.search/META-INF/MANIFEST.MF
index a6581dc..d1cf78e 100644
--- a/org.eclipse.rmf.reqif10.search/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.search/META-INF/MANIFEST.MF
@@ -10,8 +10,12 @@
 Export-Package: org.eclipse.rmf.reqif10.search.criteria,

  org.eclipse.rmf.reqif10.search.criteria.impl,

  org.eclipse.rmf.reqif10.search.criteria.util,

+ org.eclipse.rmf.reqif10.search.filter,

  org.eclipse.rmf.reqif10.search.util

 Require-Bundle: org.eclipse.core.runtime,

  org.eclipse.emf.ecore;visibility:=reexport,

- org.eclipse.rmf.reqif10

+ org.eclipse.rmf.reqif10,

+ com.google.guava,

+ org.eclipse.rmf.reqif10.pror;bundle-version="0.11.0"

 Bundle-ActivationPolicy: lazy

+Import-Package: org.eclipse.rmf.reqif10.common.util

diff --git a/org.eclipse.rmf.reqif10.search/plugin.properties b/org.eclipse.rmf.reqif10.search/plugin.properties
index 3fdc055..b89d6e6 100644
--- a/org.eclipse.rmf.reqif10.search/plugin.properties
+++ b/org.eclipse.rmf.reqif10.search/plugin.properties
@@ -2,3 +2,21 @@
 

 pluginName = ReqIF Search Model Support

 providerName = Eclipse Modeling Project

+

+operator_equals = =

+operator_is = =

+operator_is_not = \u2260 

+operator_not_equals = \u2260

+operator_contains = contains

+operator_not_contains = contains not

+operator_regexp = regexp

+operator_regexp_plain = regexp (plain)

+operator_between = between

+operator_greater = >

+operator_smaller = <

+operator_before = before

+operator_after = after

+operator_contains_all = all 

+operator_contains_any = any

+operator_is_set = set

+operator_is_not_set = not set
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractAttributeFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractAttributeFilter.java
new file mode 100644
index 0000000..9eb68f7
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractAttributeFilter.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.rmf.reqif10.search.filter;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeValue;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.SpecType;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * implementation of operators that can be run on any {@link AttributeDefinition}
+ * 
+ * @author Ingo Weigelt
+ */
+public abstract class AbstractAttributeFilter implements IFilter {
+	
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.IS_SET, Operator.IS_NOT_SET);
+		
+	public AbstractAttributeFilter(){
+	}
+	
+	
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		
+		if (getAttribute() instanceof AttributeDefinition){
+			switch (getOperator()) {
+			case IS_SET:
+				return isSetAttribute(element, (AttributeDefinition) getAttribute()) && hasNonNullValue(element) ;
+			case IS_NOT_SET:		
+				return isSetAttribute(element, (AttributeDefinition) getAttribute()) && !hasNonNullValue(element); 
+			default:
+				throw new IllegalArgumentException(
+						"This filter does not support the " + getOperator()
+								+ " operation");
+			}	
+		}else{
+			Object attributeValue = getInternalAttributeValue(element);
+			switch (getOperator()) {
+			case IS_SET:
+				return attributeValue != null;
+			case IS_NOT_SET:
+				return attributeValue == null;
+			default:
+				throw new IllegalArgumentException(
+						"This filter does not support the " + getOperator()
+								+ " operation");
+			}
+		}
+	}
+	
+	
+	
+	public static boolean isSetAttribute(SpecElementWithAttributes element, AttributeDefinition attributeDefinition){
+		SpecType specType = ReqIF10Util.getSpecType(element);
+		if (specType == null) return false;
+		return specType.getSpecAttributes().contains(attributeDefinition);
+	}
+	
+	
+	private boolean hasNonNullValue(SpecElementWithAttributes element){
+		AttributeValue attributeValue = ReqIF10Util.getAttributeValue(element, (AttributeDefinition) getAttribute());
+		if (attributeValue == null){
+			return false;
+		}
+		Object theValue = ReqIF10Util.getTheValue(attributeValue);
+		if (theValue == null){
+			return false;
+		}
+		return true;
+	}
+	
+	
+
+	/**
+	 * Filters that can be applied to internalAttributes have to implement this
+	 * class and return a non-null value if the internalAttribute should be
+	 * considered as SET.
+	 * Otherwise they have to return null
+	 * 
+	 * @param element
+	 * @param attribute
+	 * @return the value of the internal attribute or null if the attribute is
+	 *         not set
+	 */
+	protected Object getInternalAttributeValue(
+			SpecElementWithAttributes element){
+		return null;
+	}
+	
+	
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+	
+	
+	public String toString(){
+		StringBuilder sb = new StringBuilder();
+		
+		String attribute = null;
+		if (getAttribute() instanceof AttributeDefinition) {
+			AttributeDefinition ad = (AttributeDefinition) getAttribute();
+			attribute = ad.getLongName();
+			if (attribute == null){
+				attribute = ad.getDesc();
+			}
+			if (attribute == null){
+				attribute = "Attribute with ID="+ad.getIdentifier();
+			}
+		}else{
+			attribute = getAttribute().toString();
+		}
+		
+		sb.append(attribute);
+		sb.append(" ");
+		
+		sb.append(getOperator().toLocaleString());
+		
+		if (getOperator() == Operator.IS_SET || getOperator() == Operator.IS_NOT_SET){
+			// we dont want any values for these operations and return;
+			return sb.toString();
+		}
+		
+		sb.append(" ");
+		sb.append(getFilterValue1AsString());
+		if (getOperator().equals(Operator.BETWEEN)){
+			sb.append(" and ").append(getFilterValue2AsString());
+		}
+		
+		return sb.toString();
+	}
+	
+	public String getFilterValue1AsString() {
+		return getFilterValue1().toString();
+	}
+	
+	public String getFilterValue2AsString() {
+		return getFilterValue2().toString();
+	}	
+	
+
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractTextFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractTextFilter.java
new file mode 100644
index 0000000..e92ddec
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/AbstractTextFilter.java
@@ -0,0 +1,250 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ *     Michael Jastram - adding getters, so that we can reconstruct the GUI
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * Filter for String-based values.
+ */
+public abstract class AbstractTextFilter extends AbstractAttributeFilter {
+
+	public enum InternalAttribute {
+		IDENTIFIER, DESC, LONG_NAME
+	}
+
+	// TODO cross-check this with supported operators.
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.EQUALS, Operator.NOT_EQUALS,
+					Operator.CONTAINS, Operator.NOT_CONTAINS, Operator.REGEXP, Operator.IS_SET, Operator.IS_NOT_SET);
+
+	protected Operator operator;
+	protected String filterValue;
+	protected AttributeDefinition attributeDefinition;
+	protected InternalAttribute internalAttribute;
+	protected boolean caseSensitive;
+	protected boolean isInternal;
+
+	
+	/**
+	 * Constructor used to create a filter for an {@link AttributeDefinitionString}
+	 * 
+	 * @param operator the filter operator to use
+	 * @param value the value to match
+	 * @param attributeDefinition the attributeDefinition that defines the value of a SpecObject that should be matched
+	 * @param caseSensitive 
+	 */
+	public AbstractTextFilter(Operator operator, String value,
+			AttributeDefinition attributeDefinition, boolean caseSensitive) {
+		this(operator, value, null, attributeDefinition, caseSensitive);
+		this.isInternal = false;
+		if (null == attributeDefinition){
+			throw new IllegalArgumentException("AttributeDefinition can not be null");
+		}
+	}
+
+	/**
+	 * Constructor used to create a filter for an {@link InternalAttribute}
+	 * 
+	 * @param operator the filter operator to use
+	 * @param value the value to match
+	 * @param attributeDefinition the attributeDefinition that defines the value of a SpecObject that should be matched
+	 * @param caseSensitive 
+	 */
+	public AbstractTextFilter(Operator operator, String value,
+			InternalAttribute internalFeature, boolean caseSensitive) {
+		this(operator, value, internalFeature, null, caseSensitive);
+		this.isInternal = true;
+		if (null == internalFeature){
+			throw new IllegalArgumentException("AttributeDefinition can not be null");
+		}
+	}
+	
+	
+	protected AbstractTextFilter(Operator operator, String value, 
+			InternalAttribute internalFeature, AttributeDefinition attributeDefinition, boolean caseSensitive){
+
+		if (!getSupportedOperators().contains(operator)){
+			throw new IllegalArgumentException(
+					"This filter does not support the " + operator.toString()
+							+ " operation");
+		}
+		if (null == value && operator != Operator.IS_SET && operator != Operator.IS_NOT_SET  ){
+			throw new IllegalArgumentException(
+					"Value can not be null");
+		}
+		
+		if (internalFeature != null && attributeDefinition == null){
+			isInternal = true;
+		}else if(attributeDefinition != null && internalFeature == null){
+			isInternal = false;
+		}else{
+			throw new IllegalArgumentException(
+					"internalFeature and attribute definition can not be null or set at the same time");
+		}
+		
+		this.operator = operator;
+		this.filterValue = (null == value ? "" : value);
+		this.internalAttribute = internalFeature;
+		this.attributeDefinition = attributeDefinition;
+		this.caseSensitive = caseSensitive;
+	}
+
+	
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		if (operator == Operator.IS_SET || operator == Operator.IS_NOT_SET){
+			return super.match(element);
+		}
+		
+		
+		String theValue;
+
+		// retrieve the value to check depending on this is a filter on an
+		// internal Attribute or a value
+		if (isInternal) {
+			theValue = getInternalAttributeValue(element);
+		} else {
+			theValue = getAttributeValue(element);
+		}
+		
+		if (theValue == null){
+			/* Check if there is any default value for this attribute */
+			theValue = getDefaultValue(element);
+		}
+		
+		/* 1. handle empty attribute case */ 
+		if (theValue == null){
+			switch (operator) {
+			case EQUALS:
+			case CONTAINS:
+				return false;
+			case NOT_EQUALS:
+			case NOT_CONTAINS:
+				return true;
+			case REGEXP:
+				// apply regexp to the empty string
+				return matchRegexp("");
+			default:
+				break;
+			}
+		}
+
+		/* 2. handle non-empty attribute case */
+		switch (operator) {
+		case EQUALS:
+			return (caseSensitive ? theValue.equals(filterValue)  
+								  : theValue.equalsIgnoreCase(filterValue));
+		case NOT_EQUALS:
+			return (caseSensitive ? !theValue.equals(filterValue) 
+					              :	!theValue.equalsIgnoreCase(filterValue));
+		case CONTAINS:
+			return (caseSensitive ? theValue.contains(filterValue) 
+					              : theValue.toLowerCase().contains(filterValue.toLowerCase()));
+		case NOT_CONTAINS:
+			return (caseSensitive ? !theValue.contains(filterValue) 
+					              : !theValue.toLowerCase().contains(filterValue.toLowerCase()));
+		case REGEXP:
+//			return (caseSensitive ? theValue.matches(filterValue) 
+//					              : theValue.toLowerCase().matches(filterValue.toLowerCase()));
+			return matchRegexp(theValue);
+		default:
+			return super.match(element);
+		}
+	}
+
+
+	/**
+	 * return the default Value of the AttributeDefinition if the attribute is defined in elements specType
+	 * Otherwise return null 
+	 * 
+	 * @param element
+	 * @return the default Value of the AttributeDefinition if the attribute is defined in elements specType
+	 * Otherwise null
+	 */
+	protected abstract String getDefaultValue(SpecElementWithAttributes element);
+
+	/**
+	 * returns the value of the Internal Attribute that is defined by this.internalAttribute
+	 * 
+	 * @return
+	 */
+	protected abstract String getInternalAttributeValue(SpecElementWithAttributes element);
+
+	/**
+	 * returns the value of the element that is defined by this.attributeDefinition
+	 * 
+	 * @param element
+	 * @return
+	 */
+	protected abstract String getAttributeValue(SpecElementWithAttributes element);
+	
+	
+	/**
+	 * Has to return the instance of this.SUPPORTED_OPERATORS
+	 * @return
+	 */
+	public abstract ImmutableSet<Operator> getSupportedOperators();
+	
+	
+	
+	/**
+	 * matches this.filterValue to the String value
+	 * takes this.caseSensitive into account
+	 * 
+	 * @return
+	 */
+	protected boolean matchRegexp(String value){
+		Pattern p;
+		if (caseSensitive){
+			p = Pattern.compile(filterValue, Pattern.DOTALL);
+		}else{
+			p = Pattern.compile(filterValue, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
+		}
+		Matcher matcher = p.matcher(value);
+		return matcher.find();
+	}
+	
+	public boolean isCaseSensitive() {
+		return caseSensitive;
+	}
+	
+	@Override
+	public String getFilterValue1() {
+		return filterValue;
+	}
+	
+	@Override
+	public String getFilterValue2() {
+		return null;
+	}
+
+	@Override
+	public Operator getOperator() {
+		return operator;
+	}
+	
+	@Override
+	public Object getAttribute() {
+		return isInternal ? internalAttribute : attributeDefinition;
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/BoolFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/BoolFilter.java
new file mode 100644
index 0000000..4c12911
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/BoolFilter.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
+import org.eclipse.rmf.reqif10.AttributeValueBoolean;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * Filter for String-based values.
+ */
+public class BoolFilter extends AbstractAttributeFilter {
+
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.IS, Operator.IS_SET, Operator.IS_NOT_SET);
+
+	private Operator operator;
+	private Boolean filterValue;
+	private AttributeDefinitionBoolean attributeDefinition;
+
+	public BoolFilter(Operator operator, Boolean filterValue,
+			AttributeDefinitionBoolean attributeDefinition) {
+
+		if (!SUPPORTED_OPERATORS.contains(operator)) {
+			throw new IllegalArgumentException(
+					"This filter does not support the " + operator.toString()
+							+ " operation");
+		}
+		if (null == attributeDefinition) {
+			throw new IllegalArgumentException(
+					"AttributeDefinition can not be null");
+		}
+
+		this.operator = operator;
+		this.filterValue = filterValue;
+		this.attributeDefinition = attributeDefinition;
+
+	}
+
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		if (operator == Operator.IS_SET || operator == Operator.IS_NOT_SET){
+			return super.match(element);
+		}
+		
+		Boolean theValue;
+
+		AttributeValueBoolean attributeValue = (AttributeValueBoolean) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+		
+		if (attributeValue == null && attributeDefinition.isSetDefaultValue()){
+			if (AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+				attributeValue = attributeDefinition.getDefaultValue();
+			}
+		}
+		
+		if (attributeValue == null || !attributeValue.isSetTheValue()){
+			return false;
+		}
+		
+		theValue =  attributeValue.isTheValue();
+	
+		switch (operator) {
+		case IS:
+			return filterValue.equals(theValue);
+		default:
+			throw new IllegalArgumentException(
+					"This filter does not support the " + this.operator
+							+ " operation");
+		}
+	}
+
+	@Override
+	public Object getAttribute() {
+		return attributeDefinition;
+	}
+
+	@Override
+	public Operator getOperator() {
+		return operator;
+	}
+
+	@Override
+	public Object getFilterValue1() {
+		return filterValue;
+	}
+
+	@Override
+	public Object getFilterValue2() {
+		return null;
+	}
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/DateFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/DateFilter.java
new file mode 100644
index 0000000..8132a5c
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/DateFilter.java
@@ -0,0 +1,298 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.text.SimpleDateFormat;
+import java.util.GregorianCalendar;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
+import org.eclipse.rmf.reqif10.AttributeValue;
+import org.eclipse.rmf.reqif10.AttributeValueDate;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * Filter for String-based values.
+ */
+public class DateFilter extends AbstractAttributeFilter {
+
+	public static enum InternalAttribute {
+		LAST_CHANGE
+	}
+
+	// TODO cross-check this with supported operators.
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.IS, Operator.IS_NOT,
+					Operator.BETWEEN, Operator.BEFORE, Operator.AFTER, Operator.IS_SET, Operator.IS_NOT_SET);
+
+	private Operator operator;
+	private GregorianCalendar filterValue1;
+	private GregorianCalendar filterValue2;
+	private AttributeDefinitionDate attributeDefinition;
+	private InternalAttribute internalAttribute;
+	private boolean isInternal;
+
+	
+	/**
+	 * Constructor used to create a filter for an {@link AttributeDefinitionDate}
+	 * 
+	 * @param operator the filter operator to use
+	 * @param value the value to match
+	 * @param attributeDefinition the attributeDefinition that defines the value of a SpecObject that should be matched
+	 * @param caseSensitive 
+	 */
+	public DateFilter(Operator operator, GregorianCalendar value1, GregorianCalendar value2,
+			AttributeDefinitionDate attributeDefinition) {
+		this(operator, value1, value2, null, attributeDefinition);
+		this.isInternal = false;
+		if (null == attributeDefinition){
+			throw new IllegalArgumentException("AttributeDefinition can not be null");
+		}
+		System.out.println("Instatiated new Filter: " + toString());
+	}
+
+	/**
+	 * Constructor used to create a filter for an {@link InternalAttribute}
+	 * 
+	 * @param operator the filter operator to use
+	 * @param value the value to match
+	 * @param attributeDefinition the attributeDefinition that defines the value of a SpecObject that should be matched
+	 * @param caseSensitive 
+	 */
+	public DateFilter(Operator operator, GregorianCalendar value1, GregorianCalendar value2,
+			InternalAttribute internalFeature) {
+		this(operator, value1, value2, internalFeature, null);
+		this.isInternal = true;
+		if (null == internalFeature){
+			throw new IllegalArgumentException("AttributeDefinition can not be null");
+		}
+		System.out.println("Instatiated new Filter: " + toString());
+	}
+	
+	
+	private DateFilter(Operator operator, GregorianCalendar value1, GregorianCalendar value2, 
+			InternalAttribute internalFeature, AttributeDefinitionDate attributeDefinition){
+
+		if (!SUPPORTED_OPERATORS.contains(operator)){
+			throw new IllegalArgumentException(
+					"This filter does not support the " + operator.toString()
+							+ " operation");
+		}
+		if (null == value1 && operator != Operator.IS_SET && operator != Operator.IS_NOT_SET  ){
+			throw new IllegalArgumentException(
+					"Value can not be null");
+		}
+		
+		if (operator.equals(Operator.BETWEEN) ){
+			if (value2 == null){
+				throw new IllegalArgumentException("Value2 can not be null when using the operator " + operator.toString());
+			}
+		}		
+		
+		
+		if (value2 != null){
+			filterValue2 = copyCalendar(value2, true);
+			filterValue2.set(GregorianCalendar.HOUR_OF_DAY, 23);
+			filterValue2.set(GregorianCalendar.MINUTE, 59);
+			filterValue2.set(GregorianCalendar.SECOND, 59);
+			filterValue2.set(GregorianCalendar.MILLISECOND, 999);
+			
+			// Calling getTimeInMillis() forces the GregorianCalendar to compute the time.
+			// If the time is not computed a compareTo might fail
+			filterValue2.getTimeInMillis();
+		}
+		
+		
+		if (value1 != null){
+			if (operator == Operator.IS || operator == Operator.IS_NOT){
+				filterValue1 = copyCalendar(value1, false);
+				filterValue2 = copyCalendar(value1, false);
+				filterValue2.add(GregorianCalendar.HOUR, 24);		
+				filterValue2.getTimeInMillis();
+			}else{
+				filterValue1 = copyCalendar(value1, true);
+			}
+			// Calling getTimeInMillis() forces the GregorianCalendar to compute the time.
+			// If the time is not computed a compareTo might fail
+			filterValue1.getTimeInMillis();
+		}
+		
+		
+		this.operator = operator;
+		if (operator.equals(Operator.BETWEEN) && filterValue1.after(filterValue2)){
+			GregorianCalendar fv1 = filterValue1;
+			this.filterValue1 = this.filterValue2;
+			this.filterValue2 = fv1;
+		}		
+		
+		this.internalAttribute = internalFeature;
+		this.attributeDefinition = attributeDefinition;
+		
+	}
+
+	
+	/* 
+	 * 
+	 */
+	private GregorianCalendar copyCalendar(GregorianCalendar source, boolean copyTimeOfDay ){
+		source.getTimeInMillis();
+		
+		GregorianCalendar calendar = new GregorianCalendar(source.getTimeZone());
+		
+		calendar.set(GregorianCalendar.YEAR, source.get(GregorianCalendar.YEAR));
+		calendar.set(GregorianCalendar.MONTH, source.get(GregorianCalendar.MONTH));
+		calendar.set(GregorianCalendar.DAY_OF_MONTH, source.get(GregorianCalendar.DAY_OF_MONTH));
+		
+		if (copyTimeOfDay){
+			calendar.set(GregorianCalendar.HOUR_OF_DAY, source.get(GregorianCalendar.HOUR_OF_DAY));
+			calendar.set(GregorianCalendar.MINUTE, source.get(GregorianCalendar.MINUTE));
+			calendar.set(GregorianCalendar.SECOND, source.get(GregorianCalendar.SECOND));
+			calendar.set(GregorianCalendar.MILLISECOND, source.get(GregorianCalendar.MILLISECOND));
+		}else{
+			calendar.set(GregorianCalendar.HOUR_OF_DAY, 0);
+			calendar.set(GregorianCalendar.MINUTE, 0);
+			calendar.set(GregorianCalendar.SECOND, 0);
+			calendar.set(GregorianCalendar.MILLISECOND, 0);
+		}
+		
+		return calendar;
+	}
+	
+	
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+
+		GregorianCalendar theValue;
+
+		// retrieve the value to check depending on this is a filter on an
+		// internal Attribute or a value
+		if (isInternal) {
+			theValue = getInternalAttributeValue(element);
+		} else {
+			AttributeValue attributeValue = ReqIF10Util.getAttributeValue(
+					element, attributeDefinition);
+			if (attributeValue == null || !((AttributeValueDate) attributeValue).isSetTheValue()){
+				theValue = null;
+			}else{
+				theValue = ((AttributeValueDate) attributeValue).getTheValue();
+			}
+		}
+		
+		if (theValue == null){
+			theValue = getDefaultValue(element);
+		}
+		
+		if (theValue == null){
+			switch (operator) {
+			case IS_NOT:
+				return true;
+			case IS:
+			case BEFORE:
+			case AFTER:
+			case BETWEEN:
+				return false;
+			default:
+				return super.match(element);
+			}
+		}
+		
+		
+		// Calling getTimeInMillis() forces the GregorianCalendar to compute the time.
+		// If the time is not computed a compareTo might fail
+		theValue.getTimeInMillis();
+		
+		
+		switch (operator) {
+		case IS:
+			return theValue.compareTo(filterValue1) >= 0 && theValue.before(filterValue2);
+		case IS_NOT:
+			return !(theValue.compareTo(filterValue1) >= 0 && theValue.before(filterValue2));
+		case BEFORE:
+			return theValue.compareTo(filterValue1) < 0;
+		case AFTER:
+			return theValue.compareTo(filterValue1) > 0;
+		case BETWEEN:	
+			return theValue.compareTo(filterValue1) >= 0 && theValue.compareTo(filterValue2) <= 0;
+		default:
+			return super.match(element);
+		}
+	}
+
+	private GregorianCalendar getDefaultValue(SpecElementWithAttributes element) {
+		if (!AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+			return null;
+		}
+		
+		if (!isInternal && attributeDefinition instanceof AttributeDefinitionDate) {
+			AttributeDefinitionDate ad = (AttributeDefinitionDate) attributeDefinition;
+			return ad.isSetDefaultValue() ? ad.getDefaultValue().getTheValue() : null;
+		}
+		if (isInternal){
+			// What is the default Value for LAST_CHANGE
+			// I am not even sure if a non set LAST_CHANGE is valid
+			return null;
+		}
+		
+		throw new IllegalStateException("Expected an AttributeDefinitionString as attribute but found " + attributeDefinition.getClass());
+	}
+
+	@Override
+	public Object getAttribute() {
+		return isInternal ? internalAttribute : attributeDefinition;
+	}
+
+	public Operator getOperator() {
+		return operator;
+	}
+	
+	public GregorianCalendar getFilterValue1() {
+		return filterValue1;
+	}
+
+	public GregorianCalendar getFilterValue2() {
+		return filterValue2;
+	}
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+
+	@Override
+	protected GregorianCalendar getInternalAttributeValue(SpecElementWithAttributes element) {
+		if (internalAttribute.equals(InternalAttribute.LAST_CHANGE)){
+			if (!element.isSetLastChange()){
+				return null;
+			}
+			return element.getLastChange();
+		}else{
+			throw new IllegalArgumentException(internalAttribute + " is not supported by this feature");
+		}
+	}
+
+	@Override
+	public String getFilterValue1AsString() {
+	    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd");
+	    return fmt.format(getFilterValue1().getTime());
+	}
+	
+	@Override
+	public String getFilterValue2AsString() {
+	    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd");
+	    return fmt.format(getFilterValue2().getTime());
+	}
+	
+
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/EnumFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/EnumFilter.java
new file mode 100644
index 0000000..4487a4d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/EnumFilter.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import org.eclipse.rmf.reqif10.AttributeDefinitionEnumeration;
+import org.eclipse.rmf.reqif10.AttributeValueEnumeration;
+import org.eclipse.rmf.reqif10.EnumValue;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+public class EnumFilter extends AbstractAttributeFilter{
+
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.EQUALS, Operator.NOT_EQUALS,
+					Operator.CONTAINS_ALL, Operator.CONTAINS_ANY, Operator.IS_SET, Operator.IS_NOT_SET);
+	
+	
+	private AttributeDefinitionEnumeration attributeDefinition;
+	
+	private Operator operator;
+	private HashSet<EnumValue> filterValues;
+
+
+	private HashSet<EnumValue> defaultValues;
+	
+
+	public EnumFilter(Operator operator, Collection<EnumValue> value, AttributeDefinitionEnumeration attributeDefinition) {
+		// ensure that operator is supported
+		if (!SUPPORTED_OPERATORS.contains(operator)){
+				throw new IllegalArgumentException(
+						"This filter does not support the " + operator.toString()
+								+ " operation");
+		};
+		
+		// ensure that value1 is not null
+		if (null == value && operator != Operator.IS_SET && operator != Operator.IS_NOT_SET  ){
+			throw new IllegalArgumentException(
+					"value1 can not be null");
+		}
+		
+		this.attributeDefinition = attributeDefinition;
+		this.operator = operator;
+		this.filterValues = value == null ? new HashSet<EnumValue>() : new HashSet<EnumValue>(value);
+		if (attributeDefinition.getDefaultValue() != null){
+			this.defaultValues = new HashSet<EnumValue>(attributeDefinition.getDefaultValue().getValues());
+		}else{
+			this.defaultValues = new HashSet<EnumValue>();
+		}
+	}
+
+
+
+	@Override
+	public boolean match(SpecElementWithAttributes element) {	
+		if (operator == Operator.IS_SET || operator == Operator.IS_NOT_SET){
+			return super.match(element);
+		}
+		
+		AttributeValueEnumeration attributeValue = (AttributeValueEnumeration) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+		HashSet<EnumValue> elementValues = null;
+		
+		if (attributeValue == null || !attributeValue.isSetValues()){
+			if (AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+				elementValues = defaultValues;
+			}else{
+				elementValues = null;
+			}
+		}else{
+			elementValues = new HashSet<EnumValue>(attributeValue.getValues());
+		}
+		
+		if (elementValues == null || elementValues.size() == 0){
+			switch (operator) {
+			case NOT_EQUALS:
+				return filterValues.isEmpty() ? false : true;
+			case EQUALS:
+			case CONTAINS_ALL:
+			case CONTAINS_ANY:
+				return filterValues.isEmpty() ? true : false;
+			default:
+				throw new IllegalArgumentException(
+						"This filter does not support the " + this.operator
+								+ " operation");
+			}
+		}
+		
+		
+		switch (operator) {
+		case EQUALS:
+			return elementValues.equals(filterValues);
+		case NOT_EQUALS:
+			return !elementValues.equals(filterValues);
+		case CONTAINS_ALL:
+			return elementValues.containsAll(filterValues);
+		case CONTAINS_ANY:
+			for (EnumValue enumValue : filterValues) {
+				if (elementValues.contains(enumValue)){
+					return true;
+				}
+			}
+			return false;
+		default:
+			throw new IllegalArgumentException(
+					"This filter does not support the " + this.operator
+							+ " operation");
+		}
+		
+	}
+
+
+
+	@Override
+	public AttributeDefinitionEnumeration getAttribute() {
+		return attributeDefinition;
+	}
+
+	@Override
+	public Operator getOperator() {
+		return operator;
+	}
+
+	@Override
+	public Collection<EnumValue> getFilterValue1() {
+		return filterValues;
+	}
+
+	@Override
+	public Object getFilterValue2() {
+		return null;
+	}
+
+
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+	
+		
+	@Override
+	public String getFilterValue1AsString() {
+		return enumValuesAsString(getFilterValue1());
+	}
+	
+	@Override
+	public String getFilterValue2AsString() {
+		return null;
+	}
+	
+	
+	private String enumValuesAsString(Collection<EnumValue> values){
+		StringBuilder sb = new StringBuilder("[");
+		for (Iterator<EnumValue> iterator = values.iterator(); iterator
+				.hasNext();) {
+			EnumValue enumValue = (EnumValue) iterator.next();
+			String label = enumValue.getLongName();
+			if (label == null){
+				label = enumValue.getDesc();
+			}
+			if (label == null){
+				label = "ID="+enumValue.getIdentifier();
+			}
+			sb.append(label);
+			
+			if (iterator.hasNext()){
+				sb.append(", ");
+			}
+		}
+		sb.append("]");
+		
+		return sb.toString();
+	}
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/IFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/IFilter.java
new file mode 100644
index 0000000..6dbd4c5
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/IFilter.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - Label Support, ReqifFilter inheritance
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.pror.filter.ReqifFilter;
+
+import com.google.common.collect.ImmutableSet;
+
+public interface IFilter extends ReqifFilter {
+
+	/**
+	 * Subclasses should implement a static immutable field that allows clients
+	 * to retrieve the list of supported operations.
+	 * 
+	 * public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = ...;
+	 */
+	
+	public enum Operator{
+		EQUALS("operator_equals"),
+		IS("operator_is"),
+		IS_NOT("operator_is_not"),
+		NOT_EQUALS("operator_not_equals"),
+		CONTAINS("operator_contains"),
+		NOT_CONTAINS("operator_not_contains"),
+		REGEXP("operator_regexp"),
+		REGEXP_PLAIN("operator_regexp_plain"),
+		BETWEEN("operator_between"),
+		GREATER("operator_greater"),
+		SMALLER("operator_smaller"),
+		BEFORE("operator_before"),
+		AFTER("operator_after"),
+		CONTAINS_ALL("operator_contains_all"),
+		CONTAINS_ANY("operator_contains_any"),
+		IS_SET("operator_is_set"),
+		IS_NOT_SET("operator_is_not_set");
+		
+		private String label;
+		
+		private Operator(String label) {
+			this.label = label;
+		}
+		
+		@Override
+		public String toString() {
+			return label;
+		}
+		
+		public String toLocaleString(){
+			try{
+				return ResourceBundle.getBundle("plugin").getString(label);
+			}catch (MissingResourceException e){
+				return label;
+			}
+		}
+	}
+	
+	public boolean match(SpecElementWithAttributes element); 
+	
+	/**
+	 * Returns the Attribute for this filter.
+	 */
+	public Object getAttribute();
+	
+	public Operator getOperator();
+	
+	public Object getFilterValue1();
+	
+	public Object getFilterValue2();
+	
+	public ImmutableSet<Operator> getSupportedOperators();
+	
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/NumberFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/NumberFilter.java
new file mode 100644
index 0000000..437221d
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/NumberFilter.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.math.BigInteger;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
+import org.eclipse.rmf.reqif10.AttributeDefinitionReal;
+import org.eclipse.rmf.reqif10.AttributeValueInteger;
+import org.eclipse.rmf.reqif10.AttributeValueReal;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+public class NumberFilter extends AbstractAttributeFilter {
+
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.IS, Operator.IS_NOT,
+					Operator.BETWEEN, Operator.GREATER, Operator.SMALLER, Operator.IS_SET, Operator.IS_NOT_SET);
+	
+	private AttributeDefinition attributeDefinition;
+
+	private Operator operator;
+	private Comparable<Number> value1;
+	private Comparable<Number> value2;
+	
+	
+	
+	public NumberFilter(Operator operator, BigInteger value1, BigInteger value2, 
+			AttributeDefinitionInteger attributeDefinition) {
+		init(operator, value1, value2, attributeDefinition);
+	}
+	
+	public NumberFilter(Operator operator, Double value1, Double value2, 
+			AttributeDefinitionReal attributeDefinition) {
+		init(operator, value1, value2, attributeDefinition);
+	}
+
+	/**
+	 * TODO (mj) How about abandoning the above two constructors in favor of
+	 * this one? Maybe after adding some sanity checks.
+	 */
+	public NumberFilter(Operator operator, Number value1, Number value2,
+			AttributeDefinition attributeDefinition) {
+		
+		init(operator, (Comparable<? extends Number>) value1,
+				(Comparable<? extends Number>) value2, attributeDefinition);
+	}
+	
+	/**
+	 * 
+	 * @param operator 
+	 * @param value1 the value used for all operations. For the BETWEEN operation this is the lower value
+	 * @param value2 If operation is BETWEEN, this is the upper bound. Otherwise this parameter is ignored
+	 * @param attributeDefinition
+	 */
+	@SuppressWarnings("unchecked")
+	private void init(Operator operator, Comparable<? extends Number> value1, Comparable<? extends Number> value2, 
+			AttributeDefinition attributeDefinition) {
+		
+		// ensure that operator is supported
+		if (!SUPPORTED_OPERATORS.contains(operator)){
+				throw new IllegalArgumentException(
+						"This filter does not support the " + operator.toString()
+								+ " operation");
+		};
+		
+		// ensure that value1 is not null
+		if (null == value1 && operator != Operator.IS_SET && operator != Operator.IS_NOT_SET  ){
+			throw new IllegalArgumentException(
+					"value1 can not be null");
+		}
+		
+		// ensure that value2 is not null for operations that need two parameters
+		if (operator.equals(IFilter.Operator.BETWEEN)) {
+			if (null == value2) {
+				throw new IllegalArgumentException("value2 can not be null");
+			}
+		}
+		
+		
+		this.attributeDefinition = attributeDefinition;
+		this.operator = operator;
+		this.value1 =  (Comparable<Number>) value1;
+		this.value2 =  (Comparable<Number>) value2;
+	}
+	
+
+
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		if (operator == Operator.IS_SET || operator == Operator.IS_NOT_SET){
+			return super.match(element);
+		}
+		
+		
+		Number theValue = getTheValue(element);
+		
+		
+		if (theValue == null){
+			/* Check if there is any default value for this attribute */
+			theValue = getDefaultValue(element);
+		}
+		
+		
+		if (theValue == null){
+			if (operator.equals(Operator.IS_NOT)){
+				return true;
+			}
+			return false;
+		}
+	
+		
+		switch (operator) {
+		case IS:
+			return value1.compareTo(theValue) == 0;
+		case IS_NOT:
+			return value1.compareTo(theValue) != 0;
+		case BETWEEN:
+			return value1.compareTo(theValue) <= 0 && value2.compareTo(theValue) >= 0;
+		case GREATER:
+			return value1.compareTo(theValue) <= 0;
+		case SMALLER:
+			return value1.compareTo(theValue) >= 0;
+			
+		default:
+			throw new IllegalArgumentException(
+					"This filter does not support the " + this.operator
+							+ " operation");
+		}
+		
+	}
+	
+	private Number getDefaultValue(SpecElementWithAttributes element) {
+		if (!AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+			return null;
+		}
+		
+		if (attributeDefinition instanceof AttributeDefinitionInteger) {
+			AttributeDefinitionInteger ad = (AttributeDefinitionInteger) attributeDefinition;
+			if (!ad.isSetDefaultValue()){
+				return null;
+			}
+			if (!ad.getDefaultValue().isSetTheValue()){
+				return null;
+			}
+			return ad.getDefaultValue().getTheValue(); 
+		}
+		if (attributeDefinition instanceof AttributeDefinitionReal) {
+			AttributeDefinitionReal ad = (AttributeDefinitionReal) attributeDefinition;
+			if (!ad.isSetDefaultValue()){
+				return null;
+			}
+			if (!ad.getDefaultValue().isSetTheValue()){
+				return null;
+			}
+			return ad.getDefaultValue().getTheValue();
+		}
+		throw new IllegalStateException("Expected an AttributeDefinitionInteger or AttributeDefinitionReal as attribute but found " + attributeDefinition.getClass());
+	}
+
+	private Number getTheValue(SpecElementWithAttributes element){
+		if (attributeDefinition instanceof AttributeDefinitionInteger){
+			AttributeValueInteger attributeValue = (AttributeValueInteger) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+			if (attributeValue == null || !attributeValue.isSetTheValue()){
+				return null;
+			}
+			return attributeValue.getTheValue();
+		}
+		if (attributeDefinition instanceof AttributeDefinitionReal){
+			AttributeValueReal attributeValue = (AttributeValueReal) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+			if (attributeValue == null || !attributeValue.isSetTheValue()){
+				return null;
+			}
+			return attributeValue.getTheValue();
+		}
+		else{
+			throw new IllegalArgumentException("SpecElementType is not supported");
+		}
+	}
+
+	@Override
+	public AttributeDefinition getAttribute() {
+		return attributeDefinition;
+	}
+
+	@Override
+	public Operator getOperator() {
+		return operator;
+	}
+
+	@Override
+	public Number getFilterValue1() {
+		return (Number) value1;
+	}
+
+	@Override
+	public Number getFilterValue2() {
+		return (Number) value2;
+	}
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+	
+	
+
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/SimpleCompoundFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/SimpleCompoundFilter.java
new file mode 100644
index 0000000..0a71ee0
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/SimpleCompoundFilter.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+
+import com.google.common.collect.ImmutableSet;
+
+
+/**
+ * A filter that is composed of other Filters. 
+ * 
+ * The match method is an AND or OR composition of other filters. 
+ *
+ */
+
+public class SimpleCompoundFilter implements IFilter {
+
+	
+	private boolean orFilter;
+	private final List<IFilter> filters;	
+	
+	/**
+	 * 
+	 * @param filters
+	 *            the list of filters to apply to the SpecObject
+	 * 
+	 * @param orFilter
+	 *            if true the match method will return true if any of the
+	 *            filters returns true.
+	 *            if false the match method will return true if ALL of the
+	 *            filters return true.
+	 * 
+	 */
+	public SimpleCompoundFilter(List<IFilter> filters, boolean orFilter) {
+		this.orFilter = orFilter ;
+		this.filters = new LinkedList<IFilter>(filters);
+	}
+	
+	public boolean isOrFilter() {
+		return orFilter;
+	}
+	
+	public List<IFilter> getFilters() {
+		return Collections.unmodifiableList(filters);
+	}
+	
+	
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		for (IFilter filter : filters) {
+			boolean match = filter.match(element);
+			if (orFilter) {
+				if (match) return true;
+			} else {
+				if (! match) return false;
+			}
+		}
+
+		// If we don't know by now:
+		return ! orFilter;
+	}
+
+	@Override
+	public Object getAttribute() {
+		return null;
+	}
+
+	@Override
+	public Operator getOperator() {
+		return null;
+	}
+
+
+	@Override
+	public Object getFilterValue1() {
+		return null;
+	}
+
+	@Override
+	public Object getFilterValue2() {
+		return null;
+	}
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return null;
+	}
+
+	
+	public String toString(){
+		StringBuilder sb = new StringBuilder();
+		String op = orFilter ? " OR " : " AND ";
+		for (Iterator<IFilter> iterator = filters.iterator(); iterator.hasNext();) {
+			IFilter filter = (IFilter) iterator.next();
+			
+			sb.append(filter.toString());
+			if (iterator.hasNext()){
+				sb.append(op + System.getProperty("line.separator"));
+			}
+		}
+		return sb.toString();
+	}
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/StringFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/StringFilter.java
new file mode 100644
index 0000000..842624f
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/StringFilter.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionString;
+import org.eclipse.rmf.reqif10.AttributeValueString;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * Filter for String-based values.
+ */
+public class StringFilter extends AbstractTextFilter {
+
+	// TODO cross-check this with supported operators.
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.EQUALS, Operator.NOT_EQUALS,
+					Operator.CONTAINS, Operator.NOT_CONTAINS, Operator.REGEXP, Operator.IS_SET, Operator.IS_NOT_SET);
+
+	/**
+	 * Constructor used to create a filter for an
+	 * {@link AttributeDefinitionString}
+	 * 
+	 * @param operator
+	 *            the filter operator to use
+	 * @param value
+	 *            the value to match
+	 * @param attributeDefinition
+	 *            the attributeDefinition that defines the value of a SpecObject
+	 *            that should be matched
+	 * @param caseSensitive
+	 */
+	public StringFilter(Operator operator, String value,
+			AttributeDefinitionString attributeDefinition, boolean caseSensitive) {
+		super(operator, value, null, (AttributeDefinition) attributeDefinition,
+				caseSensitive);
+	}
+
+	/**
+	 * Constructor used to create a filter for an {@link InternalAttribute}
+	 * 
+	 * @param operator
+	 *            the filter operator to use
+	 * @param value
+	 *            the value to match
+	 * @param attributeDefinition
+	 *            the attributeDefinition that defines the value of a SpecObject
+	 *            that should be matched
+	 * @param caseSensitive
+	 */
+	public StringFilter(Operator operator, String value,
+			InternalAttribute internalFeature, boolean caseSensitive) {
+		super(operator, value, internalFeature, null, caseSensitive);
+	}
+
+	/**
+	 * return the value of the Internal Attribute that is defined by
+	 * internalAttribute
+	 * 
+	 * @return
+	 */
+	protected String getInternalAttributeValue(SpecElementWithAttributes element) {
+		switch (internalAttribute) {
+		case IDENTIFIER:
+			return element.isSetIdentifier() ? element.getIdentifier() : null;
+		case DESC:
+			return element.isSetDesc() ? element.getDesc() : null;
+		case LONG_NAME:
+			return element.isSetLongName() ? element.getLongName() : null;
+		default:
+			throw new UnsupportedOperationException();
+		}
+	}
+
+	@Override
+	protected String getAttributeValue(SpecElementWithAttributes element) {
+		AttributeValueString attributeValue = (AttributeValueString) ReqIF10Util
+				.getAttributeValue(element, attributeDefinition);
+		if (attributeValue == null) {
+			return null;
+		}
+
+		return attributeValue.getTheValue();
+	}
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+
+	@Override
+	protected String getDefaultValue(SpecElementWithAttributes element) {
+		if (!AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+			return null;
+		}
+		
+		if (attributeDefinition instanceof AttributeDefinitionString) {
+			AttributeDefinitionString ad = (AttributeDefinitionString) attributeDefinition;
+			return ad.isSetDefaultValue() ? ad.getDefaultValue().getTheValue() : null;
+		}
+		throw new IllegalStateException("Expected an AttributeDefinitionString as attribute but found " + attributeDefinition.getClass());
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/XhtmlFilter.java b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/XhtmlFilter.java
new file mode 100644
index 0000000..a246049
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.search/src/org/eclipse/rmf/reqif10/search/filter/XhtmlFilter.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Formal Mind GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Ingo Weigelt - initial API and implementation
+ *     Michael Jastram - adding SUPPORTED_OPERATIONS
+ ******************************************************************************/
+package org.eclipse.rmf.reqif10.search.filter;
+
+import java.io.IOException;
+
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
+import org.eclipse.rmf.reqif10.AttributeValueXHTML;
+import org.eclipse.rmf.reqif10.SpecElementWithAttributes;
+import org.eclipse.rmf.reqif10.XhtmlContent;
+import org.eclipse.rmf.reqif10.common.util.ProrXhtmlSimplifiedHelper;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10XhtmlUtil;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+/**
+ * Filter for String-based values.
+ */
+public class XhtmlFilter extends AbstractTextFilter {
+
+	// TODO cross-check this with supported operators.
+	public static final ImmutableSet<Operator> SUPPORTED_OPERATORS = Sets
+			.immutableEnumSet(Operator.CONTAINS, Operator.NOT_CONTAINS,
+					Operator.REGEXP, Operator.REGEXP_PLAIN, Operator.IS_SET, Operator.IS_NOT_SET);
+
+
+	public XhtmlFilter(Operator operator, String value,
+			AttributeDefinitionXHTML attributeDefinition, boolean caseSensitive) {
+		super(operator, value, attributeDefinition, caseSensitive);
+	}
+	
+	
+	private XhtmlFilter(Operator operator, String value,
+			InternalAttribute internalFeature, boolean caseSensitive) {
+		super(operator, value, internalFeature, (AttributeDefinition) null, caseSensitive);
+		throw new InstantiationError("The XhtmlFilter does not support internalFeature."); //$NON-NLS-1$
+	}
+	
+
+	@Override
+	public boolean match(SpecElementWithAttributes element) {
+		if (operator.equals(Operator.REGEXP_PLAIN)){
+			AttributeValueXHTML attributeValue = (AttributeValueXHTML) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+			
+			XhtmlContent theValue = null;
+					
+			if (attributeValue != null){
+				theValue = attributeValue.getTheValue();
+			}
+			
+			if (theValue == null){
+				theValue = getDefaultXhtmlContent(element);
+			}
+			
+			String simplifiedString;
+			if (theValue == null){
+				// according to the spec a regexp_plain match on on an empty
+				// value is equivalent to "regexp applied to empty string"
+				simplifiedString = "";
+			}else{
+				simplifiedString = ProrXhtmlSimplifiedHelper.xhtmlToSimplifiedString(theValue);
+			}
+			
+			//System.out.println(simplifiedString);
+			
+			return matchRegexp(simplifiedString);
+		}else{
+			return super.match(element);
+		}
+	}
+
+
+	@Override
+	protected String getInternalAttributeValue(SpecElementWithAttributes element) {
+		// There are no internal features of type Xhtml
+		return null;
+	}
+
+
+	@Override
+	protected String getAttributeValue(SpecElementWithAttributes element) {
+		AttributeValueXHTML attributeValue = (AttributeValueXHTML) ReqIF10Util.getAttributeValue(element, attributeDefinition);
+		if (attributeValue == null){
+			return null;
+		}
+		XhtmlContent xhtmlContent = attributeValue.getTheValue();
+		try {
+			return ReqIF10XhtmlUtil.getXhtmlString(xhtmlContent);
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+
+	@Override
+	public ImmutableSet<Operator> getSupportedOperators() {
+		return SUPPORTED_OPERATORS;
+	}
+
+	
+	/**
+	 * returns the NON-simplified default Value
+	 */
+	@Override
+	protected String getDefaultValue(SpecElementWithAttributes element) {
+		if (!AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+			return null;
+		}
+		
+		try {
+			XhtmlContent xhtmlContent = getDefaultXhtmlContent(element);
+			return xhtmlContent == null ? null : ReqIF10XhtmlUtil.getXhtmlString(xhtmlContent);
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}	 
+	}
+	
+	
+	private XhtmlContent getDefaultXhtmlContent(SpecElementWithAttributes element) {
+		if (!AbstractAttributeFilter.isSetAttribute(element, attributeDefinition)){
+			return null;
+		}
+		
+		if (attributeDefinition instanceof AttributeDefinitionXHTML) {
+			AttributeDefinitionXHTML ad = (AttributeDefinitionXHTML) attributeDefinition;
+			return (ad.isSetDefaultValue() ? ad.getDefaultValue().getTheValue() : null);
+		}
+		throw new IllegalStateException("Expected an AttributeDefinitionString as attribute but found " + attributeDefinition.getClass());
+	}
+	
+	
+
+}
diff --git a/org.eclipse.rmf.reqif10.serialization/META-INF/MANIFEST.MF b/org.eclipse.rmf.reqif10.serialization/META-INF/MANIFEST.MF
index e074096..b5ba76f 100644
--- a/org.eclipse.rmf.reqif10.serialization/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.reqif10.serialization/META-INF/MANIFEST.MF
@@ -4,9 +4,9 @@
 Bundle-SymbolicName: org.eclipse.rmf.reqif10.serialization;singleton:=true
 Bundle-Version: 0.12.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.rmf.serialization;bundle-version="0.9.0",
- org.eclipse.rmf.reqif10;bundle-version="0.9.0",
- org.eclipse.rmf.reqif10.xhtml;bundle-version="0.9.0"
+Require-Bundle: org.eclipse.rmf.reqif10;bundle-version="0.9.0",
+ org.eclipse.rmf.reqif10.xhtml;bundle-version="0.9.0",
+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"
 Export-Package: org.eclipse.rmf.reqif10.serialization
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/org.eclipse.rmf.reqif10.serialization/about.html b/org.eclipse.rmf.reqif10.serialization/about.html
index c258ef5..e3d3073 100644
--- a/org.eclipse.rmf.reqif10.serialization/about.html
+++ b/org.eclipse.rmf.reqif10.serialization/about.html
@@ -24,5 +24,27 @@
 indicated below, the terms and conditions of the EPL still apply to any source code in the Content
 and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
 
+<h3>Third Party Content</h3>
+
+The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor's license for terms and conditions of use.
+
+<h4>Subset of W3C XHTML Modularization, version 1.1</h4>
+
+<p>The plug-in includes XSD Schema files developed by the <a href="http://www.w3.org">W3C</a></p>
+
+<p>Your use of these XSD Schema files is governed by the terms and conditions of the <a href="about_files/W3CLicense.html">W3C Software License</a>.</p>
+
+<p>The W3C XHTML Modularization Schema files can be downloaded from the <a href="http://www.w3.org/TR/xhtml-modularization/">W3C XHTML Modularization Website</a>.</p>
+<p>The W3C namespace Schema file can be downloaded from the <a href="http://www.w3.org/2004/10/xml.xsd">W3C Namespace Website</a>.</p>
+
+
+<h4>OMG ReqIF XML Schema Files, version 1.0.1</h4>
+
+<p>The plug-in includes ReqIF XSD Schema files developed by the <a href="http://www.omg.org">Object Management Group (OMG)</a></p>
+
+<p>Your use of these ReqIF XSD Schema files is governed by the terms and conditions of the Object Management Group License.</p>
+
+<p>The ReqIF XSD Schema files can be downloaded from the <a href="http://www.omg.org/spec/ReqIF/1.0.1/">OMG ReqIF Website</a>.</p>
+
 </body>
 </html>
\ No newline at end of file
diff --git a/org.eclipse.rmf.reqif10.serialization/about_files/W3CLicense.html b/org.eclipse.rmf.reqif10.serialization/about_files/W3CLicense.html
new file mode 100644
index 0000000..0c357a1
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.serialization/about_files/W3CLicense.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+   <title>W3C Software Notice and License</title>
+</head>
+
+<body id="www-w3-org" class="w3c_public">
+
+
+<div id="w3c_container">
+    
+    
+
+
+               <h1 class="title">W3C Software Notice and License</h1>
+               <div id="w3c_content_body">
+                  <div class="line">
+                     <p class="intro tPadding">This work (and included software, documentation such as READMEs, or other
+related items) is being provided by the copyright holders under the following
+license.</p>
+<h2>License</h2>
+                     
+                     <p class="tPadding">
+By obtaining, using and/or copying this work, you (the licensee)
+agree that you have read, understood, and will comply with the following
+terms and conditions.</p>
+
+                     <p>Permission to copy, modify, and distribute this software and its
+documentation, with or without modification,&#xA0;for any purpose and without
+fee or royalty is hereby granted, provided that you include the following on
+ALL copies of the software and documentation or portions thereof, including
+modifications:</p>
+
+                     <ul class="show_items"><li>The full text of this NOTICE in a location viewable to users of the
+    redistributed or derivative work.</li><li>Any pre-existing intellectual property disclaimers, notices, or terms
+    and conditions. If none exist, the <a href="copyright-software-short-notice-20021231.html">W3C Software Short
+    Notice</a> should be included (hypertext is preferred, text is permitted)
+    within the body of any redistributed or derivative code.</li><li>Notice of any changes or modifications to the files, including the date
+    changes were made. (We recommend you provide URIs to the location from
+    which the code is derived.)</li></ul>
+
+<h2>Disclaimers</h2>
+
+                     <p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+                     <p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.</p>
+
+                     <p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific, written
+prior permission. Title to copyright in this software and any associated
+documentation will at all times remain with copyright holders.</p>
+
+                     <h2>Notes</h2>
+
+	                    <p>This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</p>
+
+                     <p>This formulation of W3C's notice and license became active on December 31
+2002. This version removes the copyright ownership notice such that this
+license can be used with materials other than those owned by the W3C,
+reflects that ERCIM is now a host of the W3C, includes references to this
+specific dated version of the license, and removes the ambiguous grant of
+"use". Otherwise, this version is the same as the <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">previous
+version</a> and is written so as to preserve the <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">Free
+Software Foundation's assessment of GPL compatibility</a> and <a href="http://www.opensource.org/licenses/W3C.php">OSI's certification</a>
+under the <a href="http://www.opensource.org/docs/definition.php">Open Source
+Definition</a>.</p>
+                  </div>
+               </div>
+            </div>
+         </div>
+      </div></body></html>
diff --git a/org.eclipse.rmf.reqif10.serialization/build.properties b/org.eclipse.rmf.reqif10.serialization/build.properties
index 7900be1..5bfc571 100644
--- a/org.eclipse.rmf.reqif10.serialization/build.properties
+++ b/org.eclipse.rmf.reqif10.serialization/build.properties
@@ -25,7 +25,8 @@
                plugin.xml,\
                about.html,\
                epl-v10.html,\
-               notice.html
+               notice.html,\
+               about_files/
 jars.compile.order = .
 source.. = src/
 output.. = bin/
diff --git a/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10LoadImpl.java b/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10LoadImpl.java
new file mode 100644
index 0000000..ac0e327
--- /dev/null
+++ b/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10LoadImpl.java
@@ -0,0 +1,74 @@
+package org.eclipse.rmf.reqif10.serialization;
+
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.ContentHandler;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.PackageNotFoundException;
+import org.eclipse.emf.ecore.xmi.XMLHelper;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingHandler;
+import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingLoadImpl;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class ReqIF10LoadImpl extends XMLPersistenceMappingLoadImpl {
+
+	public ReqIF10LoadImpl(XMLHelper helper) {
+		super(helper);
+	}
+	
+	/**
+	 * creates XML default handler that searches for EPackages in the registry, only.
+	 * It doesn't try to find a not registered EPackage by loading the content of the namespace URI.
+	 */
+	@Override
+	protected DefaultHandler makeDefaultHandler() {
+		XMLPersistenceMappingHandler handler = new XMLPersistenceMappingHandler(resource, helper, options) {
+			@Override
+			protected EPackage getPackageForURI(String uriString) {
+			    if (uriString == null)
+			    {
+			      return null;
+			    }
+
+			    EPackage ePackage = 
+			      extendedMetaData == null ?
+			        packageRegistry.getEPackage(uriString) :
+			        extendedMetaData.getPackage(uriString);
+
+			    if (ePackage != null && ePackage.eIsProxy())
+			    {
+			      ePackage = null;
+			    }
+
+
+			    if (ePackage == null)
+			    {
+			      ePackage = handleMissingPackage(uriString);
+			    }
+
+			    if (ePackage == null)
+			    {
+			      error
+			        (new PackageNotFoundException
+			           (uriString,
+			            getLocation(),
+			            getLineNumber(),
+			            getColumnNumber()));
+			    }
+
+			    return ePackage;
+
+			}
+		};
+
+		return handler;
+	}
+
+}
diff --git a/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10ResourceImpl.java b/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10ResourceImpl.java
index 06d1e0b..991c169 100644
--- a/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10ResourceImpl.java
+++ b/org.eclipse.rmf.reqif10.serialization/src/org/eclipse/rmf/reqif10/serialization/ReqIF10ResourceImpl.java
@@ -16,14 +16,19 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.xmi.XMLLoad;
 import org.eclipse.emf.ecore.xmi.XMLResource;
 import org.eclipse.emf.ecore.xmi.XMLSave;
 import org.eclipse.emf.ecore.xmi.impl.XMLMapImpl;
-import org.eclipse.rmf.internal.serialization.XMLPersistenceMappingSaveImpl;
+import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingLoadImpl;
+import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingSaveImpl;
 import org.eclipse.rmf.reqif10.Identifiable;
 import org.eclipse.rmf.reqif10.ReqIF10Package;
 import org.eclipse.rmf.reqif10.xhtml.XhtmlPackage;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingExtendedMetaData;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingExtendedMetaDataImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceImpl;
 
 public class ReqIF10ResourceImpl extends XMLPersistenceMappingResourceImpl {
 
@@ -35,15 +40,21 @@
 		super(uri);
 	}
 
+	
+	/**
+	 * the resource expects all relevant EPackages to be registered before loading the resource.
+	 * This avoids delays and errors by network lookups for EPackages by their namespace URI
+	 */
 	@Override
 	public void initDefaultOptions() {
 		super.initDefaultOptions();
+				
 		// ========= create options map===================
 		final XMLResource.XMLMap optionsMap = new XMLMapImpl();
 		optionsMap
 				.setIDAttributeName(ReqIF10Package.Literals.IDENTIFIABLE__IDENTIFIER
 						.getName().toUpperCase());
-
+				
 		// ========= default save options ===================
 		Map<Object, Object> saveOptions = getDefaultSaveOptions();
 		Map<String, String> namespaceToPrefixMap = new HashMap<String, String>();
@@ -128,4 +139,9 @@
 	public void setIsLoading(boolean isLoading) {
 		this.isLoading = isLoading;
 	}
+	
+	@Override
+	protected XMLLoad createXMLLoad() {
+		return new ReqIF10LoadImpl(createXMLHelper());
+	}
 }
diff --git a/org.eclipse.rmf.reqif10.xhtml/plugin.xml b/org.eclipse.rmf.reqif10.xhtml/plugin.xml
index 2386793..87fc135 100644
--- a/org.eclipse.rmf.reqif10.xhtml/plugin.xml
+++ b/org.eclipse.rmf.reqif10.xhtml/plugin.xml
@@ -23,12 +23,6 @@
             genModel="model/xhtml.genmodel"/>
    </extension>
 
-   <extension point="org.eclipse.emf.ecore.extension_parser">
-      <!-- @generated xhtml -->
-      <parser
-            type="xhtml"
-            class="org.eclipse.rmf.reqif10.xhtml.util.XhtmlResourceFactoryImpl"/>
-   </extension>
 
    <extension point="org.eclipse.emf.ecore.generated_package">
       <!-- @generated xhtml -->
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceFactoryImpl.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceFactoryImpl.java
deleted file mode 100644
index 4ac7143..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceFactoryImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.datatypes.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
-
-/**
- * <!-- begin-user-doc --> The <b>Resource Factory</b> associated with the package. <!-- end-user-doc -->
- * 
- * @see org.eclipse.rmf.reqif10.datatypes.util.DatatypesResourceImpl
- * @generated
- */
-public class DatatypesResourceFactoryImpl extends ResourceFactoryImpl {
-	/**
-	 * Creates an instance of the resource factory. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public DatatypesResourceFactoryImpl() {
-		super();
-	}
-
-	/**
-	 * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	public Resource createResource(URI uri) {
-		Resource result = new DatatypesResourceImpl(uri);
-		return result;
-	}
-
-} // DatatypesResourceFactoryImpl
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceImpl.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceImpl.java
deleted file mode 100644
index e99b0f1..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesResourceImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.datatypes.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
-
-/**
- * <!-- begin-user-doc --> The <b>Resource </b> associated with the package. <!-- end-user-doc -->
- * 
- * @see org.eclipse.rmf.reqif10.datatypes.util.DatatypesResourceFactoryImpl
- * @generated
- */
-public class DatatypesResourceImpl extends XMLResourceImpl {
-	/**
-	 * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @param uri
-	 *            the URI of the new resource.
-	 * @generated
-	 */
-	public DatatypesResourceImpl(URI uri) {
-		super(uri);
-	}
-
-} // DatatypesResourceImpl
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesXMLProcessor.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesXMLProcessor.java
deleted file mode 100644
index 09100be..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/datatypes/util/DatatypesXMLProcessor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.datatypes.util;
-
-import java.util.Map;
-
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
-import org.eclipse.rmf.reqif10.datatypes.DatatypesPackage;
-
-/**
- * This class contains helper methods to serialize and deserialize XML documents <!-- begin-user-doc --> <!--
- * end-user-doc -->
- * 
- * @generated
- */
-public class DatatypesXMLProcessor extends XMLProcessor {
-
-	/**
-	 * Public constructor to instantiate the helper. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public DatatypesXMLProcessor() {
-		super((EPackage.Registry.INSTANCE));
-		DatatypesPackage.eINSTANCE.eClass();
-	}
-
-	/**
-	 * Register for "*" and "xml" file extensions the DatatypesResourceFactoryImpl factory. <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	protected Map<String, Resource.Factory> getRegistrations() {
-		if (registrations == null) {
-			super.getRegistrations();
-			registrations.put(XML_EXTENSION, new DatatypesResourceFactoryImpl());
-			registrations.put(STAR_EXTENSION, new DatatypesResourceFactoryImpl());
-		}
-		return registrations;
-	}
-
-} // DatatypesXMLProcessor
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceFactoryImpl.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceFactoryImpl.java
deleted file mode 100644
index 343d4bf..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceFactoryImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.xhtml.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-
-/**
- * <!-- begin-user-doc --> The <b>Resource Factory</b> associated with the package. <!-- end-user-doc -->
- * 
- * @see org.eclipse.rmf.reqif10.xhtml.util.XhtmlResourceImpl
- * @generated
- */
-public class XhtmlResourceFactoryImpl extends ResourceFactoryImpl {
-	/**
-	 * Creates an instance of the resource factory. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public XhtmlResourceFactoryImpl() {
-		super();
-	}
-
-	/**
-	 * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	public Resource createResource(URI uri) {
-		XMLResource result = new XhtmlResourceImpl(uri);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
-		return result;
-	}
-
-} // XhtmlResourceFactoryImpl
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceImpl.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceImpl.java
deleted file mode 100644
index a5fd8f4..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlResourceImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.xhtml.util;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
-
-/**
- * <!-- begin-user-doc --> The <b>Resource </b> associated with the package. <!-- end-user-doc -->
- * 
- * @see org.eclipse.rmf.reqif10.xhtml.util.XhtmlResourceFactoryImpl
- * @generated
- */
-public class XhtmlResourceImpl extends XMLResourceImpl {
-	/**
-	 * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @param uri
-	 *            the URI of the new resource.
-	 * @generated
-	 */
-	public XhtmlResourceImpl(URI uri) {
-		super(uri);
-	}
-
-} // XhtmlResourceImpl
diff --git a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlXMLProcessor.java b/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlXMLProcessor.java
deleted file mode 100644
index 9af32b0..0000000
--- a/org.eclipse.rmf.reqif10.xhtml/src/org/eclipse/rmf/reqif10/xhtml/util/XhtmlXMLProcessor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.reqif10.xhtml.util;
-
-import java.util.Map;
-
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
-import org.eclipse.rmf.reqif10.xhtml.XhtmlPackage;
-
-/**
- * This class contains helper methods to serialize and deserialize XML documents <!-- begin-user-doc --> <!--
- * end-user-doc -->
- * 
- * @generated
- */
-public class XhtmlXMLProcessor extends XMLProcessor {
-
-	/**
-	 * Public constructor to instantiate the helper. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public XhtmlXMLProcessor() {
-		super((EPackage.Registry.INSTANCE));
-		XhtmlPackage.eINSTANCE.eClass();
-	}
-
-	/**
-	 * Register for "*" and "xml" file extensions the XhtmlResourceFactoryImpl factory. <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	protected Map<String, Resource.Factory> getRegistrations() {
-		if (registrations == null) {
-			super.getRegistrations();
-			registrations.put(XML_EXTENSION, new XhtmlResourceFactoryImpl());
-			registrations.put(STAR_EXTENSION, new XhtmlResourceFactoryImpl());
-		}
-		return registrations;
-	}
-
-} // XhtmlXMLProcessor
diff --git a/org.eclipse.rmf.serialization/.gitignore b/org.eclipse.rmf.serialization/.gitignore
deleted file mode 100644
index 70db735..0000000
--- a/org.eclipse.rmf.serialization/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-target
-work
\ No newline at end of file
diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.core.resources.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 845273e..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-eclipse.preferences.version=1

-encoding//design/default.ecore=UTF-8

-encoding//design/resources.ecore_diagram=UTF-8

-encoding/<project>=UTF-8

diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 54de855..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,372 +0,0 @@
-#Thu Apr 12 17:16:42 CEST 2012

-eclipse.preferences.version=1

-org.eclipse.jdt.core.codeComplete.argumentPrefixes=

-org.eclipse.jdt.core.codeComplete.argumentSuffixes=

-org.eclipse.jdt.core.codeComplete.fieldPrefixes=

-org.eclipse.jdt.core.codeComplete.fieldSuffixes=

-org.eclipse.jdt.core.codeComplete.localPrefixes=

-org.eclipse.jdt.core.codeComplete.localSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.5

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

-org.eclipse.jdt.core.compiler.problem.deadCode=warning

-org.eclipse.jdt.core.compiler.problem.deprecation=warning

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning

-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

-org.eclipse.jdt.core.compiler.problem.nullReference=ignore

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=warning

-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

-org.eclipse.jdt.core.compiler.source=1.5

-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_assignment=0

-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80

-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0

-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80

-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16

-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16

-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_after_package=1

-org.eclipse.jdt.core.formatter.blank_lines_before_field=0

-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

-org.eclipse.jdt.core.formatter.blank_lines_before_method=1

-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

-org.eclipse.jdt.core.formatter.blank_lines_before_package=0

-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true

-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true

-org.eclipse.jdt.core.formatter.comment.format_block_comments=true

-org.eclipse.jdt.core.formatter.comment.format_header=false

-org.eclipse.jdt.core.formatter.comment.format_html=true

-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true

-org.eclipse.jdt.core.formatter.comment.format_line_comments=true

-org.eclipse.jdt.core.formatter.comment.format_source_code=true

-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true

-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true

-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert

-org.eclipse.jdt.core.formatter.comment.line_length=120

-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true

-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true

-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false

-org.eclipse.jdt.core.formatter.compact_else_if=true

-org.eclipse.jdt.core.formatter.continuation_indentation=2

-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off

-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_empty_lines=false

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false

-org.eclipse.jdt.core.formatter.indentation.size=4

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert

-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert

-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert

-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

-org.eclipse.jdt.core.formatter.join_lines_in_comments=true

-org.eclipse.jdt.core.formatter.join_wrapped_lines=true

-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

-org.eclipse.jdt.core.formatter.lineSplit=150

-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false

-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false

-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true

-org.eclipse.jdt.core.formatter.tabulation.char=tab

-org.eclipse.jdt.core.formatter.tabulation.size=4

-org.eclipse.jdt.core.formatter.use_on_off_tags=false

-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true

-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 94bcd86..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,120 +0,0 @@
-#Wed Apr 04 18:47:36 CEST 2012
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_to_enhanced_for_loop=true
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=false
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=false
-cleanup.remove_unused_private_types=false
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_blocks=true
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_parentheses_in_expressions=true
-cleanup.use_this_for_non_static_field_access=true
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=true
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_Unmanaged profile 'RMF'
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_RMF
-formatter_settings_version=12
-org.eclipse.jdt.ui.exception.name=ex
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;com;
-org.eclipse.jdt.ui.javadoc=false
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\n * &lt;copyright&gt;\n * \n * Copyright (c) {contributing company name} and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n * \n * Contributors\: \n *     {contributing company name} - Initial API and implementation\n * \n * &lt;/copyright&gt;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/*\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=false
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=true
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=false
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=false
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=true
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=false
-sp_cleanup.remove_unused_private_types=false
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=true
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=true
-sp_cleanup.use_this_for_non_static_field_access=true
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=true
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index ac5f8a2..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 04 18:47:53 CEST 2012
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.pde.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index 546490c..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,33 +0,0 @@
-#Wed Apr 04 18:47:36 CEST 2012
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.build.bin.includes=1
-compilers.p.build.encodings=2
-compilers.p.build.java.compiler=2
-compilers.p.build.java.compliance=1
-compilers.p.build.missing.output=2
-compilers.p.build.output.library=1
-compilers.p.build.source.library=1
-compilers.p.build.src.includes=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=1
-compilers.p.internal=1
-compilers.p.missing-packages=2
-compilers.p.missing-version-export-package=2
-compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=2
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=1
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.s.create-docs=false
-compilers.s.doc-folder=doc
-compilers.s.open-tags=1
-eclipse.preferences.version=1
diff --git a/org.eclipse.rmf.serialization/.settings/org.eclipse.wst.xml.core.prefs b/org.eclipse.rmf.serialization/.settings/org.eclipse.wst.xml.core.prefs
deleted file mode 100644
index 2f885f5..0000000
--- a/org.eclipse.rmf.serialization/.settings/org.eclipse.wst.xml.core.prefs
+++ /dev/null
@@ -1,18 +0,0 @@
-#Wed Apr 04 18:48:00 CEST 2012
-attributeHasNoValue=2
-eclipse.preferences.version=1
-endTagWithAttributes=2
-honourAllSchemaLocations=true
-indicateNoGrammar=1
-indiciateNoDocumentElement=-1
-markupValidation=true
-missingClosingBracket=2
-missingClosingQuote=2
-missingEndTag=2
-missingQuotes=2
-missingStartTag=2
-missingTagName=2
-namespaceInPITarget=2
-whitespaceAtStart=2
-whitespaceBeforeTagName=2
-xinclude=true
diff --git a/org.eclipse.rmf.serialization/META-INF/MANIFEST.MF b/org.eclipse.rmf.serialization/META-INF/MANIFEST.MF
deleted file mode 100644
index b2da13f..0000000
--- a/org.eclipse.rmf.serialization/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: org.eclipse.rmf.serialization;singleton:=true
-Bundle-Version: 0.12.0.qualifier
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.apache.xerces,
- org.eclipse.emf.ecore;bundle-version="2.7.0",
- org.eclipse.emf.ecore.xmi;bundle-version="2.7.0"
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.rmf.internal.serialization,
- org.eclipse.rmf.serialization
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
diff --git a/org.eclipse.rmf.serialization/about.html b/org.eclipse.rmf.serialization/about.html
deleted file mode 100644
index c258ef5..0000000
--- a/org.eclipse.rmf.serialization/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/org.eclipse.rmf.serialization/build.properties b/org.eclipse.rmf.serialization/build.properties
deleted file mode 100644
index fe0783d..0000000
--- a/org.eclipse.rmf.serialization/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2014 itemis AG and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Mark Broerkens (itemis AG) - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               epl-v10.html,\
-               notice.html,\
-               about.html
diff --git a/org.eclipse.rmf.serialization/epl-v10.html b/org.eclipse.rmf.serialization/epl-v10.html
deleted file mode 100644
index 3998fce..0000000
--- a/org.eclipse.rmf.serialization/epl-v10.html
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>&quot;Contribution&quot; means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>&quot;Contributor&quot; means any person or entity that distributes
-the Program.</p>
-
-<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>&quot;Program&quot; means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>&quot;Recipient&quot; means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-(&quot;Commercial Contributor&quot;) hereby agrees to defend and
-indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
-against any losses, damages and costs (collectively &quot;Losses&quot;)
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/org.eclipse.rmf.serialization/notice.html b/org.eclipse.rmf.serialization/notice.html
deleted file mode 100644
index c3d34c3..0000000
--- a/org.eclipse.rmf.serialization/notice.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/org.eclipse.rmf.serialization/plugin.properties b/org.eclipse.rmf.serialization/plugin.properties
deleted file mode 100644
index 08b1475..0000000
--- a/org.eclipse.rmf.serialization/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2014 itemis AG and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Mark Broerkens (itemis AG) - initial API and implementation
-###############################################################################
-
-pluginName = RMF Core Serialization (Incubation)
-providerName = Eclipse Modeling Project
diff --git a/org.eclipse.rmf.serialization/pom.xml b/org.eclipse.rmf.serialization/pom.xml
deleted file mode 100644
index a556289..0000000
--- a/org.eclipse.rmf.serialization/pom.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- <copyright>
-Copyright (c) 2012 itemis AG.
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Eclipse Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/epl-v10.html
-
-Contributors:
-    Mark Broerkens - initial API and implementation
- </copyright>
-
--->
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.eclipse.rmf</groupId>
-		<artifactId>org.eclipse.rmf.releng</artifactId>
-		<version>0.12.0-SNAPSHOT</version>
-		<relativePath>../org.eclipse.rmf.releng/pom.xml</relativePath>
-	</parent>
-	<artifactId>org.eclipse.rmf.serialization</artifactId>
-	<packaging>eclipse-plugin</packaging>
-	<groupId>org.eclipse.rmf.plugins</groupId>
-	<properties>
-    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  	</properties>
-</project>
\ No newline at end of file
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHandler.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHandler.java
deleted file mode 100644
index 3058ea0..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHandler.java
+++ /dev/null
@@ -1,1656 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-
-package org.eclipse.rmf.internal.serialization;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.apache.xerces.impl.Constants;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EFactory;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.resource.URIConverter;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-import org.eclipse.emf.ecore.xmi.ClassNotFoundException;
-import org.eclipse.emf.ecore.xmi.FeatureNotFoundException;
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler;
-import org.eclipse.emf.ecore.xml.type.AnyType;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaData;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaDataImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
-
-// TODO: add javadoc for each state chart
-// TODO: add pool that reuses loadpatterns (reduces GC overhead)
-// TODO: assert that extended metadata is available. 
-// TODO: assert that xmlMap is never used
-// TODO: check for correct handling of types, object stacks.
-// TODO: consider using symboltyble and replace .equals by ==
-// TODO: create assertions in case the Handler is not used corretly. e.g. extennded metadata has incorrect format
-// TODO: log info if options are used that are not supported
-public class XMLPersistenceMappingHandler extends SAXXMLHandler {
-	String xsiType;
-
-	XMLPersistenceMappingExtendedMetaData xmlPersistenceMappingExtendedMetaData = null;
-	MyStack<LoadPattern> loadPatternStack = null;
-
-	IProgressMonitor progressMonitor = null;
-	int progressMonitorChunksRead = 0;
-	int progressMonitorChunkSize = 2048;
-	int progressMonitorLastStartInChunk = 0;
-	int progressMonitorNumberOfChunksPerUpdate = 500;
-	private Set<String> progressReportedNamespaces = new HashSet<String>();
-
-	interface LoadPattern {
-		public static int STATE_READY = 0;
-		public static int STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT = 1;
-		public static int STATE_HAS_SEEN_START_FEATURE_ELEMENT = 2;
-		public static int STATE_HAS_SEEN_START_CLASSIFIER_WRAPPER_ELEMENT = 3;
-		public static int STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT = 4;
-		public static int STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT = 5;
-		public static int STATE_HAS_SEEN_END_FEATURE_ELEMENT = 6;
-		public static int STATE_HAS_SEEN_END_CLASSIFIER_WRAPPER_ELEMENT = 7;
-		public static int STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT = 8;
-		public static int STATE_DELEGATE_CHILD_NEEDED = -1;
-		public static int STATE_DELEGATE_PARENT_NEEDED = -2;
-		public static int STATE_DELEGATE_SIBLING_NEEDED = -3;
-
-		public static int STATE_UNEXPECTED_ELEMENT = -100;
-
-		void startElement(String namespace, String xmlName);
-
-		void endElement(String namespace, String xmlName);
-
-		boolean needsDelegateChild();
-
-		boolean needsDelegateSibling();
-
-		boolean needsDelegateParent();
-
-	}
-
-	abstract class AbstractLoadPatternImpl implements LoadPattern {
-		final EObject anchorEObject;
-		final EStructuralFeature feature;
-		int currentState;
-
-		public AbstractLoadPatternImpl(EObject anchorEObject, EStructuralFeature feature) {
-			this.anchorEObject = anchorEObject;
-			this.feature = feature;
-			currentState = STATE_READY;
-		}
-
-		public boolean needsDelegateChild() {
-			return STATE_DELEGATE_CHILD_NEEDED == currentState;
-		}
-
-		public boolean needsDelegateParent() {
-			return STATE_DELEGATE_PARENT_NEEDED == currentState;
-		}
-
-		public boolean needsDelegateSibling() {
-			return STATE_DELEGATE_SIBLING_NEEDED == currentState;
-		}
-
-	}
-
-	class LoadPatternEReferenceContained0001Impl extends AbstractLoadPatternImpl {
-		String classifierName = null;
-
-		public LoadPatternEReferenceContained0001Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				classifierName = xmlName;
-				createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				currentState = STATE_DELEGATE_CHILD_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				if (xmlName.equals(classifierName)) {
-					currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-					createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				// this happens if there are no nested structures
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-				// this happens if there are nested structures
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceContained0100Impl extends AbstractLoadPatternImpl {
-		String featureName;
-
-		public LoadPatternEReferenceContained0100Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				featureName = xmlName;
-				// This puts the newly created eObject onto the objects stack
-				createObject(anchorEObject, feature);
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_CHILD_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				if (featureName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-					createObject(anchorEObject, feature);
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceContained0101Impl extends AbstractLoadPatternImpl {
-		String featureName = null;
-
-		public LoadPatternEReferenceContained0101Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-
-				createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				currentState = STATE_DELEGATE_CHILD_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				// for robustness: we allow multiple classiefier elements in a feature element. a warning should be
-				// created
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				if (featureName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				// only the feature element was available => consider it as a null value;
-
-				if (feature.isMany()) {
-					@SuppressWarnings("unchecked")
-					EList<EObject> values = (EList<EObject>) anchorEObject.eGet(feature);
-					values.clear();
-				} else {
-					setFeatureValue(anchorEObject, feature, null);
-				}
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceContained1001Impl extends AbstractLoadPatternImpl {
-		String featureWrapperName = null;
-
-		public LoadPatternEReferenceContained1001Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureWrapperName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				currentState = STATE_DELEGATE_CHILD_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				if (featureWrapperName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				// only the feature element was available => consider it as a null value;
-				if (feature.isMany()) {
-					@SuppressWarnings("unchecked")
-					EList<EObject> values = (EList<EObject>) anchorEObject.eGet(feature);
-					values.clear();
-				} else {
-					setFeatureValue(anchorEObject, feature, null);
-				}
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-				handleEndCreateObjectElement();
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	/**
-	 * This class implements.... <img src="doc-files/LoadPatternEAttributeContained0100.png">
-	 */
-	class LoadPatternEAttributeContained0100Impl extends AbstractLoadPatternImpl {
-		String featureName = null;
-		int depthsOfUnknownElements = 0;
-		String value = null;
-
-		public LoadPatternEAttributeContained0100Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				featureName = xmlName;
-				types.push(feature);
-				if (!isNull()) {
-					text = new StringBuffer();
-				}
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				if (featureName.equals(xmlName)) {
-					text = new StringBuffer(); // record all strings
-					currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-					// wait to read contained text
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				if (isNull()) {
-					setFeatureValue(anchorEObject, feature, null);
-				} else {
-					setFeatureValue(anchorEObject, feature, text == null ? null : text.toString());
-				}
-				text = null;
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEAttributeContained1000Impl extends AbstractLoadPatternImpl {
-		String featureWrapperName = null;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEAttributeContained1000Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				featureWrapperName = xmlName;
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				if (featureWrapperName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-					text = new StringBuffer(); // record all strings
-					// wait to read contained text
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				if (null == text) {
-					setFeatureValue(anchorEObject, feature, null);
-				} else {
-					String svalues = text.toString();
-					StringTokenizer st = new StringTokenizer(svalues);
-					String svalue;
-					while (st.hasMoreTokens()) {
-						svalue = st.nextToken();
-						setFeatureValue(anchorEObject, feature, svalue);
-					}
-				}
-				text = null;
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEAttributeContained1100Impl extends AbstractLoadPatternImpl {
-		String featureWrapperName = null;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEAttributeContained1100Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureWrapperName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				if (featureWrapperName == xmlName) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_READY;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				setFeatureValue(anchorEObject, feature, text == null ? null : text.toString());
-				text = null;
-				currentState = STATE_READY;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceReferenced0100Impl extends AbstractLoadPatternImpl {
-		String featureName = null;
-		InternalEObject proxy;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEReferenceReferenced0100Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				createObject(anchorEObject, feature);
-				proxy = (InternalEObject) objects.peekEObject();
-				text = new StringBuffer(); // record all strings
-				featureName = xmlName;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				if (featureName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-					createObject(anchorEObject, feature);
-					proxy = (InternalEObject) objects.peekEObject();
-					text = new StringBuffer(); // record all strings
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				if (null != proxy) {
-					handleProxy(proxy, resourceURI.toString() + "#" + text.toString()); //$NON-NLS-1$
-					objects.pop();
-				} else {
-					// NOP: error already handled during startElement()
-				}
-				text = null;
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceReferenced0101Impl extends AbstractLoadPatternImpl {
-		String featureName = null;
-		InternalEObject proxy = null;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEReferenceReferenced0101Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				proxy = (InternalEObject) createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				// for robustness: we allow multiple classifier elements in a feature element. a warning should be
-				// created
-				proxy = (InternalEObject) createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				if (featureName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				if (null != proxy) {
-					handleProxy(proxy, resourceURI.toString() + "#" + text.toString()); //$NON-NLS-1$
-					objects.pop();
-				} else {
-					// NOP: error already handled during startElement
-				}
-				text = null;
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceReferenced1001Impl extends AbstractLoadPatternImpl {
-		InternalEObject proxy = null;
-		String featureWrapperName = null;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEReferenceReferenced1001Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureWrapperName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				proxy = (InternalEObject) createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				// for robustness: we allow multiple classiefier elements in a feature element. a warning should be
-				// created
-				currentState = STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT;
-				proxy = (InternalEObject) createObjectFromNamespaceAndType(anchorEObject, feature, namespace, xmlName);
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				if (featureWrapperName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				// only the feature element was available => consider it as a null value;
-				if (feature.isMany()) {
-					@SuppressWarnings("unchecked")
-					EList<EObject> values = (EList<EObject>) anchorEObject.eGet(feature);
-					values.clear();
-				} else {
-					setFeatureValue(anchorEObject, feature, null);
-				}
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_CLASSIFIER_ELEMENT:
-				if (null != proxy) {
-					objects.pop();
-					handleProxy(proxy, resourceURI.toString() + "#" + text.toString()); //$NON-NLS-1$
-				}
-
-				text = null;
-				currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_CLASSIFIER_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternEReferenceReferenced1100Impl extends AbstractLoadPatternImpl {
-		String featureWrapperName = null;
-		EObject proxy;
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternEReferenceReferenced1100Impl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				featureWrapperName = xmlName;
-				currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				createObject(anchorEObject, feature);
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				if (featureWrapperName.equals(xmlName)) {
-					currentState = STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT;
-				} else {
-					currentState = STATE_DELEGATE_SIBLING_NEEDED;
-				}
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_START_FEATURE_ELEMENT;
-				createObject(anchorEObject, feature);
-				text = new StringBuffer(); // record all strings
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_READY;
-				break;
-			case STATE_HAS_SEEN_START_FEATURE_ELEMENT:
-				if (null != proxy) {
-					handleProxy((InternalEObject) objects.peekEObject(), resourceURI.toString() + "#" + text.toString()); //$NON-NLS-1$
-					objects.pop();
-				}
-				text = null;
-				currentState = STATE_READY;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_HAS_SEEN_END_FEATURE_ELEMENT:
-				currentState = STATE_HAS_SEEN_END_FEATURE_WRAPPER_ELEMENT;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_HAS_SEEN_END_FEATURE_ELEMENT;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	class LoadPatternUnknownImpl extends AbstractLoadPatternImpl {
-		int depthsOfUnknownElements = 0;
-
-		public LoadPatternUnknownImpl(EObject anchorEObject, EStructuralFeature feature) {
-			super(anchorEObject, feature);
-		}
-
-		public void startElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_UNEXPECTED_ELEMENT;
-				depthsOfUnknownElements = 1;
-				types.push(ERROR_TYPE);
-				error(new FeatureNotFoundException(xmlName, null, getLocation(), getLineNumber(), getColumnNumber()));
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements++;
-				break;
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public void endElement(String namespace, String xmlName) {
-			switch (currentState) {
-			case STATE_READY:
-				currentState = STATE_DELEGATE_PARENT_NEEDED;
-				break;
-			case STATE_UNEXPECTED_ELEMENT:
-				depthsOfUnknownElements--;
-				if (0 > depthsOfUnknownElements) {
-					currentState = STATE_DELEGATE_PARENT_NEEDED;
-				}
-				break;
-			case STATE_DELEGATE_CHILD_NEEDED:
-			case STATE_DELEGATE_SIBLING_NEEDED:
-			case STATE_DELEGATE_PARENT_NEEDED:
-				assert false : "handshake error: the dispatcher should have switched to another load pattern instance (state=" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-				break;
-			default:
-				assert false : "state machine error: unsupported state (state =" + currentState + ", startElement)"; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	public XMLPersistenceMappingHandler(XMLResource xmlResource, XMLHelper helper, Map<?, ?> options) {
-		super(xmlResource, helper, options);
-
-		// set extended meta data
-		Object extendedMetaDataOption = options.get(XMLResource.OPTION_EXTENDED_META_DATA);
-		if (null != extendedMetaDataOption && extendedMetaDataOption instanceof XMLPersistenceMappingExtendedMetaData) {
-			xmlPersistenceMappingExtendedMetaData = (XMLPersistenceMappingExtendedMetaData) options.get(XMLResource.OPTION_EXTENDED_META_DATA);
-			extendedMetaData = xmlPersistenceMappingExtendedMetaData;
-		} else {
-			// default
-			xmlPersistenceMappingExtendedMetaData = xmlResource == null || xmlResource.getResourceSet() == null ? XMLPersistenceMappingExtendedMetaData.INSTANCE
-					: new XMLPersistenceMappingExtendedMetaDataImpl(xmlResource.getResourceSet().getPackageRegistry());
-			extendedMetaData = xmlPersistenceMappingExtendedMetaData;
-		}
-		helper.setExtendedMetaData(xmlPersistenceMappingExtendedMetaData);
-
-		// initialize progress monitor
-		Object progressMonitor = options.get(XMLPersistenceMappingResource.OPTION_PROGRESS_MONITOR);
-		if (progressMonitor instanceof IProgressMonitor) {
-			this.progressMonitor = (IProgressMonitor) progressMonitor;
-		} else {
-			// ignore
-		}
-
-		// get chunk size of xml parser, that is required for calculation of progress monitor ticks
-		Object parserPropertiesObject = options.get(XMLResource.OPTION_PARSER_PROPERTIES);
-		if (null != parserPropertiesObject && parserPropertiesObject instanceof Map<?, ?>) {
-			@SuppressWarnings("unchecked")
-			Map<String, Object> parserProperties = (Map<String, Object>) parserPropertiesObject;
-			Object bufferSizeObject = parserProperties.get(Constants.XERCES_PROPERTY_PREFIX + Constants.BUFFER_SIZE_PROPERTY);
-			if (bufferSizeObject instanceof Integer) {
-				progressMonitorChunkSize = (Integer) bufferSizeObject;
-			} else {
-				// use default;
-			}
-		} else {
-			// use default;
-		}
-
-		loadPatternStack = new MyStack<LoadPattern>();
-		xsiType = null;
-
-		// redefine href attribute since e.g.:
-		// xhtml.a.type/@href conflicts with this attribute and results in proxy resolution which can in turn
-		// result in long delays during load.
-		hrefAttribute = XMLPersistenceMappingResource.HREF;
-
-		// postconditions
-		assert null != xmlPersistenceMappingExtendedMetaData;
-		assert null != extendedMetaData;
-
-	}
-
-	/**
-	 * Create an object based on the given feature and attributes.
-	 */
-	protected EObject createObjectFromNamespaceAndType(EObject peekObject, EStructuralFeature feature, String namespace, String typeXMLName) {
-		assert null != xmlPersistenceMappingExtendedMetaData;
-		assert null != peekObject;
-		assert null != feature;
-		assert null != namespace;
-		assert null != typeXMLName;
-
-		// Inform the progress monitor. As looking up the namespace can be slow (network),
-		// it will at least tell the user what's taking so long
-		if (progressMonitor != null && namespace != null && !progressReportedNamespaces.contains(namespace)) {
-			progressMonitor.subTask("Processing Namespace: " + namespace); //$NON-NLS-1$
-			progressReportedNamespaces.add(namespace);
-		}
-
-		// make sure, that information about feature is available for handleMissingPackage
-		contextFeature = feature;
-		EPackage ePackage = getPackageForURI(namespace);
-		contextFeature = null;
-
-		if (null != ePackage) {
-			EClassifier eClassifier;
-			if (xmlPersistenceMappingExtendedMetaData.demandedPackages().contains(ePackage)) {
-				// demand package requires demand type
-				eClassifier = xmlPersistenceMappingExtendedMetaData.demandType(namespace, typeXMLName);
-			} else {
-				eClassifier = xmlPersistenceMappingExtendedMetaData.getTypeByXMLName(namespace, typeXMLName, feature);
-			}
-
-			EFactory eFactory = ePackage.getEFactoryInstance();
-
-			if (null != eClassifier) {
-				EObject obj = createObject(eFactory, eClassifier, false);
-				obj = validateCreateObjectFromFactory(eFactory, typeXMLName, obj, feature);
-				if (obj != null) {
-					setFeatureValue(peekObject, feature, obj);
-					processObject(obj);
-				}
-				return obj;
-			} else {
-				error(new ClassNotFoundException(typeXMLName, eFactory, getLocation(), getLineNumber(), getColumnNumber()));
-				return null;
-			}
-
-		} else {
-			return null;
-		}
-	}
-
-	@Override
-	protected EObject validateCreateObjectFromFactory(EFactory factory, String typeName, EObject newObject, EStructuralFeature feature) {
-		if (newObject != null) {
-			if (extendedMetaData != null) {
-				Collection<EPackage> demandedPackages = extendedMetaData.demandedPackages();
-				if (!demandedPackages.isEmpty() && demandedPackages.contains(newObject.eClass().getEPackage())) {
-					if (xmlPersistenceMappingExtendedMetaData.isXMLPersistenceMappingEnabled(feature)) {
-						List<String> wildcards = xmlPersistenceMappingExtendedMetaData.getWildcards(feature);
-						if (xmlPersistenceMappingExtendedMetaData.matches(wildcards, newObject.eClass().getEPackage().getNsURI())) {
-							return newObject;
-						} else {
-							return null;
-						}
-					} else {
-						// the new object resulted from a demanded package
-						if (recordUnknownFeature) {
-							// recordUnknownFeature
-							EObject peekObject = objects.peekEObject();
-							if (!(peekObject instanceof AnyType)) {
-								AnyType anyType = getExtension(objects.peekEObject());
-								EStructuralFeature entryFeature = extendedMetaData.demandFeature(extendedMetaData.getNamespace(feature),
-										extendedMetaData.getName(feature), true);
-								anyType.getAny().add(entryFeature, newObject);
-								contextFeature = entryFeature;
-							}
-							return newObject;
-						} else {
-							// reportUnknowFeature
-							String namespace = extendedMetaData.getNamespace(feature);
-							String name = extendedMetaData.getName(feature);
-							EStructuralFeature wildcardFeature = extendedMetaData.getElementWildcardAffiliation(objects.peekEObject().eClass(),
-									namespace, name);
-							if (wildcardFeature != null) {
-								int processingKind = laxWildcardProcessing ? ExtendedMetaData.LAX_PROCESSING : extendedMetaData
-										.getProcessingKind(wildcardFeature);
-								switch (processingKind) {
-								case ExtendedMetaData.LAX_PROCESSING:
-								case ExtendedMetaData.SKIP_PROCESSING: {
-									return newObject;
-								}
-								}
-							}
-						}
-
-						newObject = null;
-					}
-				}
-			}
-		} else if (feature != null && factory != null && extendedMetaData != null) {
-			// processing unknown feature with xsi:type (xmi:type)
-			if (recordUnknownFeature || processAnyXML) {
-
-				EObject result = null;
-				String namespace = extendedMetaData.getNamespace(factory.getEPackage());
-				if (namespace == null) {
-					usedNullNamespacePackage = true;
-				}
-
-				EClassifier type = extendedMetaData.demandType(namespace, typeName);
-				result = createObject(type.getEPackage().getEFactoryInstance(), type, false);
-
-				EObject peekObject = objects.peekEObject();
-				if (!(peekObject instanceof AnyType)) {
-					// add as extension to an existing eobject
-					AnyType anyType = getExtension(peekObject);
-					EStructuralFeature entryFeature = extendedMetaData.demandFeature(extendedMetaData.getNamespace(feature),
-							extendedMetaData.getName(feature), true);
-					anyType.getAny().add(entryFeature, result);
-					contextFeature = entryFeature;
-				}
-				return result;
-			} else {
-				String namespace = extendedMetaData.getNamespace(feature);
-				String name = extendedMetaData.getName(feature);
-				EStructuralFeature wildcardFeature = extendedMetaData.getElementWildcardAffiliation(objects.peekEObject().eClass(), namespace, name);
-				if (wildcardFeature != null) {
-					int processingKind = laxWildcardProcessing ? ExtendedMetaData.LAX_PROCESSING : extendedMetaData
-							.getProcessingKind(wildcardFeature);
-					switch (processingKind) {
-					case ExtendedMetaData.LAX_PROCESSING:
-					case ExtendedMetaData.SKIP_PROCESSING: {
-						// EATM Demand create metadata; needs to depend on processing mode...
-						String factoryNamespace = extendedMetaData.getNamespace(factory.getEPackage());
-						if (factoryNamespace == null) {
-							usedNullNamespacePackage = true;
-						}
-						EClassifier type = extendedMetaData.demandType(factoryNamespace, typeName);
-						return createObject(type.getEPackage().getEFactoryInstance(), type, false);
-					}
-					}
-				}
-			}
-		}
-
-		validateCreateObjectFromFactory(factory, typeName, newObject);
-
-		return newObject;
-	}
-
-	@Override
-	public void characters(char[] ch, int start, int length) {
-		super.characters(ch, start, length);
-		if (null != progressMonitor) {
-			if (start < progressMonitorLastStartInChunk) {
-				progressMonitorChunksRead += 1;
-			}
-			if (progressMonitorChunksRead > progressMonitorNumberOfChunksPerUpdate) {
-				progressMonitor.worked(progressMonitorChunksRead);
-				progressMonitorChunksRead = 0;
-			}
-			progressMonitorLastStartInChunk = start;
-		}
-	}
-
-	@Override
-	public void endElement(String uri, String localName, String qName) {
-		if (null != xmlPersistenceMappingExtendedMetaData) {
-			elements.pop();
-			types.pop();
-
-			helper.popContext(prefixesToFactories);
-
-			// end from super.endElement
-
-			LoadPattern activeDeserializationRule = loadPatternStack.peek();
-			if (null != activeDeserializationRule) {
-				activeDeserializationRule.endElement(uri, localName);
-				if (activeDeserializationRule.needsDelegateParent()) {
-					loadPatternStack.pop();
-					activeDeserializationRule = loadPatternStack.peek();
-					if (null != activeDeserializationRule) {
-						// this happens if we return to the root object
-						activeDeserializationRule.endElement(uri, localName);
-					}
-				}
-			}
-		} else {
-			super.endElement(uri, localName, qName);
-		}
-	}
-
-	/**
-	 * The XML element represents a feature. There are two cases to handle: 1. The feature has a type that is a
-	 * datatype. 2. The feature has a type that is a class.
-	 */
-	@Override
-	protected void handleFeature(String prefix, String name) {
-		assert useNewMethods == true;
-		EObject peekObject = objects.peekEObject();
-
-		// This happens when processing an element with simple content that has elements content even though it
-		// shouldn't.
-		//
-		if (peekObject == null) {
-			types.push(ERROR_TYPE);
-			error(new FeatureNotFoundException(name, null, getLocation(), getLineNumber(), getColumnNumber()));
-			return;
-		}
-
-		if (null != xmlPersistenceMappingExtendedMetaData) {
-			String namespace = helper.getNamespaceURI(prefix);
-			LoadPattern activeDeserializationRule = loadPatternStack.peek();
-			if (null == activeDeserializationRule) {
-				activeDeserializationRule = getLoadPattern(peekObject, prefix, name);
-				assert null != activeDeserializationRule : "getLoadPattern() should never return null"; //$NON-NLS-1$
-				loadPatternStack.push(activeDeserializationRule);
-			}
-
-			if (null != activeDeserializationRule) {
-				activeDeserializationRule.startElement(namespace, name);
-				if (activeDeserializationRule.needsDelegateChild()) {
-					activeDeserializationRule = getLoadPattern(peekObject, prefix, name);
-					assert null != activeDeserializationRule : "getLoadPattern() should never return null"; //$NON-NLS-1$
-					loadPatternStack.push(activeDeserializationRule);
-					activeDeserializationRule.startElement(namespace, name);
-				} else if (activeDeserializationRule.needsDelegateSibling()) {
-					activeDeserializationRule = getLoadPattern(peekObject, prefix, name);
-					assert null != activeDeserializationRule : "getLoadPattern() should never return null"; //$NON-NLS-1$
-					loadPatternStack.pop();
-					loadPatternStack.push(activeDeserializationRule);
-					activeDeserializationRule.startElement(namespace, name);
-				} else {
-					// normal operation, no need for switching to another load pattern
-				}
-
-			}
-
-		} else {
-			EStructuralFeature feature = getFeature(peekObject, prefix, name, true);
-			if (feature != null) {
-				int kind = helper.getFeatureKind(feature);
-				if (kind == XMLHelper.DATATYPE_SINGLE || kind == XMLHelper.DATATYPE_IS_MANY) {
-					objects.push(null);
-					mixedTargets.push(null);
-					types.push(feature);
-					if (!isNull()) {
-						text = new StringBuffer();
-					}
-				} else if (extendedMetaData != null) {
-					EReference eReference = (EReference) feature;
-					boolean isContainment = eReference.isContainment();
-					if (!isContainment && !eReference.isResolveProxies()
-							&& extendedMetaData.getFeatureKind(feature) != ExtendedMetaData.UNSPECIFIED_FEATURE) {
-						isIDREF = true;
-						objects.push(null);
-						mixedTargets.push(null);
-						types.push(feature);
-						text = new StringBuffer();
-					} else {
-						createObject(peekObject, feature);
-						// child object is put on top of objects stack
-						// if an error occured, then types.peek is ERROR
-						//
-						EObject childObject = objects.peekEObject();
-						if (childObject != null) {
-							if (isContainment) {
-								EStructuralFeature simpleFeature = extendedMetaData.getSimpleFeature(childObject.eClass());
-								if (simpleFeature != null) {
-									isSimpleFeature = true;
-									isIDREF = simpleFeature instanceof EReference;
-									objects.push(null);
-									mixedTargets.push(null);
-									types.push(simpleFeature);
-									text = new StringBuffer();
-								}
-							} else if (!childObject.eIsProxy()) {
-								text = new StringBuffer();
-							}
-						}
-					}
-				} else {
-					createObject(peekObject, feature);
-				}
-			} else {
-				// Try to get a general-content feature.
-				// Use a pattern that's not possible any other way.
-				//
-				if (xmlMap != null && (feature = getFeature(peekObject, null, "", true)) != null) { //$NON-NLS-1$
-
-					EFactory eFactory = getFactoryForPrefix(prefix);
-
-					// This is for the case for a local unqualified element that has been bound.
-					//
-					if (eFactory == null) {
-						eFactory = feature.getEContainingClass().getEPackage().getEFactoryInstance();
-					}
-
-					EObject newObject = null;
-					newObject = createObject(eFactory, helper.getType(eFactory, name), false);
-					newObject = validateCreateObjectFromFactory(eFactory, name, newObject, feature);
-					if (newObject != null) {
-						setFeatureValue(peekObject, feature, newObject);
-					}
-					processObject(newObject);
-				} else {
-					// This handles the case of a substitution group.
-					//
-					if (xmlMap != null) {
-						EFactory eFactory = getFactoryForPrefix(prefix);
-						EObject newObject = createObjectFromFactory(eFactory, name);
-						validateCreateObjectFromFactory(eFactory, name, newObject);
-						if (newObject != null) {
-							for (EReference eReference : peekObject.eClass().getEAllReferences()) {
-								if (eReference.getEType().isInstance(newObject)) {
-									setFeatureValue(peekObject, eReference, newObject);
-									processObject(newObject);
-									return;
-								}
-							}
-						}
-					}
-
-					handleUnknownFeature(prefix, name, true, peekObject, null);
-				}
-			}
-		}
-	}
-
-	protected LoadPattern getLoadPattern(EObject eObject, String prefix, String name) {
-		assert null != xmlPersistenceMappingExtendedMetaData;
-
-		LoadPattern deserializationRule = null;
-
-		if (eObject instanceof AnyType) {
-			// handle any type using standard emf serialization
-			EStructuralFeature feature = super.getFeature(eObject, prefix, name, true);
-			deserializationRule = new LoadPatternEReferenceContained0100Impl(eObject, feature);
-		} else {
-			EStructuralFeature feature = getFeature(eObject, prefix, name, true);
-			if (null != feature) {
-				int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(feature);
-				if (feature instanceof EReference) {
-					EReference reference = (EReference) feature;
-					if (reference.isContainment()) {
-						switch (featureSerializationStructure) {
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceContained0001Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceContained0100Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceContained0101Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceContained1001Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-							deserializationRule = new LoadPatternEReferenceContained0100Impl(eObject, feature);
-							break;
-						default:
-							deserializationRule = new LoadPatternEReferenceContained1001Impl(eObject, feature);
-							break;
-						}
-					} else {
-						switch (featureSerializationStructure) {
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceReferenced0100Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceReferenced0101Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-							deserializationRule = new LoadPatternEReferenceReferenced1001Impl(eObject, feature);
-							break;
-						case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-							deserializationRule = new LoadPatternEReferenceReferenced0100Impl(eObject, feature);
-							break;
-						default:
-							deserializationRule = new LoadPatternEReferenceReferenced1001Impl(eObject, feature);
-							break;
-						}
-					}
-				} else {
-					// feature is an EAttribute
-					switch (featureSerializationStructure) {
-					case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-						deserializationRule = new LoadPatternEAttributeContained0100Impl(eObject, feature);
-						break;
-					case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-						deserializationRule = new LoadPatternEAttributeContained1000Impl(eObject, feature);
-						break;
-					case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-						deserializationRule = new LoadPatternEAttributeContained1100Impl(eObject, feature);
-						break;
-					case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-						deserializationRule = new LoadPatternEAttributeContained0100Impl(eObject, feature);
-						break;
-
-					default:
-						deserializationRule = new LoadPatternEAttributeContained0100Impl(eObject, feature);
-						break;
-					}
-
-				}
-			} else {
-				deserializationRule = new LoadPatternUnknownImpl(eObject, feature);
-			}
-		}
-
-		assert null != deserializationRule : "getLoadPattern() should always return a LoadPattern (!=null)"; //$NON-NLS-1$
-		return deserializationRule;
-
-	}
-
-	@Override
-	protected EStructuralFeature getFeature(EObject object, String prefix, String name, boolean isElement) {
-		assert null != object;
-		assert null != name;
-		EStructuralFeature result = null;
-		if (isElement && null != xmlPersistenceMappingExtendedMetaData) {
-			String namespace = helper.getNamespaceURI(prefix);
-			result = xmlPersistenceMappingExtendedMetaData.getFeatureByXMLElementName(object.eClass(), namespace, name);
-		} else {
-			result = super.getFeature(object, prefix, name, isElement);
-		}
-		return result;
-	}
-
-	@Override
-	public void reset() {
-		super.reset();
-		loadPatternStack = null;
-		hrefAttribute = XMLPersistenceMappingResource.HREF;
-
-	};
-
-	@Override
-	public void prepare(XMLResource resource, XMLHelper helper, Map<?, ?> options) {
-		super.prepare(resource, helper, options);
-		loadPatternStack = new MyStack<LoadPattern>();
-		// enforce use of new methods
-		useNewMethods = true;
-		xsiType = null;
-	}
-
-	@Override
-	protected String getXSIType() {
-		if (xsiType != null) {
-			return xsiType;
-		} else {
-			return super.getXSIType();
-		}
-	}
-
-	protected void handleEndCreateObjectElement() {
-		if (text == null) {
-			objects.pop();
-			mixedTargets.pop();
-		} else {
-			EObject object = objects.popEObject();
-			if (mixedTargets.peek() != null
-					&& (object.eContainer() != null || suppressDocumentRoot || recordUnknownFeature
-							&& (eObjectToExtensionMap.containsValue(object) || ((InternalEObject) object).eDirectResource() != null))) {
-				handleMixedText();
-				mixedTargets.pop();
-			}
-		}
-	}
-
-	@Override
-	public void startDocument() {
-		super.startDocument();
-		// initialize the progress monitor
-		if (null != progressMonitor) {
-			progressMonitorChunksRead = 0;
-			progressMonitorLastStartInChunk = 0;
-			progressMonitor.beginTask("Reading resource '" + resourceURI + "'", getProgressMonitorTotalWork()); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-	}
-
-	@Override
-	public void endDocument() {
-		super.endDocument();
-		// finalize the progress monitor
-		if (null != progressMonitor) {
-			progressMonitor.done();
-		}
-	}
-
-	protected int getProgressMonitorTotalWork() {
-		int totalWork = IProgressMonitor.UNKNOWN;
-		URI uri = xmlResource.getURI();
-
-		InputStream is = null;
-		try {
-			is = URIConverter.INSTANCE.createInputStream(uri);
-			totalWork = is.available() / progressMonitorChunkSize;
-		} catch (IOException ex) {
-			// NOP
-		} finally {
-			if (null != is) {
-				try {
-					is.close();
-				} catch (IOException ex) {
-					// NOP
-				}
-			}
-		}
-		return totalWork;
-	}
-
-	@Override
-	protected EPackage handleMissingPackage(String uriString) {
-		if (null != contextFeature && null != xmlPersistenceMappingExtendedMetaData
-				&& xmlPersistenceMappingExtendedMetaData.isXMLPersistenceMappingEnabled(contextFeature)) {
-			return xmlPersistenceMappingExtendedMetaData.demandPackage(uriString);
-
-		} else {
-			return super.handleMissingPackage(uriString);
-		}
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHelperImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHelperImpl.java
deleted file mode 100644
index 58c4476..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingHelperImpl.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.internal.serialization;
-
-import javax.xml.datatype.XMLGregorianCalendar;
-
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EFactory;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
-import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
-
-public class XMLPersistenceMappingHelperImpl extends XMLHelperImpl implements XMLHelper {
-
-	public XMLPersistenceMappingHelperImpl(XMLResource resource) {
-		super(resource);
-		EMap<String, String> prefixToNamespaceMap = getPrefixToNamespaceMap();
-		//prefixToNamespaceMap.put("", ReqIF10Package.eNS_URI); //$NON-NLS-1$
-		setPrefixToNamespaceMap(prefixToNamespaceMap);
-	}
-
-	@Override
-	public String getHREF(EObject obj) {
-		if (obj.eIsProxy()) {
-			URI uri = ((InternalEObject) obj).eProxyURI();
-			return uri.fragment();
-		} else {
-			return getIDREF(obj);
-		}
-	}
-
-	@Override
-	public String convertToString(EFactory factory, EDataType dataType, Object value) {
-		if (value instanceof XMLGregorianCalendar) {
-			return XMLTypeFactory.eINSTANCE.convertDateTime((XMLGregorianCalendar) value);
-		} else {
-			return super.convertToString(factory, dataType, value);
-		}
-	}
-
-	@Override
-	public EClassifier getType(EFactory eFactory, String typeName) {
-		EClassifier eClassifier;
-		EPackage ePackage = eFactory.getEPackage();
-		if (extendedMetaData.demandedPackages().contains(ePackage)) {
-			eClassifier = extendedMetaData.demandType(ePackage.getNsURI(), typeName);
-		} else {
-			eClassifier = super.getType(eFactory, typeName);
-		}
-		return eClassifier;
-
-	}
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingLoadImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingLoadImpl.java
deleted file mode 100644
index 96b4ba2..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingLoadImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.internal.serialization;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class XMLPersistenceMappingLoadImpl extends XMLLoadImpl {
-
-	public XMLPersistenceMappingLoadImpl(XMLHelper helper) {
-		super(helper);
-	}
-
-	@Override
-	protected DefaultHandler makeDefaultHandler() {
-		XMLPersistenceMappingHandler handler = new XMLPersistenceMappingHandler(resource, helper, options);
-
-		return handler;
-	}
-
-	@Override
-	protected SAXParser makeParser() throws ParserConfigurationException, SAXException {
-		// Create an instance of org.apache.xerces.parsers.SAXParser
-		/*
-		 * !! Important Note !! We must override makeParser() - even if we wouldn't have any functional changes to apply
-		 * - in order to make sure that SAXParserFactory.newInstance() gets invoked from this plug-in which has a
-		 * dependency to the org.apache.xerces plug-in and all its classes on the classpath. Otherwise we wouldn't
-		 * obtain an instance of org.apache.xerces.jaxp.SAXParserFactoryImpl as intended but fall back to the default
-		 * implementation com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.
-		 */
-		SAXParserFactory factory = SAXParserFactory.newInstance();
-		return factory.newSAXParser();
-	}
-
-	@Override
-	protected void handleErrors() throws IOException {
-		// avoid throwing exception even if errors occur during load
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingSaveImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingSaveImpl.java
deleted file mode 100644
index 4042167..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/XMLPersistenceMappingSaveImpl.java
+++ /dev/null
@@ -1,1767 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.internal.serialization;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EFactory;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-import org.eclipse.emf.ecore.util.InternalEList;
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaData;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaDataImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
-
-// TODO: add javadoc with images
-// TODO: deactivate or implement dom support 
-// TODO: implement prefix overwrite
-// TODO: overwrite all explicitly not used methods from super-class and use asserts to show that it is not allowed to go there
-// TODO: consider using the "kind" mechanism for switching between different savepatterns
-/**
- * @author broerkens
- */
-public class XMLPersistenceMappingSaveImpl extends XMLSaveImpl {
-	XMLPersistenceMappingExtendedMetaData xmlPersistenceMappingExtendedMetaData = null;
-	static final String TRUE = "true"; //$NON-NLS-1$
-	Map<String, String> redefinedNamespaceUriToPrefixMap = null;
-
-	final StringBuffer buffer = new StringBuffer();
-
-	public enum SerializationType {
-		attributesOnly, elementsOnly, attributesAndElements
-	}
-
-	public XMLPersistenceMappingSaveImpl(XMLHelper helper) {
-		super(helper);
-	}
-
-	@Override
-	protected boolean saveFeatures(EObject o, boolean attributesOnly) {
-		if (attributesOnly) {
-			return saveFeatures(o, SerializationType.attributesOnly, false);
-		} else {
-			return saveFeatures(o, SerializationType.attributesAndElements, false);
-		}
-	}
-
-	protected boolean saveFeatures(EObject o, SerializationType serializationType, boolean suppressClosingElement) {
-		EClass eClass = o.eClass();
-		int contentKind = extendedMetaData.getContentKind(eClass);
-		if (!toDOM) {
-			switch (contentKind) {
-			case ExtendedMetaData.MIXED_CONTENT:
-			case ExtendedMetaData.SIMPLE_CONTENT: {
-				doc.setMixed(true);
-				break;
-			}
-			}
-		}
-
-		if (o == root) {
-			writeTopAttributes(root);
-		}
-
-		EStructuralFeature[] features = featureTable.getFeatures(eClass);
-		int[] featureKinds = featureTable.getKinds(eClass, features);
-		int[] elementFeatures = null;
-		int elementCount = 0;
-
-		String content = null;
-
-		// Process XML attributes
-		if (SerializationType.elementsOnly == serializationType) {
-			LOOP: for (int i = 0; i < features.length; i++) {
-				int kind = featureKinds[i];
-				EStructuralFeature f = features[i];
-
-				if (kind != TRANSIENT && shouldSaveFeature(o, f)) {
-					switch (kind) {
-					case DATATYPE_ELEMENT_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getDataTypeElementSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case DATATYPE_SINGLE: {
-						continue LOOP; // next feature, no element required
-					}
-					case DATATYPE_SINGLE_NILLABLE: {
-						if (!isNil(o, f)) {
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ATTRIBUTE_SINGLE: {
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_MANY: {
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_IDREF_SINGLE: {
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_IDREF_MANY: {
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_HREF_SINGLE_UNSETTABLE: {
-						if (isNil(o, f)) {
-							break;
-						}
-						// it's intentional to keep going
-					}
-					case OBJECT_HREF_SINGLE: {
-						if (useEncodedAttributeStyle) {
-							continue LOOP; // next feature, no element required
-						} else {
-							switch (sameDocSingle(o, f)) {
-							case SAME_DOC: {
-								continue LOOP; // next feature, no element required
-							}
-							case CROSS_DOC: {
-								break;
-							}
-							default: {
-								continue LOOP; // next feature, no element required
-							}
-							}
-						}
-						break;
-					}
-					case OBJECT_HREF_MANY_UNSETTABLE: {
-						if (isEmpty(o, f) && !isXMLPersistenceMappingEnabled(f)) {
-							continue LOOP; // next feature, no element required
-						}
-						// It's intentional to keep going.
-					}
-					case OBJECT_HREF_MANY: {
-						if (useEncodedAttributeStyle) {
-							continue LOOP; // next feature, no element required
-						} else {
-							switch (sameDocMany(o, f)) {
-							case SAME_DOC: {
-								continue LOOP; // next feature, no element required
-							}
-							case CROSS_DOC: {
-								break;
-							}
-							default: {
-								continue LOOP; // next feature, no element required
-							}
-							}
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_SINGLE_UNSETTABLE:
-					case OBJECT_ELEMENT_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementReferenceSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_MANY: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementReferenceManySimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_IDREF_SINGLE_UNSETTABLE:
-					case OBJECT_ELEMENT_IDREF_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementIDRefSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_IDREF_MANY: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementIDRefManySimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case DATATYPE_ATTRIBUTE_MANY: {
-						break;
-					}
-					case OBJECT_CONTAIN_MANY_UNSETTABLE:
-					case DATATYPE_MANY: {
-						if (isEmpty(o, f) && !isXMLPersistenceMappingEnabled(f)) {
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_CONTAIN_SINGLE_UNSETTABLE:
-					case OBJECT_CONTAIN_SINGLE:
-					case OBJECT_CONTAIN_MANY:
-					case ELEMENT_FEATURE_MAP: {
-						break;
-					}
-					case ATTRIBUTE_FEATURE_MAP: {
-						continue LOOP; // next feature, no element required
-					}
-					default: {
-						continue LOOP; // next feature, no element required
-					}
-
-					} // end switch
-
-					// We only get here if we should do this.
-					//
-					if (elementFeatures == null) {
-						elementFeatures = new int[features.length];
-					}
-					elementFeatures[elementCount++] = i;
-				} // end if
-			} // end for
-		} else {
-
-			LOOP: for (int i = 0; i < features.length; i++) {
-				int kind = featureKinds[i];
-				EStructuralFeature f = features[i];
-
-				if (kind != TRANSIENT && shouldSaveFeature(o, f)) {
-
-					switch (kind) {
-					case DATATYPE_ELEMENT_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getDataTypeElementSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case DATATYPE_SINGLE: {
-						saveDataTypeSingle(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					case DATATYPE_SINGLE_NILLABLE: {
-						if (!isNil(o, f)) {
-							saveDataTypeSingle(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ATTRIBUTE_SINGLE: {
-						saveEObjectSingle(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_MANY: {
-						saveEObjectMany(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_IDREF_SINGLE: {
-						saveIDRefSingle(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_ATTRIBUTE_IDREF_MANY: {
-						saveIDRefMany(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					case OBJECT_HREF_SINGLE_UNSETTABLE: {
-						if (isNil(o, f)) {
-							break;
-						}
-						// it's intentional to keep going
-					}
-					case OBJECT_HREF_SINGLE: {
-						if (useEncodedAttributeStyle) {
-							saveEObjectSingle(o, f);
-							continue LOOP; // next feature, no element required
-						} else {
-							switch (sameDocSingle(o, f)) {
-							case SAME_DOC: {
-								saveIDRefSingle(o, f);
-								continue LOOP; // next feature, no element required
-							}
-							case CROSS_DOC: {
-								break;
-							}
-							default: {
-								continue LOOP; // next feature, no element required
-							}
-							}
-						}
-						break;
-					}
-					case OBJECT_HREF_MANY_UNSETTABLE: {
-						if (isEmpty(o, f) && !isXMLPersistenceMappingEnabled(f)) {
-							saveManyEmpty(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						// It's intentional to keep going.
-					}
-					case OBJECT_HREF_MANY: {
-						if (useEncodedAttributeStyle) {
-							saveEObjectMany(o, f);
-							continue LOOP; // next feature, no element required
-						} else {
-							switch (sameDocMany(o, f)) {
-							case SAME_DOC: {
-								saveIDRefMany(o, f);
-								continue LOOP; // next feature, no element required
-							}
-							case CROSS_DOC: {
-								break;
-							}
-							default: {
-								continue LOOP; // next feature, no element required
-							}
-							}
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_SINGLE_UNSETTABLE:
-					case OBJECT_ELEMENT_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementReferenceSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_MANY: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementReferenceManySimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_IDREF_SINGLE_UNSETTABLE:
-					case OBJECT_ELEMENT_IDREF_SINGLE: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementIDRefSingleSimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_ELEMENT_IDREF_MANY: {
-						if (contentKind == ExtendedMetaData.SIMPLE_CONTENT) {
-							content = getElementIDRefManySimple(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case DATATYPE_ATTRIBUTE_MANY: {
-						break;
-					}
-					case OBJECT_CONTAIN_MANY_UNSETTABLE:
-					case DATATYPE_MANY: {
-						if (isEmpty(o, f) && !isXMLPersistenceMappingEnabled(f)) {
-							saveManyEmpty(o, f);
-							continue LOOP; // next feature, no element required
-						}
-						break;
-					}
-					case OBJECT_CONTAIN_SINGLE_UNSETTABLE:
-					case OBJECT_CONTAIN_SINGLE:
-					case OBJECT_CONTAIN_MANY:
-					case ELEMENT_FEATURE_MAP: {
-						break;
-					}
-					case ATTRIBUTE_FEATURE_MAP: {
-						saveAttributeFeatureMap(o, f);
-						continue LOOP; // next feature, no element required
-					}
-					default: {
-						continue LOOP; // next feature, no element required
-					}
-					}
-
-					if (SerializationType.attributesOnly == serializationType) {
-						continue LOOP; // next feature, no element required
-					}
-
-					// We only get here if we should do this.
-					//
-					if (elementFeatures == null) {
-						elementFeatures = new int[features.length];
-					}
-					elementFeatures[elementCount++] = i;
-				}
-			}
-			processAttributeExtensions(o);
-
-			if (elementFeatures == null) {
-				if (content == null) {
-					content = getContent(o, features);
-				}
-
-				if (content == null) {
-					if (o == root && writeTopElements(root)) {
-						endSaveFeatures(o, 0, null);
-						return true;
-					} else {
-						endSaveFeatures(o, EMPTY_ELEMENT, null);
-						return false;
-					}
-				} else {
-					endSaveFeatures(o, CONTENT_ELEMENT, content);
-					return true;
-				}
-			}
-		}
-
-		if (o == root) {
-			writeTopElements(root);
-		}
-
-		// Process XML elements
-		for (int i = 0; i < elementCount; i++) {
-			int kind = featureKinds[elementFeatures[i]];
-			EStructuralFeature f = features[elementFeatures[i]];
-			switch (kind) {
-			case DATATYPE_SINGLE_NILLABLE: {
-				saveNil(o, f);
-				break;
-			}
-			case ELEMENT_FEATURE_MAP: {
-				saveElementFeatureMap(o, f);
-				break;
-			}
-			case DATATYPE_MANY: {
-				saveDataTypeMany(o, f);
-				break;
-			}
-			case DATATYPE_ATTRIBUTE_MANY: {
-				saveDataTypeAttributeMany(o, f);
-				break;
-			}
-			case DATATYPE_ELEMENT_SINGLE: {
-				saveDataTypeElementSingle(o, f);
-				break;
-			}
-			case OBJECT_CONTAIN_SINGLE_UNSETTABLE: {
-				if (isNil(o, f)) {
-					saveNil(o, f);
-					break;
-				}
-				// it's intentional to keep going
-			}
-			case OBJECT_CONTAIN_SINGLE: {
-				saveContainedSingle(o, f);
-				break;
-			}
-			case OBJECT_CONTAIN_MANY_UNSETTABLE:
-			case OBJECT_CONTAIN_MANY: {
-				saveContainedMany(o, f);
-				break;
-			}
-			case OBJECT_HREF_SINGLE_UNSETTABLE: {
-				if (isNil(o, f)) {
-					saveNil(o, f);
-					break;
-				}
-				// it's intentional to keep going
-			}
-			case OBJECT_HREF_SINGLE: {
-				saveHRefSingle(o, f);
-				break;
-			}
-			case OBJECT_HREF_MANY_UNSETTABLE:
-			case OBJECT_HREF_MANY: {
-				saveHRefMany(o, f);
-				break;
-			}
-			case OBJECT_ELEMENT_SINGLE_UNSETTABLE: {
-				if (isNil(o, f)) {
-					saveNil(o, f);
-					break;
-				}
-				// it's intentional to keep going
-			}
-			case OBJECT_ELEMENT_SINGLE: {
-				saveElementReferenceSingle(o, f);
-				break;
-			}
-			case OBJECT_ELEMENT_MANY: {
-				saveElementReferenceMany(o, f);
-				break;
-			}
-			case OBJECT_ELEMENT_IDREF_SINGLE_UNSETTABLE: {
-				if (isNil(o, f)) {
-					saveNil(o, f);
-					break;
-				}
-				// it's intentional to keep going
-			}
-			case OBJECT_ELEMENT_IDREF_SINGLE: {
-				saveElementIDRefSingle(o, f);
-				break;
-			}
-			case OBJECT_ELEMENT_IDREF_MANY: {
-				saveElementIDRefMany(o, f);
-				break;
-			}
-			} // end switch
-		} // end for
-		if (!suppressClosingElement) {
-			endSaveFeatures(o, 0, null);
-		}
-		return true;
-	}
-
-	@Override
-	protected void saveNil(EStructuralFeature f) {
-		if (isXMLPersistenceMappingEnabled(f)) {
-			int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-			switch (featureSerializationStructure) {
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-				// no means for describing null values
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-				doc.saveNilElement(getClassifierQName(f.getEType(), f));
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT:
-				doc.saveNilElement(getClassifierWrapperQName(f.getEType()));
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				doc.startElement(getClassifierWrapperQName(f.getEType()));
-				doc.endEmptyElement();
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-				super.saveNil(f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				doc.startElement(getFeatureQName(f));
-				doc.endEmptyElement();
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-				doc.saveNilElement(getFeatureWrapperQName(f));
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				doc.startElement(getFeatureWrapperQName(f));
-				doc.endEmptyElement();
-				break;
-			default:
-				super.saveNil(f);
-			}
-
-		} else {
-			super.saveNil(f);
-		}
-
-	}
-
-	@Override
-	protected void saveElementReferenceSingle(EObject o, EStructuralFeature f) {
-		assert null != helper.getValue(o, f);
-
-		EObject remote = (EObject) helper.getValue(o, f);
-		if (null != remote) {
-
-			int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-			switch (featureSerializationStructure) {
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-				// not allowed - ignore;
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-				// default EMF mapping
-				saveEReferenceReferenced0100Single(remote, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceReferenced0101Single(remote, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceReferenced1001Single(remote, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-				// if undefined, use the standard EMF mechanism
-				super.saveElementReferenceSingle(o, f);
-				break;
-			default:
-				saveEReferenceReferenced1001Single(remote, f);
-				break;
-			}
-		}
-
-	}
-
-	protected void saveReferencedHREF(EStructuralFeature f, EObject remote, String qname, boolean doSaveType) {
-		{
-			String href = helper.getHREF(remote);
-			if (href != null) {
-				href = convertURI(href);
-				EClass eClass = remote.eClass();
-				EClass expectedType = (EClass) f.getEType();
-				boolean shouldSaveType = doSaveType && (saveTypeInfo ? xmlTypeInfo.shouldSaveType(eClass, expectedType, f) : eClass != expectedType);
-				doc.startElement(qname);
-				if (shouldSaveType) {
-					saveTypeAttribute(eClass);
-				}
-				doc.endContentElement(href);
-			}
-		}
-	}
-
-	protected void saveEReferenceReferenced0100Single(EObject remote, EStructuralFeature f) {
-		String qname = getFeatureQName(f);
-		saveReferencedHREF(f, remote, qname, true);
-	}
-
-	protected void saveEReferenceReferenced0101Single(EObject remote, EStructuralFeature f) {
-		doc.startElement(getFeatureQName(f));
-		String qname = getClassifierQName(remote.eClass(), f);
-		saveReferencedHREF(f, remote, qname, false);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceReferenced1001Single(EObject remote, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		String qname = getClassifierQName(remote.eClass(), f);
-		saveReferencedHREF(f, remote, qname, false);
-		doc.endElement();
-	}
-
-	@Override
-	protected void saveElementReferenceMany(EObject o, EStructuralFeature f) {
-		assert f.isMany() : "saveElementReferenceMany is applicable for references with true == isMany()"; //$NON-NLS-1$
-		@SuppressWarnings("unchecked")
-		InternalEList<? extends EObject> values = (InternalEList<? extends EObject>) helper.getValue(o, f);
-		int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-		switch (featureSerializationStructure) {
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-			// not allowed - ignore;
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-			// default EMF mapping
-			saveEReferenceReferenced0100Many(values, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEReferenceReferenced0101Many(values, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEReferenceReferenced1001Many(values, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-			// if undefined, use the standard EMF mechanism
-			super.saveHRefMany(o, f);
-			break;
-		default:
-			saveEReferenceReferenced1001Many(values, f);
-			break;
-		}
-
-	}
-
-	protected void saveEReferenceReferenced0100Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		int size = values.size();
-		String qname = getFeatureQName(f);
-		for (int i = 0; i < size; i++) {
-			saveReferencedHREF(f, values.basicGet(i), qname, true);
-		}
-	}
-
-	protected void saveEReferenceReferenced0101Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		int size = values.size();
-		String qname;
-		EObject value;
-		for (int i = 0; i < size; i++) {
-			doc.startElement(getFeatureQName(f));
-			value = values.basicGet(i);
-			qname = getClassifierQName(value.eClass(), f);
-			saveReferencedHREF(f, value, qname, false);
-			doc.endElement();
-		}
-
-	}
-
-	protected void saveEReferenceReferenced1001Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		int size = values.size();
-		String qname;
-		EObject value;
-		doc.startElement(getFeatureWrapperQName(f));
-		for (int i = 0; i < size; i++) {
-			value = values.basicGet(i);
-			qname = getClassifierQName(value.eClass(), f);
-			saveReferencedHREF(f, value, qname, false);
-		}
-		doc.endElement();
-	}
-
-	@Override
-	protected void saveDataTypeElementSingle(EObject o, EStructuralFeature f) {
-		assert !f.isMany() : "saveElementReferenceMany is applicable for references with false == isMany()"; //$NON-NLS-1$
-		String svalue = getDatatypeValue(helper.getValue(o, f), f, false);
-		int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-		switch (featureSerializationStructure) {
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-			// not allowed - ignore;
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-			saveEAttributeContained0001Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT:
-			saveEAttributeContained0010Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained0011Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-			saveEAttributeContained0100Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained0101Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			saveEAttributeContained0110Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained0111Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-			saveEAttributeContained1000Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained1001Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			saveEAttributeContained1010Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained1011Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-			saveEAttributeContained1100Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained1101Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-			saveEAttributeContained1110Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-			saveEAttributeContained1111Single(svalue, f);
-			break;
-		case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-			// if undefined, use the standard EMF mechanism
-			super.saveDataTypeMany(o, f);
-			break;
-		default:
-			saveEAttributeContained1001Single(svalue, f);
-			break;
-		}
-
-	}
-
-	protected void saveEAttributeContained0001Single(String value, EStructuralFeature f) {
-		String name = getClassifierQName(f.getEType());
-		if (value == null) {
-			doc.startElement(name);
-			doc.addAttribute(XSI_NIL, TRUE);
-			doc.endEmptyElement();
-			declareXSI = true;
-		} else {
-			doc.saveDataValueElement(name, value);
-		}
-
-	}
-
-	protected void saveEAttributeContained0010Single(String value, EStructuralFeature f) {
-		String name = getClassifierWrapperQName(f.getEType());
-		if (value == null) {
-			doc.startElement(name);
-			doc.addAttribute(XSI_NIL, TRUE);
-			doc.endEmptyElement();
-			declareXSI = true;
-		} else {
-			doc.saveDataValueElement(name, value);
-		}
-	}
-
-	protected void saveEAttributeContained0011Single(String value, EStructuralFeature f) {
-		doc.startElement(getClassifierWrapperQName(f.getEType()));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained0100Single(String value, EStructuralFeature f) {
-		// this is the default EMF behaviour
-		String name = getFeatureQName(f);
-		if (value == null) {
-			doc.startElement(name);
-			doc.addAttribute(XSI_NIL, TRUE);
-			doc.endEmptyElement();
-			declareXSI = true;
-		} else {
-			doc.saveDataValueElement(name, value);
-		}
-	}
-
-	protected void saveEAttributeContained0101Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained0110Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0010Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained0111Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureQName(f));
-		doc.startElement(getClassifierWrapperQName(f.getEType()));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1000Single(String value, EStructuralFeature f) {
-		String name = getFeatureWrapperQName(f);
-		if (value == null) {
-			doc.startElement(name);
-			doc.addAttribute(XSI_NIL, TRUE);
-			doc.endEmptyElement();
-			declareXSI = true;
-		} else {
-			doc.saveDataValueElement(name, value);
-		}
-	}
-
-	protected void saveEAttributeContained1001Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1010Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0010Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1011Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		doc.startElement(getClassifierWrapperQName(f.getEType()));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1100Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0100Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1101Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1110Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0010Single(value, f);
-		doc.endElement();
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1111Single(String value, EStructuralFeature f) {
-		doc.startElement(getFeatureWrapperQName(f));
-		doc.startElement(getFeatureQName(f));
-		doc.startElement(getClassifierWrapperQName(f.getEType()));
-		saveEAttributeContained0001Single(value, f);
-		doc.endElement();
-		doc.endElement();
-		doc.endElement();
-	}
-
-	@Override
-	protected void saveDataTypeMany(EObject o, EStructuralFeature f) {
-		assert f.isMany() : "saveElementReferenceMany is applicable for references with true == isMany()"; //$NON-NLS-1$
-
-		@SuppressWarnings("unchecked")
-		InternalEList<? extends EObject> values = (InternalEList<? extends EObject>) helper.getValue(o, f);
-		if (null != values && !values.isEmpty()) {
-			int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-			switch (featureSerializationStructure) {
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-				// not allowed - ignore;
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-				saveEAttributeContained0001Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEAttributeContained0010Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained0011Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-				saveEAttributeContained0100Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained0101Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEAttributeContained0110Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained0111Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-				saveEAttributeContained1000Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained1001Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEAttributeContained1010Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained1011Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-				saveEAttributeContained1100Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained1101Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEAttributeContained1110Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEAttributeContained1111Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-				// if undefined, use the standard EMF mechanism
-				saveEAttributeContained0100Many(values, f);
-				break;
-			default:
-				saveEAttributeContained1001Many(values, f);
-				break;
-			}
-		}
-	}
-
-	protected String getAttributeString(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		EDataType d = (EDataType) f.getEType();
-		EPackage ePackage = d.getEPackage();
-		EFactory fac = ePackage.getEFactoryInstance();
-		buffer.setLength(0);
-		for (Iterator<? extends EObject> i = values.basicIterator();;) {
-			Object value = i.next();
-			String svalue = helper.convertToString(fac, d, value);
-			if (escape != null) {
-				svalue = escape.convertText(svalue);
-			}
-			buffer.append(svalue);
-			if (i.hasNext()) {
-				buffer.append(' ');
-			} else {
-				break;
-			}
-		}
-		return buffer.toString();
-	}
-
-	protected void saveEAttributeContained0001Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		EDataType d = (EDataType) f.getEType();
-		EPackage ePackage = d.getEPackage();
-		EFactory fac = ePackage.getEFactoryInstance();
-		String name = helper.getQName(d);
-		int size = values.size();
-		for (int i = 0; i < size; ++i) {
-			Object value = values.get(i);
-			if (value == null) {
-				doc.startElement(name);
-				doc.addAttribute(XSI_NIL, TRUE);
-				doc.endEmptyElement();
-				declareXSI = true;
-			} else {
-				String svalue = helper.convertToString(fac, d, value);
-				if (escape != null) {
-					svalue = escape.convertText(svalue);
-				}
-				doc.saveDataValueElement(name, svalue);
-			}
-		}
-	}
-
-	protected void saveEAttributeContained0010Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		String name = getClassifierWrapperQName(f.getEType());
-		doc.saveDataValueElement(name, getAttributeString(values, f));
-	}
-
-	protected void saveEAttributeContained0011Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getClassifierWrapperQName(f.getEType()));
-		saveEAttributeContained0001Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained0100Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		// this is the default EMF behaviour
-		assert null != values;
-
-		EDataType d = (EDataType) f.getEType();
-		EPackage ePackage = d.getEPackage();
-		EFactory fac = ePackage.getEFactoryInstance();
-		String name = helper.getQName(f);
-		int size = values.size();
-		for (int i = 0; i < size; ++i) {
-			Object value = values.get(i);
-			if (value == null) {
-				doc.startElement(name);
-				doc.addAttribute(XSI_NIL, TRUE);
-				doc.endEmptyElement();
-				declareXSI = true;
-			} else {
-				String svalue = helper.convertToString(fac, d, value);
-				if (escape != null) {
-					svalue = escape.convertText(svalue);
-				}
-				doc.saveDataValueElement(name, svalue);
-			}
-		}
-	}
-
-	protected void saveEAttributeContained0101Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		EDataType d = (EDataType) f.getEType();
-		EPackage ePackage = d.getEPackage();
-		EFactory fac = ePackage.getEFactoryInstance();
-		String name = getClassifierQName(d);
-		int size = values.size();
-		for (int i = 0; i < size; ++i) {
-			Object value = values.get(i);
-			doc.startElement(getFeatureQName(f));
-			if (value == null) {
-				doc.startElement(name);
-				doc.addAttribute(XSI_NIL, TRUE);
-				doc.endEmptyElement();
-				declareXSI = true;
-			} else {
-				String svalue = helper.convertToString(fac, d, value);
-				if (escape != null) {
-					svalue = escape.convertText(svalue);
-				}
-				doc.saveDataValueElement(name, svalue);
-			}
-			doc.endElement();
-		}
-	}
-
-	protected void saveEAttributeContained0110Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0010Many(values, f);
-		doc.endElement();
-
-	}
-
-	protected void saveEAttributeContained0111Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureQName(f));
-		saveEAttributeContained0011Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1000Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		String name = getFeatureWrapperQName(f);
-		doc.saveDataValueElement(name, getAttributeString(values, f));
-	}
-
-	protected void saveEAttributeContained1001Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0001Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1010Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0010Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1011Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0011Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1100Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0100Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1101Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0101Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1110Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0110Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEAttributeContained1111Many(InternalEList<? extends EObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEAttributeContained0111Many(values, f);
-		doc.endElement();
-	}
-
-	@Override
-	protected void saveContainedMany(EObject o, EStructuralFeature f) {
-		assert f.isMany();
-
-		// XML Mapping serialization enabled
-		@SuppressWarnings("unchecked")
-		List<? extends InternalEObject> values = ((InternalEList<? extends InternalEObject>) helper.getValue(o, f)).basicList();
-		if (null != values) {
-			int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-			switch (featureSerializationStructure) {
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-				saveEReferenceContained0000Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-				saveEReferenceContained0001Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEReferenceContained0010Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained0011Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-				saveEReferenceContained0100Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained0101Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEReferenceContained0110Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained0111Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-				saveEReferenceContained1000Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained1001Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEReferenceContained1010Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained1011Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-				saveEReferenceContained1100Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained1101Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-				saveEReferenceContained1110Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-				saveEReferenceContained1111Many(values, f);
-				break;
-			case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-				// if undefined, use the standard EMF mechanism
-				saveEReferenceContained0100Many(values, f);
-				break;
-			default:
-				saveEReferenceContained1001Many(values, f);
-				break;
-			}
-
-		}
-
-	}
-
-	protected void saveEReferenceContained0000Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		for (EObject value : values) {
-			saveFeatures(value, SerializationType.elementsOnly, true);
-		}
-	}
-
-	protected void saveEReferenceContained0001Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		for (EObject value : values) {
-			doc.startElement(getClassifierQName(value.eClass()));
-			saveFeatures(value);
-		}
-	}
-
-	protected void saveEReferenceContained0010Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		for (EClass eClass : getOrderedClasses(values)) {
-			doc.startElement(getClassifierWrapperQName(eClass));
-			for (EObject value : values) {
-				if (eClass == value.eClass()) {
-					saveFeatures(value, SerializationType.elementsOnly, true);
-				}
-			}
-			doc.endElement();
-		}
-	}
-
-	protected void saveEReferenceContained0011Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		for (EClass eClass : getOrderedClasses(values)) {
-			doc.startElement(getClassifierWrapperQName(eClass));
-			for (EObject value : values) {
-				if (eClass == value.eClass()) {
-					doc.startElement(getClassifierQName(value.eClass()));
-					saveFeatures(value, SerializationType.attributesAndElements, false);
-				}
-			}
-			doc.endElement();
-		}
-	}
-
-	protected void saveEReferenceContained0100Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		// this is the default EMF behaviour
-		assert null != values;
-		assert !values.isEmpty();
-
-		for (EObject value : values) {
-			saveElement(value, f);
-		}
-	}
-
-	protected void saveEReferenceContained0101Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		for (EObject value : values) {
-			doc.startElement(getFeatureQName(f));
-			doc.startElement(getClassifierQName(value.eClass()));
-			saveFeatures(value, SerializationType.attributesAndElements, false);
-			doc.endElement();
-		}
-	}
-
-	protected void saveEReferenceContained0110Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureQName(f));
-		for (EClass eClass : getOrderedClasses(values)) {
-			doc.startElement(getClassifierWrapperQName(eClass));
-			for (EObject value : values) {
-				if (eClass == value.eClass()) {
-					saveFeatures(value, SerializationType.elementsOnly, true);
-				}
-			}
-			doc.endElement();
-		}
-		doc.endElement();
-
-	}
-
-	protected void saveEReferenceContained0111Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureQName(f));
-		for (EClass eClass : getOrderedClasses(values)) {
-			doc.startElement(getClassifierWrapperQName(eClass));
-			for (EObject value : values) {
-				if (eClass == value.eClass()) {
-					doc.startElement(getClassifierQName(value.eClass()));
-					saveFeatures(value);
-				}
-			}
-			doc.endElement();
-		}
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1000Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0000Many(values, f);
-		doc.endElement();
-		// last end is written by caller
-	}
-
-	protected void saveEReferenceContained1001Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0001Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1010Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0010Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1011Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0011Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1100Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0100Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1101Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0101Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1110Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0110Many(values, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1111Many(List<? extends InternalEObject> values, EStructuralFeature f) {
-		assert null != values;
-		assert !values.isEmpty();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0111Many(values, f);
-		doc.endElement();
-	}
-
-	@Override
-	protected void saveContainedSingle(EObject o, EStructuralFeature f) {
-		assert !f.isMany();
-
-		if (isXMLPersistenceMappingEnabled(f)) {
-			// XML Mapping serialization enabled
-			EObject value = (EObject) helper.getValue(o, f);
-			if (null != value) {
-				int featureSerializationStructure = xmlPersistenceMappingExtendedMetaData.getFeatureSerializationStructure(f);
-
-				switch (featureSerializationStructure) {
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0000__NONE:
-					saveEReferenceContained0000Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT:
-					saveEReferenceContained0001Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT:
-					saveEReferenceContained0010Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained0011Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT:
-					saveEReferenceContained0100Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained0101Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-					saveEReferenceContained0110Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained0111Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT:
-					saveEReferenceContained1000Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained1001Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-					saveEReferenceContained1010Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained1011Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT:
-					saveEReferenceContained1100Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained1101Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT:
-					saveEReferenceContained1110Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT:
-					saveEReferenceContained1111Single(value, f);
-					break;
-				case XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__UNDEFINED:
-					// if undefined, use the standard EMF mechanism
-					super.saveContainedSingle(o, f);
-					break;
-				default:
-					saveEReferenceContained1001Single(value, f);
-					break;
-				}
-
-			}
-
-		} else {
-			super.saveContainedSingle(o, f);
-		}
-	}
-
-	protected void saveEReferenceContained0000Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		saveFeatures(value, SerializationType.elementsOnly, true);
-	}
-
-	protected void saveEReferenceContained0001Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getClassifierQName(value.eClass()));
-		saveFeatures(value);
-
-	}
-
-	protected void saveEReferenceContained0010Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		EClass eClass = value.eClass();
-		doc.startElement(getClassifierWrapperQName(eClass));
-		saveFeatures(value);
-	}
-
-	protected void saveEReferenceContained0011Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		EClass eClass = value.eClass();
-		doc.startElement(getClassifierWrapperQName(eClass));
-		doc.startElement(getClassifierQName(eClass));
-		saveFeatures(value);
-		doc.endElement();
-
-	}
-
-	protected void saveEReferenceContained0100Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		saveElement(value, f);
-	}
-
-	protected void saveEReferenceContained0101Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		EClass eClass = value.eClass();
-		doc.startElement(getFeatureQName(f));
-		doc.startElement(getClassifierQName(eClass));
-		saveFeatures(value);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained0110Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		EClass eClass = value.eClass();
-		doc.startElement(getFeatureQName(f));
-		doc.startElement(getClassifierWrapperQName(eClass));
-		saveFeatures(value);
-		doc.endElement();
-
-	}
-
-	protected void saveEReferenceContained0111Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		EClass eClass = value.eClass();
-		doc.startElement(getFeatureQName(f));
-		doc.startElement(getClassifierWrapperQName(eClass));
-		doc.startElement(getClassifierQName(eClass));
-		saveFeatures(value);
-		doc.endElement();
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1000Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0000Single(value, f);
-		doc.endElement();
-		// last end is written by caller
-	}
-
-	protected void saveEReferenceContained1001Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0001Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1010Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0010Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1011Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0011Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1100Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0100Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1101Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0101Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1110Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0110Single(value, f);
-		doc.endElement();
-	}
-
-	protected void saveEReferenceContained1111Single(EObject value, EStructuralFeature f) {
-		assert null != value;
-		assert !f.isMany();
-
-		doc.startElement(getFeatureWrapperQName(f));
-		saveEReferenceContained0111Single(value, f);
-		doc.endElement();
-	}
-
-	protected String getFeatureQName(EStructuralFeature eStructuralFeature) {
-		String featureXMLName = xmlPersistenceMappingExtendedMetaData.getXMLName(eStructuralFeature);
-		EPackage ePackage = eStructuralFeature.getEContainingClass().getEPackage();
-		String prefix = helper.getPrefix(ePackage);
-		return getQName(prefix, featureXMLName);
-	}
-
-	protected String getFeatureWrapperQName(EStructuralFeature eStructuralFeature) {
-		String featureWrapperXMLName = xmlPersistenceMappingExtendedMetaData.getXMLWrapperName(eStructuralFeature);
-		EPackage ePackage = eStructuralFeature.getEContainingClass().getEPackage();
-		String prefix = helper.getPrefix(ePackage);
-		return getQName(prefix, featureWrapperXMLName);
-	}
-
-	protected String getClassifierQName(EClassifier eClassifier) {
-		String classifierXMLName = xmlPersistenceMappingExtendedMetaData.getXMLName(eClassifier);
-		EPackage ePackage = eClassifier.getEPackage();
-		String prefix = helper.getPrefix(ePackage);
-		return getQName(prefix, classifierXMLName);
-	}
-
-	protected String getClassifierQName(EClassifier eClassifier, EStructuralFeature eStructuralFeature) {
-		String classifierXMLName = xmlPersistenceMappingExtendedMetaData.getXMLName(eClassifier, eStructuralFeature);
-		EPackage ePackage = eClassifier.getEPackage();
-		String prefix = helper.getPrefix(ePackage);
-		return getQName(prefix, classifierXMLName);
-	}
-
-	protected String getClassifierWrapperQName(EClassifier eClassifier) {
-		String classifierWrapperXMLName = xmlPersistenceMappingExtendedMetaData.getXMLWrapperName(eClassifier);
-		EPackage ePackage = eClassifier.getEPackage();
-		String prefix = helper.getPrefix(ePackage);
-		return getQName(prefix, classifierWrapperXMLName);
-	}
-
-	protected String getQName(String prefix, String name) {
-		if (null == prefix || 0 == prefix.length()) {
-			return name;
-		} else {
-			return prefix + ":" + name; //$NON-NLS-1$
-		}
-	}
-
-	@Override
-	protected void init(XMLResource resource, Map<?, ?> options) {
-		super.init(resource, options);
-
-		// set extended meta data
-		Object extendedMetaDataOption = options.get(XMLResource.OPTION_EXTENDED_META_DATA);
-		if (null != extendedMetaDataOption && extendedMetaDataOption instanceof XMLPersistenceMappingExtendedMetaData) {
-			xmlPersistenceMappingExtendedMetaData = (XMLPersistenceMappingExtendedMetaData) options.get(XMLResource.OPTION_EXTENDED_META_DATA);
-			extendedMetaData = xmlPersistenceMappingExtendedMetaData;
-		} else {
-			// default
-			xmlPersistenceMappingExtendedMetaData = xmlResource == null || xmlResource.getResourceSet() == null ? XMLPersistenceMappingExtendedMetaData.INSTANCE
-					: new XMLPersistenceMappingExtendedMetaDataImpl(xmlResource.getResourceSet().getPackageRegistry());
-			extendedMetaData = xmlPersistenceMappingExtendedMetaData;
-		}
-		helper.setExtendedMetaData(xmlPersistenceMappingExtendedMetaData);
-
-		Object namespaceToPrefixMapObject = options.get(XMLPersistenceMappingResource.OPTION_NAMEPSACE_TO_PREFIX_MAP);
-		if (null != namespaceToPrefixMapObject && namespaceToPrefixMapObject instanceof Map<?, ?>) {
-			@SuppressWarnings("unchecked")
-			Map<Object, Object> namespaceToPrefixMap = (Map<Object, Object>) namespaceToPrefixMapObject;
-			EMap<String, String> prefixToNamespaceMap = helper.getPrefixToNamespaceMap();
-			for (Map.Entry<Object, Object> entry : namespaceToPrefixMap.entrySet()) {
-				Object namespace = entry.getKey();
-				Object prefix = entry.getValue();
-				if (namespace instanceof String && prefix instanceof String) {
-					if (prefixToNamespaceMap.contains(prefix)) {
-						// TODO: handle namespace redefinitions
-						if (null == redefinedNamespaceUriToPrefixMap) {
-							redefinedNamespaceUriToPrefixMap = new HashMap<String, String>();
-						}
-						redefinedNamespaceUriToPrefixMap.put((String) namespace, (String) prefix);
-					} else {
-						prefixToNamespaceMap.put((String) prefix, (String) namespace);
-					}
-				}
-			}
-		}
-
-		assert null != xmlPersistenceMappingExtendedMetaData : "xmlPersistenceMappingExtendedMetaData should never be null"; //$NON-NLS-1$
-		assert null != extendedMetaData : "extendedMetaData should never be null"; //$NON-NLS-1$
-	}
-
-	protected Collection<EClass> getOrderedClasses(List<? extends InternalEObject> values) {
-		Set<EClass> classesSet = new LinkedHashSet<EClass>();
-		for (EObject value : values) {
-			classesSet.add(value.eClass());
-		}
-
-		List<EClass> classesList = new ArrayList<EClass>(classesSet);
-		Comparator<EClass> comparator = new Comparator<EClass>() {
-			public int compare(EClass o1, EClass o2) {
-				return o1.getName().compareTo(o2.getName());
-			}
-		};
-
-		Collections.sort(classesList, comparator);
-
-		return classesList;
-	}
-
-	protected boolean isXMLPersistenceMappingEnabled(EStructuralFeature feature) {
-		return xmlPersistenceMappingExtendedMetaData.isXMLPersistenceMappingEnabled(feature);
-	}
-
-	@Override
-	protected void saveElementID(EObject o) {
-		// avoid writing the ID since this is already written as usual attribute
-		saveFeatures(o);
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/doc-files/LoadPatternEAttributeContained0100.png b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/doc-files/LoadPatternEAttributeContained0100.png
deleted file mode 100644
index da8e79d..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/internal/serialization/doc-files/LoadPatternEAttributeContained0100.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/IdAdapter.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/IdAdapter.java
deleted file mode 100644
index 0de7ac2..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/IdAdapter.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Mark Broerkens - initial API and implementation
- * 
- */
-package org.eclipse.rmf.serialization;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-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;
-
-public class IdAdapter extends EContentAdapter {
-	final Map<String, EObject> idToEObjectMap;
-	final Map<EObject, String> eObjectToIDMap;
-	final Collection<EPackage> createIdForPackages;
-
-	public IdAdapter(Map<String, EObject> idToEObjectMap, Map<EObject, String> eObjectToIDMap, Collection<EPackage> createIdForPackages) {
-		super();
-		this.idToEObjectMap = idToEObjectMap;
-		this.eObjectToIDMap = eObjectToIDMap;
-		this.createIdForPackages = createIdForPackages;
-	}
-
-	@Override
-	public boolean isAdapterForType(Object type) {
-		// TODO Auto-generated method stub
-		return super.isAdapterForType(type);
-	}
-
-	@Override
-	public void notifyChanged(Notification n) {
-		assert null != n.getNotifier();
-		super.notifyChanged(n); // the superclass handles adding/removing this Adapter to new Books
-
-		Object notifier_ = n.getNotifier();
-		if (!n.isTouch()) {
-			if (notifier_ instanceof EObject) {
-				Object feature = n.getFeature();
-				if (feature instanceof EAttribute) {
-					// handle changed id
-					EAttribute attribute = (EAttribute) feature;
-					if (attribute.isID()) {
-						String newId = n.getNewStringValue();
-						String oldId = n.getOldStringValue();
-						EObject objectWithId = (EObject) n.getNotifier();
-						switch (n.getEventType()) {
-						case Notification.SET:
-							if (null == newId) {
-								eObjectToIDMap.remove(objectWithId);
-							} else {
-								eObjectToIDMap.put(objectWithId, newId);
-								idToEObjectMap.put(newId, objectWithId);
-							}
-
-							if (null != oldId) {
-								idToEObjectMap.remove(oldId);
-							}
-							break;
-						case Notification.UNSET:
-							eObjectToIDMap.remove(objectWithId);
-							idToEObjectMap.remove(oldId);
-							break;
-						}
-					}
-				} else {
-					// handle removed or added objects
-					EReference reference = (EReference) feature;
-					if (reference.isContainment()) {
-
-						switch (n.getEventType()) {
-						case Notification.SET:
-						case Notification.ADD:
-							handleNewObjectAndSubObjects((EObject) n.getNewValue());
-							break;
-						case Notification.ADD_MANY:
-							EList<EObject> newObjects = (EList<EObject>) n.getNewValue();
-							int size = newObjects.size();
-							for (int i = 0; i < size; i++) {
-								handleNewObjectAndSubObjects(newObjects.get(i));
-							}
-							break;
-						case Notification.UNSET:
-						case Notification.REMOVE:
-							handleRemoveObjectAndSubObjects((EObject) n.getOldValue());
-							break;
-						case Notification.REMOVE_MANY:
-							EList<EObject> removeObjects = (EList<EObject>) n.getOldValue();
-							size = removeObjects.size();
-							for (int i = 0; i < size; i++) {
-								handleRemoveObjectAndSubObjects(removeObjects.get(i));
-							}
-							break;
-						}
-
-					}
-				}
-
-			} else if (notifier_ instanceof Resource) {
-				// feature is null
-				int featureID = n.getFeatureID(Resource.class);
-				if (Resource.RESOURCE__CONTENTS == featureID) {
-					switch (n.getEventType()) {
-					case Notification.SET:
-					case Notification.ADD:
-						handleNewObjectAndSubObjects((EObject) n.getNewValue());
-						break;
-					case Notification.ADD_MANY:
-						EList<EObject> newObjects = (EList<EObject>) n.getNewValue();
-						int size = newObjects.size();
-						for (int i = 0; i < size; i++) {
-							handleNewObjectAndSubObjects(newObjects.get(i));
-						}
-						break;
-					case Notification.UNSET:
-					case Notification.REMOVE:
-						handleRemoveObjectAndSubObjects((EObject) n.getOldValue());
-						break;
-					case Notification.REMOVE_MANY:
-						EList<EObject> removeObjects = (EList<EObject>) n.getOldValue();
-						size = removeObjects.size();
-						for (int i = 0; i < size; i++) {
-							handleRemoveObjectAndSubObjects(removeObjects.get(i));
-						}
-						break;
-					}
-				}
-			} else if (notifier_ instanceof ResourceSet) {
-				// NOP
-			} else {
-				// NOP
-			}
-
-		} // end if isTouch
-
-	}// end notifyChanged
-
-	void handleNewObjectAndSubObjects(EObject objectWithId) {
-		if (null != objectWithId) {
-			handleNewObject(objectWithId);
-		}
-		TreeIterator<EObject> iterator = objectWithId.eAllContents();
-		while (iterator.hasNext()) {
-			handleNewObject(iterator.next());
-		}
-	}
-
-	void handleNewObject(EObject objectWithId) {
-		assert null != objectWithId;
-		EAttribute idAttribute = objectWithId.eClass().getEIDAttribute();
-		if (null != idAttribute) {
-			String id = (String) objectWithId.eGet(idAttribute);
-			if ((id == null || 0 == id.length()) && createIdForPackages.contains(objectWithId.eClass().getEPackage())) {
-				id = EcoreUtil.generateUUID();
-				objectWithId.eSet(idAttribute, id);
-				// id map gets updated by notification on setId
-			} else {
-				eObjectToIDMap.put(objectWithId, id);
-				idToEObjectMap.put(id, objectWithId);
-			}
-		}
-	}
-
-	void handleRemoveObjectAndSubObjects(EObject objectWithId) {
-		if (null != objectWithId) {
-			handleRemoveObject(objectWithId);
-		}
-		TreeIterator<EObject> iterator = objectWithId.eAllContents();
-		while (iterator.hasNext()) {
-			handleRemoveObject(iterator.next());
-		}
-	}
-
-	void handleRemoveObject(EObject objectWithId) {
-		assert null != objectWithId;
-		String id = eObjectToIDMap.remove(objectWithId);
-		if (null != id) {
-			idToEObjectMap.remove(id);
-		}
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaData.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaData.java
deleted file mode 100644
index 72da53e..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaData.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-
-public interface XMLPersistenceMappingExtendedMetaData extends ExtendedMetaData {
-
-	/**
-	 * The URI used as the annotation source:
-	 * "http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData".
-	 */
-	String XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI = "http:///org/eclipse/sphinx/emf/serialization/XMLPersistenceMappingExtendedMetaData"; //$NON-NLS-1$
-
-	/**
-	 * Returns the XML name for a classifier. This is the name is used if a classifier XML element is configured.
-	 * <p>
-	 * details key: "name"
-	 */
-	String getXMLName(EClassifier eClassifier);
-
-	/**
-	 * Returns the XML name for a classifier in a context of a given feature. This name is used if a classifier XML
-	 * element is configured.
-	 * <p>
-	 * details key: Classifier "name" <br/>
-	 * details key: EStructuralFeature "classifierNameSuffix"
-	 */
-	String getXMLName(EClassifier classifier, EStructuralFeature eStructuralFeature);
-
-	/**
-	 * Sets the XML name for a classifier. This is the name is used if a classifier XML element is configured.
-	 * <p>
-	 * details key: "xmlName"
-	 */
-	// void setXMLName(EClassifier eClassifier, String xmlName);
-
-	/**
-	 * Returns the XML wrapper name for a classifier. This is the name is used if a classifier wrapper XML element is
-	 * configured.
-	 * <p>
-	 * details key: "wrapperName"
-	 */
-	String getXMLWrapperName(EClassifier eClassifier);
-
-	/**
-	 * Sets the XML wrapper name for a classifier. This is the name is used if a classifier wrapper XML element is
-	 * configured.
-	 * <p>
-	 * details key: "wrapperName"
-	 */
-	// void setXMLWrapperName(EClassifier eClassifier, String xmlName);
-
-	/**
-	 * Returns the XML name for a structural feature. This is the name is used if a feature XML element is configured.
-	 * <p>
-	 * details key: "name"
-	 */
-	String getXMLName(EStructuralFeature eStructuralFeature);
-
-	/**
-	 * Set the XML name for a structural feature. This is the name is used if a feature XML element is configured.
-	 * <p>
-	 * details key: "name"
-	 */
-	// void setXMLName(EStructuralFeature eStructuralFeature, String xmlName);
-
-	/**
-	 * Returns the XML name for a structural feature. This is the name is used if a feature wrapper XML element is
-	 * configured.
-	 * <p>
-	 * details key: "wrapperName"
-	 */
-	String getXMLWrapperName(EStructuralFeature eStructuralFeature);
-
-	/**
-	 * Set the XML name for a structural feature. This is the name is used if a feature wrapper XML element is
-	 * configured.
-	 * <p>
-	 * details key: "wrapperName"
-	 */
-	// void setXMLWrapperName(EStructuralFeature eStructuralFeature, String xmlName);
-
-	/**
-	 * Returns the classifier with the given XML name within the package with the given namespace.
-	 */
-	EClassifier getTypeByXMLName(String namespace, String xmlName);
-
-	/**
-	 * Returns the classifier with the given XML name within the package with the given namespace.
-	 */
-	EClassifier getTypeByXMLName(String namespace, String xmlName, EStructuralFeature feature);
-
-	/**
-	 * Returns the classifier with the given XML wrapper name within the package with the given namespace.
-	 */
-	EClassifier getTypeByXMLWrapperName(String namespace, String xmlWrapperName);
-
-	/**
-	 * Returns the classifier with the given XML name within the given package.
-	 */
-	EClassifier getTypeByXMLName(EPackage ePackage, String xmlName);
-
-	/**
-	 * Returns the classifier with the given XML name within the given package.
-	 */
-	EClassifier getTypeByXMLWrapperName(EPackage ePackage, String xmlWrapperName);
-
-	/**
-	 * Retrieves the package with the specified namespace URI from the package registry associated with this instance.
-	 */
-	EPackage getPackage(String namespace);
-
-	boolean isXMLPersistenceMappingEnabled(EStructuralFeature feature);
-
-	/**
-	 * Returns a structural feature within a class, corresponding to a local attribute with the given namespace and
-	 * name, or, failing that, a document root feature corresponding to a global attribute with the given namespace and
-	 * name that is {@link #getAffiliation(EClass, EStructuralFeature) affiliated} with a feature in the class.
-	 */
-	EStructuralFeature getAttribute(EClass eClass, String namespace, String name);
-
-	/**
-	 * Returns a structural feature within a class, corresponding to a local element with the given namespace and name,
-	 * or, failing that, a document root feature corresponding to a global element with the given namespace and name
-	 * that is {@link #getAffiliation(EClass, EStructuralFeature) affiliated} with a feature in the class.
-	 */
-	EStructuralFeature getFeatureByXMLElementName(EClass eClass, String namespace, String name);
-
-	int SERIALIZATION_STRUCTURE__UNDEFINED = -1;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   ...
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=false" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0000__NONE = 0;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   	(&lt;ClassifierName&gt; ... &lt;/ClassifierName&gt;)?
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=true" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT = 1;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *    &lt;ClassifierWrapperName&gt;
-	 *   	( ... )?
-	 *    &lt;/ClassifierWrapperName&gt;
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=true"<br/>
-	 * details key: "classifierElement=false" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT = 2;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *    &lt;ClassifierWrapperName&gt;
-	 *   	(&lt;ClassifierName&gt; ... &lt;/ClassifierName&gt;)?
-	 *    &lt;/ClassifierWrapperName&gt;
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=true"<br/>
-	 * details key: "classifierElement=true" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT = 3;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *    (&lt;FeatureName&gt;
-	 *   	...
-	 *    &lt;/FeatureName&gt;)?
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=true" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=false" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT = 4;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   (&lt;FeatureName&gt;
-	 *   	&lt;ClassifierName&gt; ... &lt;/ClassifierName&gt;
-	 *   &lt;/FeatureName&gt;)?
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=true" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=true" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT = 5;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   (&lt;FeatureName&gt;
-	 *   	&lt;ClassifierWrapperName&gt; ... &lt;/ClassifierWrapperName&gt;
-	 *   &lt;/FeatureName&gt;)?
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=true" <br/>
-	 * details key: "classifierWrapperElement=true"<br/>
-	 * details key: "classifierElement=false" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT = 6;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   (&lt;FeatureName&gt;
-	 *   	&lt;ClassifierWrapperName&gt; 
-	 *        (&lt;ClassifierName&gt; ... &lt;/ClassifierName&gt;)?
-	 *      &lt;/ClassifierWrapperName&gt; 
-	 *   &lt;/FeatureName&gt;)?
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=false" <br/>
-	 * details key: "featureElement=true" <br/>
-	 * details key: "classifierWrapperElement=true"<br/>
-	 * details key: "classifierElement=true" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT = 7;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   &lt;FeatureWrapperName&gt;
-	 *       ( ... )? 
-	 *   &lt;/FeatureWrapperName&gt;
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=true" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=false" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT = 8;
-
-	/**
-	 * The feature serialization structure ID for a feature that is serialized using the following XML element
-	 * structure:
-	 * 
-	 * <pre>
-	 * &lt;Parent&gt;
-	 *   &lt;FeatureWrapperName&gt;
-	 *   	(&lt;ClassifierName&gt; ... &lt;/ClassifierName&gt;)?
-	 *   &lt;/FeatureWrapperName&gt;
-	 * &lt;/Parent&gt;
-	 * </pre>
-	 * 
-	 * details key: "featureWrapperElement=true" <br/>
-	 * details key: "featureElement=false" <br/>
-	 * details key: "classifierWrapperElement=false"<br/>
-	 * details key: "classifierElement=true" <br/>
-	 * 
-	 * @see #getFeatureSerializationStructure
-	 * @see #setFeatureSerializationStructure
-	 */
-	int SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT = 9;
-
-	int SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT = 10;
-
-	int SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT = 11;
-
-	int SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT = 12;
-
-	int SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT = 13;
-
-	int SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT = 14;
-
-	int SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT = 15;
-
-	/**
-	 * Returns the kind of XML structure that should be used to represent the given structural feature.
-	 * <p>
-	 * details key: "featureElement" <br/>
-	 * details key: "featureWrapperElement" <br/>
-	 * details key: "classifierElement" <br/>
-	 * details key: "classifierWrapperElement"<br/>
-	 * 
-	 * @param eStructuralFeature
-	 * @param featureSerializationKind
-	 */
-	int getFeatureSerializationStructure(EStructuralFeature eStructuralFeature);
-
-	/**
-	 * Sets the kind of XML structure that should be used to represent the given structural feature.
-	 * <p>
-	 * details key: "featureElement" <br/>
-	 * details key: "featureWrapperElement" <br/>
-	 * details key: "classifierElement" <br/>
-	 * details key: "classifierWrapperElement"<br/>
-	 * 
-	 * @param eStructuralFeature
-	 * @param featureSerializationKind
-	 */
-	void setFeatureSerializationStructure(EStructuralFeature eStructuralFeature, int serializationStructure);
-
-	/**
-	 * The default RMFExtendedMetaData instance.
-	 */
-	XMLPersistenceMappingExtendedMetaData INSTANCE = new XMLPersistenceMappingExtendedMetaDataImpl();
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaDataImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaDataImpl.java
deleted file mode 100644
index 7840841..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingExtendedMetaDataImpl.java
+++ /dev/null
@@ -1,874 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.emf.ecore.EAnnotation;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EModelElement;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
-
-public class XMLPersistenceMappingExtendedMetaDataImpl extends BasicExtendedMetaData implements XMLPersistenceMappingExtendedMetaData {
-	static final String WRAPPER_NAME = "wrapperName"; //$NON-NLS-1$
-	static final String CLASSIFIER_NAME_SUFFIX = "classifierNameSuffix"; //$NON-NLS-1$
-
-	static final String FEATURE_WRAPPER_ELEMENT = "featureWrapperElement"; //$NON-NLS-1$
-	static final String FEATURE_ELEMENT = "featureElement"; //$NON-NLS-1$
-	static final String CLASSIFIER_WRAPPER_ELEMENT = "classifierWrapperElement"; //$NON-NLS-1$
-	static final String CLASSIFIER_ELEMENT = "classifierElement"; //$NON-NLS-1$
-
-	static final int FEATURE_WRAPPER_ELEMENT_MASK = 8;
-	static final int FEATURE_ELEMENT_MASK = 4;
-	static final int CLASSIFIER_WRAPPER_ELEMENT_MASK = 2;
-	static final int CLASSIFIER_ELEMENT_MASK = 1;
-
-	protected EPackage.Registry registry;
-
-	protected int[] fallbackSerializationConfiguration = {
-			SERIALIZATION_STRUCTURE__0000__NONE /* 0000 */,
-			// SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0001 */,
-			SERIALIZATION_STRUCTURE__0001__CLASSIFIER_ELEMENT /* 0001 */,
-			// SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0010 */,
-			SERIALIZATION_STRUCTURE__0010__CLASSIFIER_WRAPPER_ELEMENT /* 0010 */,
-			// SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0011 */,
-			SERIALIZATION_STRUCTURE__0011__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0011 */,
-			SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT /* 0100 */,
-			SERIALIZATION_STRUCTURE__0101__FEATURE_ELEMENT__CLASSIFIER_ELEMENT/* 0101 */,
-			// SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0110 */,
-			SERIALIZATION_STRUCTURE__0110__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT/* 0110 */,
-			// SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 0111 */,
-			SERIALIZATION_STRUCTURE__0111__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT /* 0111 */,
-			SERIALIZATION_STRUCTURE__1000__FEATURE_WRAPPER_ELEMENT /* 1000 */,
-			SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 1001 */,
-			SERIALIZATION_STRUCTURE__1010__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT/* 1010 */,
-			SERIALIZATION_STRUCTURE__1011__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT/* 1011 */,
-			SERIALIZATION_STRUCTURE__1100__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT/* 1100_ */,
-			SERIALIZATION_STRUCTURE__1101__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_ELEMENT /* 1101 */,
-			SERIALIZATION_STRUCTURE__1110__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT/* 1110 */,
-			SERIALIZATION_STRUCTURE__1111__FEATURE_WRAPPER_ELEMENT__FEATURE_ELEMENT__CLASSIFIER_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT /* 1111 */
-	};
-
-	static final String PLURAL_EXTENSION = "s"; //$NON-NLS-1$
-
-	protected Map<EModelElement, Object> extendedMetaDataCache = new HashMap<EModelElement, Object>();
-	protected Map<EModelElement, EAnnotation> annotationCache = new HashMap<EModelElement, EAnnotation>();
-
-	public static interface XMLPersistenceMappingEPackageExtendedMetaData {
-		EClassifier getType(String name);
-
-		EClassifier getType(String name, EStructuralFeature feature);
-
-		EClassifier getTypeByWrapperName(String wrapperName);
-
-		void renameToXMLName(EClassifier eClassifier, String newName);
-
-		void renameToXMLWrapperName(EClassifier eClassifier, String newName);
-	}
-
-	public class XMLPersistenceMappingEPackageExtendedMetaDataImpl implements XMLPersistenceMappingEPackageExtendedMetaData {
-		protected EPackage ePackage;
-		protected boolean isInitialized;
-		protected boolean isQualified;
-		protected Map<String, EClassifier> xmlNameToClassifierMap = new HashMap<String, EClassifier>();
-		protected Map<String, EClassifier> xmlWrapperNameToClassifierMap = new HashMap<String, EClassifier>();
-
-		public XMLPersistenceMappingEPackageExtendedMetaDataImpl(EPackage ePackage) {
-			this.ePackage = ePackage;
-		}
-
-		public EClassifier getType(String name) {
-			EClassifier result = null;
-			if (xmlNameToClassifierMap != null) {
-				result = xmlNameToClassifierMap.get(name);
-			}
-			if (result == null) {
-				List<EClassifier> eClassifiers = ePackage.getEClassifiers();
-				int size = eClassifiers.size();
-				if (xmlNameToClassifierMap == null || xmlNameToClassifierMap.size() != size) {
-					Map<String, EClassifier> nameToClassifierMap = new HashMap<String, EClassifier>();
-					if (xmlNameToClassifierMap != null) {
-						nameToClassifierMap.putAll(xmlNameToClassifierMap);
-					}
-
-					// For demand created created packages we allow the list of classifiers to grow
-					// so this should handle those additional instances.
-					//
-					int originalMapSize = nameToClassifierMap.size();
-					for (int i = originalMapSize; i < size; ++i) {
-						EClassifier eClassifier = eClassifiers.get(i);
-						String eClassifierName = getXMLName(eClassifier);
-						EClassifier conflictingEClassifier = nameToClassifierMap.put(eClassifierName, eClassifier);
-						if (conflictingEClassifier != null && conflictingEClassifier != eClassifier) {
-							nameToClassifierMap.put(eClassifierName, conflictingEClassifier);
-						}
-					}
-
-					if (nameToClassifierMap.size() != size) {
-						for (int i = 0; i < originalMapSize; ++i) {
-							EClassifier eClassifier = eClassifiers.get(i);
-							String eClassifierName = getXMLName(eClassifier);
-							EClassifier conflictingEClassifier = nameToClassifierMap.put(eClassifierName, eClassifier);
-							if (conflictingEClassifier != null && conflictingEClassifier != eClassifier) {
-								nameToClassifierMap.put(eClassifierName, conflictingEClassifier);
-							}
-						}
-					}
-					result = nameToClassifierMap.get(name);
-					xmlNameToClassifierMap = nameToClassifierMap;
-				}
-			}
-
-			return result;
-		}
-
-		public EClassifier getType(String name, EStructuralFeature feature) {
-			// TODO optimize implementation for performance
-			String classifierNameSuffix = getXMLPersistenceMappingExtendedMetaData(feature).getXMLClassiferNameSuffix();
-			EClassifier classifier;
-			int classifierNameSuffixLength = classifierNameSuffix.length();
-			if (0 == classifierNameSuffixLength) {
-				classifier = getType(name);
-			} else {
-				if (name.endsWith(classifierNameSuffix)) {
-					String classfierName = name.substring(0, name.length() - classifierNameSuffixLength);
-					classifier = getType(classfierName);
-				} else {
-					classifier = null;
-				}
-			}
-
-			return classifier;
-		}
-
-		public EClassifier getTypeByWrapperName(String name) {
-			EClassifier result = null;
-			if (xmlWrapperNameToClassifierMap != null) {
-				result = xmlWrapperNameToClassifierMap.get(name);
-			}
-			if (result == null) {
-				List<EClassifier> eClassifiers = ePackage.getEClassifiers();
-				int size = eClassifiers.size();
-				if (xmlWrapperNameToClassifierMap == null || xmlWrapperNameToClassifierMap.size() != size) {
-					Map<String, EClassifier> wrapperNameToClassifierMap = new HashMap<String, EClassifier>();
-					if (xmlWrapperNameToClassifierMap != null) {
-						wrapperNameToClassifierMap.putAll(xmlWrapperNameToClassifierMap);
-					}
-
-					// For demand created created packages we allow the list of classifiers to grow
-					// so this should handle those additional instances.
-					//
-					int originalMapSize = wrapperNameToClassifierMap.size();
-					for (int i = originalMapSize; i < size; ++i) {
-						EClassifier eClassifier = eClassifiers.get(i);
-						String eClassifierWrapperName = getXMLWrapperName(eClassifier);
-						EClassifier conflictingEClassifier = wrapperNameToClassifierMap.put(eClassifierWrapperName, eClassifier);
-						if (conflictingEClassifier != null && conflictingEClassifier != eClassifier) {
-							wrapperNameToClassifierMap.put(eClassifierWrapperName, conflictingEClassifier);
-						}
-					}
-
-					if (wrapperNameToClassifierMap.size() != size) {
-						for (int i = 0; i < originalMapSize; ++i) {
-							EClassifier eClassifier = eClassifiers.get(i);
-							String eClassifierWrapperName = getXMLWrapperName(eClassifier);
-							EClassifier conflictingEClassifier = wrapperNameToClassifierMap.put(eClassifierWrapperName, eClassifier);
-							if (conflictingEClassifier != null && conflictingEClassifier != eClassifier) {
-								wrapperNameToClassifierMap.put(eClassifierWrapperName, conflictingEClassifier);
-							}
-						}
-					}
-					result = wrapperNameToClassifierMap.get(name);
-					xmlWrapperNameToClassifierMap = wrapperNameToClassifierMap;
-				}
-			}
-
-			return result;
-		}
-
-		public void renameToXMLName(EClassifier eClassifier, String newName) {
-			if (xmlNameToClassifierMap != null) {
-				xmlNameToClassifierMap.values().remove(eClassifier);
-				xmlNameToClassifierMap.put(newName, eClassifier);
-			}
-		}
-
-		public void renameToXMLWrapperName(EClassifier eClassifier, String newName) {
-			if (xmlWrapperNameToClassifierMap != null) {
-				xmlWrapperNameToClassifierMap.values().remove(eClassifier);
-				xmlWrapperNameToClassifierMap.put(newName, eClassifier);
-			}
-		}
-	}
-
-	public static interface XMLPersistenceMappingEClassifierExtendedMetaData {
-		String getXMLName();
-
-		void setXMLName(String name);
-
-		String getXMLWrapperName();
-
-		void setXMLWrapperName(String name);
-
-		EStructuralFeature getFeatureByXMLElementName(String namespace, String xmlElementName);
-
-	}
-
-	class XMLPersistenceMappingEDataTypeExtendedMetaDataImpl implements XMLPersistenceMappingEClassifierExtendedMetaData {
-		protected static final String UNINITIALIZED_STRING = "uninitialized"; //$NON-NLS-1$
-		protected static final int UNINITIALIZED_INT = -2;
-
-		protected EClassifier eClassifier;
-		protected String xmlName = UNINITIALIZED_STRING;
-		protected String xmlWrapperName = UNINITIALIZED_STRING;
-
-		public XMLPersistenceMappingEDataTypeExtendedMetaDataImpl(EClassifier eClassifier) {
-			super();
-			this.eClassifier = eClassifier;
-		}
-
-		public String getXMLName() {
-			if (UNINITIALIZED_STRING == xmlName) {
-				setXMLName(basicGetName(eClassifier));
-			}
-			return xmlName;
-		}
-
-		public void setXMLName(String xmlName) {
-			this.xmlName = xmlName;
-		}
-
-		public String getXMLWrapperName() {
-			if (UNINITIALIZED_STRING == xmlName) {
-				setXMLWrapperName(basicGetWrapperName(eClassifier));
-			}
-			return xmlWrapperName;
-		}
-
-		public void setXMLWrapperName(String xmlWrapperName) {
-			this.xmlWrapperName = xmlWrapperName;
-
-		}
-
-		public EStructuralFeature getFeatureByXMLElementName(String namespace, String xmlElementName) {
-			throw new UnsupportedOperationException("Can't get a feature of an EDataType"); //$NON-NLS-1$
-		}
-	}
-
-	class XMLPersistenceMappingEClassExtendedMetaDataImpl implements XMLPersistenceMappingEClassifierExtendedMetaData {
-		protected static final String UNINITIALIZED_STRING = "uninitialized"; //$NON-NLS-1$
-		protected static final int UNINITIALIZED_INT = -2;
-
-		protected EClass eClass;
-		protected String xmlName = UNINITIALIZED_STRING;
-		protected String xmlWrapperName = UNINITIALIZED_STRING;
-
-		protected Map<String, EStructuralFeature> xmlNameToEStructuralFeatureMap = new HashMap<String, EStructuralFeature>();
-
-		public XMLPersistenceMappingEClassExtendedMetaDataImpl(EClassifier eClassifier) {
-			super();
-			assert eClassifier instanceof EClass;
-			eClass = (EClass) eClassifier;
-		}
-
-		public String getXMLName() {
-			if (UNINITIALIZED_STRING == xmlName) {
-				setXMLName(basicGetName(eClass));
-			}
-			return xmlName;
-		}
-
-		public void setXMLName(String xmlName) {
-			this.xmlName = xmlName;
-		}
-
-		public String getXMLWrapperName() {
-			if (UNINITIALIZED_STRING == xmlWrapperName) {
-				setXMLWrapperName(basicGetWrapperName(eClass));
-			}
-			return xmlWrapperName;
-		}
-
-		public void setXMLWrapperName(String xmlWrapperName) {
-			this.xmlWrapperName = xmlWrapperName;
-
-		}
-
-		/**
-		 * return first EStructuralFeature that fits to the XML element name TODO: add error handling for ambiguous
-		 * features
-		 */
-		public EStructuralFeature getFeatureByXMLElementName(String namespace, String xmlElementName) {
-			// try to find the EStructural feature locally
-			// TODO: consider namespace
-			EStructuralFeature result = xmlNameToEStructuralFeatureMap.get(xmlElementName);
-			if (null == result) {
-				Iterator<EStructuralFeature> allFeaturesIter = eClass.getEAllStructuralFeatures().iterator();
-				// TODO: we should iterate over features with no kind or
-				List<EStructuralFeature> results = new ArrayList<EStructuralFeature>();
-				EStructuralFeature possibleResult;
-
-				while (allFeaturesIter.hasNext()) {
-					EStructuralFeature feature = allFeaturesIter.next();
-					possibleResult = null;
-					String xmlWrapperName = getXMLPersistenceMappingExtendedMetaData(feature).getXMLWrapperName();
-
-					// search by feature wrapper
-					if (xmlWrapperName.equals(xmlElementName) && isIdentifiedByFeatureWrapper(feature)) {
-						if (isIdentifiedByFeatureWrapper(feature)) {
-							possibleResult = feature;
-						} else {
-							// not found, continue with next feature
-						}
-					}
-
-					if (null == possibleResult) {
-						// search by feature name
-						String xmlName = getXMLPersistenceMappingExtendedMetaData(feature).getXMLName();
-						if (xmlName.equals(xmlElementName)) {
-							if (isIdentifiedByFeature(feature)) {
-								possibleResult = feature;
-							} else {
-								// not found, continue with next feature
-							}
-						}
-					}
-
-					if (null == possibleResult) {
-						// search by type wrapper (assuming type is type of feature)
-						String classifierWrapperXMLName = getXMLPersistenceMappingExtendedMetaData(feature.getEType()).getXMLWrapperName();
-						if (classifierWrapperXMLName.equals(xmlElementName)) {
-							if (isIdentifiedByClassifierWrapper(feature)) {
-								possibleResult = feature;
-							} else {
-								// not found, continue with next feature
-							}
-						} else {
-							// search by type wrapper name (assuming type not type of feature)
-							EClassifier classifier = getTypeByXMLWrapperName(namespace, xmlElementName);
-							if (null != classifier) {
-								if (feature.getEType().equals(classifier)) {
-									if (isIdentifiedByClassifierWrapper(feature)) {
-										possibleResult = feature;
-									} else {
-										// not found, continue with next feature
-									}
-								} else if (classifier instanceof EClass) {
-									EClass eClass = (EClass) classifier;
-									// check if the identified is a sub-type of the eType of the reference
-									// note: EObject is not listed in EAllSuperTypes
-									if (feature.getEType() == EcorePackage.eINSTANCE.getEObject()
-											|| eClass.getEAllSuperTypes().contains(feature.getEType())) {
-										if (isIdentifiedByClassifierWrapper(feature)) {
-											possibleResult = feature;
-										} else {
-											// not found, continue with next feature
-										}
-									} else {
-										// not found, continue with next feature
-									}
-								} else {
-									// not found, continue with next feature
-								}
-							}
-						}
-					}
-					if (null == possibleResult) {
-						// search by type name (assuming type not type of feature)
-						EClassifier classifier;
-						EPackage ePackage = getPackage(namespace);
-						if (null == ePackage) {
-							// unregistered package
-							classifier = demandType(namespace, xmlElementName);
-						} else {
-							// registered package
-							classifier = getTypeByXMLName(namespace, xmlElementName);
-						}
-
-						if (null != classifier) {
-							if (feature.getEType().equals(classifier)) {
-								if (isIdentifiedByClassifier(feature)) {
-									possibleResult = feature;
-								} else if (isEReference_Contained0000(feature)) {
-									possibleResult = feature;
-								} else {
-									// not found, continue with next feature
-								}
-							} else if (classifier instanceof EClass) {
-								EClass eClass = (EClass) classifier;
-								// check if the identified is a sub-type of the eType of the reference
-								// note: EObject is not listed in EAllSuperTypes
-								if (feature.getEType() == EcorePackage.eINSTANCE.getEObject()
-										|| eClass.getEAllSuperTypes().contains(feature.getEType())) {
-									if (isIdentifiedByClassifier(feature)) {
-										possibleResult = feature;
-									} else if (isEReference_Contained0000(feature)) {
-										possibleResult = feature;
-									} else {
-										// not found, continue with next feature
-									}
-								} else if (isEReference_Contained0000(feature)) {
-									possibleResult = feature;
-								} else {
-									// not found, continue with next feature
-								}
-							} else if (isEReference_Contained0000(feature)) {
-								possibleResult = feature;
-							} else {
-								// not found, continue with next feature
-							}
-						} else if (isEReference_Contained0000(feature)) {
-							possibleResult = feature;
-						} else {
-							// not found, continue with next feature
-						}
-					}
-
-					if (null != possibleResult) {
-						results.add(possibleResult);
-					}
-				} // while
-
-				// if there are multiple valid features, we prefer the feature that is many and is not NONE
-				int size = results.size();
-				if (1 == size) {
-					result = results.get(0);
-				} else if (1 < size) {
-					// rule 1 we like the features that are explicitly selected
-					List<EStructuralFeature> identifiedFeatures = new ArrayList<EStructuralFeature>();
-					List<EStructuralFeature> noneFeatures = new ArrayList<EStructuralFeature>();
-					for (int i = 0; i < size; i++) {
-						EStructuralFeature feature = results.get(i);
-						if (isNone(feature)) {
-							noneFeatures.add(feature);
-						} else {
-							identifiedFeatures.add(feature);
-						}
-					}
-
-					if (identifiedFeatures.isEmpty()) {
-						// there are none Features only
-						results = noneFeatures;
-					} else {
-						results = identifiedFeatures;
-					}
-
-					result = results.get(0);
-
-					// try to find a better features that is many
-					for (EStructuralFeature feature : results) {
-						if (feature.isMany()) {
-							result = feature;
-							break;
-						}
-					}
-				}
-				xmlNameToEStructuralFeatureMap.put(xmlElementName, result);
-			} // if (null == result)
-
-			// TODO: fall back to standard serialization?
-
-			return result;
-		}
-	}
-
-	public static interface XMLPersistenceMappingEStructuralFeatureExtendedMetaData {
-		String getXMLName();
-
-		void setXMLName(String name);
-
-		String getXMLWrapperName();
-
-		void setXMLWrapperName(String name);
-
-		String getXMLClassiferNameSuffix();
-
-		void setXMLClassiferNameSuffix(String suffix);
-
-		boolean isXMLPersistenceMappingEnabled();
-
-		int getFeatureSerializationStructure();
-
-		void setFeatureSerializationStructure(int featureSerializationStructure);
-	}
-
-	class XMLPersistenceMappingEStructuralFeatureExtendedMetaDataImpl implements XMLPersistenceMappingEStructuralFeatureExtendedMetaData {
-		protected static final String UNINITIALIZED_STRING = "uninitialized"; //$NON-NLS-1$
-		protected static final int UNINITIALIZED_INT = -2;
-
-		protected EStructuralFeature eStructuralFeature;
-		protected String xmlName = UNINITIALIZED_STRING;
-		protected String xmlWrapperName = UNINITIALIZED_STRING;
-		protected String xmlClassifierNameSuffix = UNINITIALIZED_STRING;
-		protected int featureSerializationStructure = UNINITIALIZED_INT;
-		protected Boolean xmlPersistenceMappingEnabled = null;
-
-		public XMLPersistenceMappingEStructuralFeatureExtendedMetaDataImpl(EStructuralFeature eStructuralFeature) {
-			super();
-			this.eStructuralFeature = eStructuralFeature;
-		}
-
-		public String getXMLName() {
-			if (UNINITIALIZED_STRING == xmlName) {
-				setXMLName(basicGetName(eStructuralFeature));
-			}
-			return xmlName;
-		}
-
-		public void setXMLName(String xmlName) {
-			this.xmlName = xmlName;
-		}
-
-		public String getXMLWrapperName() {
-			if (UNINITIALIZED_STRING == xmlWrapperName) {
-				setXMLWrapperName(basicGetWrapperName(eStructuralFeature));
-			}
-			return xmlWrapperName;
-		}
-
-		public void setXMLWrapperName(String xmlWrapperName) {
-			this.xmlWrapperName = xmlWrapperName;
-		}
-
-		public String getXMLClassiferNameSuffix() {
-			if (UNINITIALIZED_STRING == xmlClassifierNameSuffix) {
-				setXMLClassiferNameSuffix(basicGetClassifierNameSuffix(eStructuralFeature));
-			}
-			return xmlClassifierNameSuffix;
-		}
-
-		public boolean isXMLPersistenceMappingEnabled() {
-			if (null == xmlPersistenceMappingEnabled) {
-				setXMLPersistenceMappingEnabled(basicIsXMLPersistenceMappingEnabled(eStructuralFeature));
-			}
-			return xmlPersistenceMappingEnabled;
-
-		};
-
-		void setXMLPersistenceMappingEnabled(Boolean xmlPersistenceMappingEnabled) {
-			this.xmlPersistenceMappingEnabled = xmlPersistenceMappingEnabled;
-		};
-
-		public void setXMLClassiferNameSuffix(String suffix) {
-			xmlClassifierNameSuffix = suffix;
-		}
-
-		public int getFeatureSerializationStructure() {
-			if (UNINITIALIZED_INT == featureSerializationStructure) {
-				setFeatureSerializationStructure(basicGetFeatureSerializationStructure(eStructuralFeature));
-			}
-			return featureSerializationStructure;
-		}
-
-		public void setFeatureSerializationStructure(int featureSerializationStructure) {
-			this.featureSerializationStructure = featureSerializationStructure;
-		}
-
-	}
-
-	public XMLPersistenceMappingExtendedMetaDataImpl() {
-		this(EPackage.Registry.INSTANCE);
-	}
-
-	public XMLPersistenceMappingExtendedMetaDataImpl(EPackage.Registry registry) {
-		super();
-		this.registry = registry;
-	}
-
-	public XMLPersistenceMappingExtendedMetaDataImpl(int[] fallbackSerializations) {
-		this();
-		int min = 0;
-		int max = fallbackSerializationConfiguration.length;
-		for (int i = min; i < max && i < fallbackSerializations.length; i++) {
-			int newValue = fallbackSerializations[i];
-			if (min <= i && i < max) {
-				fallbackSerializationConfiguration[i] = newValue;
-			}
-		}
-	}
-
-	public boolean isXMLPersistenceMappingEnabled(EStructuralFeature feature) {
-		return null != getRMFAnnotation(feature, false);
-	}
-
-	public String getXMLName(EClassifier eClassifier) {
-		return getXMLPersistenceMappingExtendedMetaData(eClassifier).getXMLName();
-	}
-
-	public String getXMLWrapperName(EClassifier eClassifier) {
-		return getXMLPersistenceMappingExtendedMetaData(eClassifier).getXMLWrapperName();
-	}
-
-	public String getXMLName(EClassifier eClassifier, EStructuralFeature eStructuralFeature) {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(getXMLPersistenceMappingExtendedMetaData(eClassifier).getXMLName());
-		buffer.append(getXMLPersistenceMappingExtendedMetaData(eStructuralFeature).getXMLClassiferNameSuffix());
-		return buffer.toString();
-	}
-
-	public void setXMLWrapperName(EClassifier eClassifier, String xmlWrapperName) {
-		EAnnotation eAnnotation = getRMFAnnotation(eClassifier, true);
-		eAnnotation.getDetails().put(WRAPPER_NAME, xmlWrapperName);
-		getXMLPersistenceMappingExtendedMetaData(eClassifier).setXMLWrapperName(xmlWrapperName);
-		EPackage ePackage = eClassifier.getEPackage();
-		if (ePackage != null) {
-			getXMLPersistenceMappingExtendedMetaData(ePackage).renameToXMLWrapperName(eClassifier, xmlWrapperName);
-		}
-	}
-
-	public String getXMLName(EStructuralFeature eStructuralFeature) {
-		return getXMLPersistenceMappingExtendedMetaData(eStructuralFeature).getXMLName();
-	}
-
-	public String getXMLWrapperName(EStructuralFeature eStructuralFeature) {
-		return getXMLPersistenceMappingExtendedMetaData(eStructuralFeature).getXMLWrapperName();
-	}
-
-	public void setXMLWrapperName(EStructuralFeature eStructuralFeature, String xmlWrapperName) {
-		EAnnotation eAnnotation = getRMFAnnotation(eStructuralFeature, true);
-		eAnnotation.getDetails().put(WRAPPER_NAME, xmlWrapperName);
-		getXMLPersistenceMappingExtendedMetaData(eStructuralFeature).setXMLWrapperName(xmlWrapperName);
-	}
-
-	public int getFeatureSerializationStructure(EStructuralFeature eStructuralFeature) {
-		return getXMLPersistenceMappingExtendedMetaData(eStructuralFeature).getFeatureSerializationStructure();
-	}
-
-	public void setFeatureSerializationStructure(EStructuralFeature eStructuralFeature, int serializationStructure) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public EClassifier getTypeByXMLName(String namespace, String xmlName) {
-		EPackage ePackage = getPackage(namespace);
-		return ePackage == null ? null : getTypeByXMLName(ePackage, xmlName);
-	}
-
-	public EClassifier getTypeByXMLName(String namespace, String xmlName, EStructuralFeature feature) {
-		EPackage ePackage = getPackage(namespace);
-		return ePackage == null ? null : getTypeByXMLName(ePackage, xmlName, feature);
-	}
-
-	public EClassifier getTypeByXMLWrapperName(String namespace, String xmlWrapperName) {
-		EPackage ePackage = getPackage(namespace);
-		return ePackage == null ? null : getTypeByXMLWrapperName(ePackage, xmlWrapperName);
-	}
-
-	public EClassifier getTypeByXMLName(EPackage ePackage, String xmlName) {
-		return getXMLPersistenceMappingExtendedMetaData(ePackage).getType(xmlName);
-	}
-
-	public EClassifier getTypeByXMLName(EPackage ePackage, String xmlName, EStructuralFeature feature) {
-		return getXMLPersistenceMappingExtendedMetaData(ePackage).getType(xmlName, feature);
-	}
-
-	public EClassifier getTypeByXMLWrapperName(EPackage ePackage, String xmlWrapperName) {
-		return getXMLPersistenceMappingExtendedMetaData(ePackage).getTypeByWrapperName(xmlWrapperName);
-	}
-
-	@Override
-	public EPackage getPackage(String namespace) {
-		EPackage ePackage = registry.getEPackage(namespace);
-		return ePackage;
-	}
-
-	public EStructuralFeature getFeatureByXMLElementName(EClass eClass, String namespace, String xmlElementName) {
-		return getXMLPersistenceMappingExtendedMetaData(eClass).getFeatureByXMLElementName(namespace, xmlElementName);
-	}
-
-	protected boolean basicIsXMLPersistenceMappingEnabled(EStructuralFeature eStructuralFeature) {
-		return null != getRMFAnnotation(eStructuralFeature, false);
-	}
-
-	protected String basicGetWrapperName(EClassifier eClassifier) {
-		EAnnotation eAnnotation = getRMFAnnotation(eClassifier, false);
-		String result = null;
-		if (eAnnotation != null) {
-			result = eAnnotation.getDetails().get(WRAPPER_NAME);
-		}
-		if (null == result) {
-			result = basicGetName(eClassifier) + PLURAL_EXTENSION;
-		}
-		return result;
-	}
-
-	protected String basicGetWrapperName(EStructuralFeature eStructuralFeature) {
-		EAnnotation eAnnotation = getRMFAnnotation(eStructuralFeature, false);
-		String result = null;
-		if (eAnnotation != null) {
-			result = eAnnotation.getDetails().get(WRAPPER_NAME);
-		}
-		if (null == result) {
-			result = basicGetName(eStructuralFeature) + PLURAL_EXTENSION;
-		}
-		return result;
-	}
-
-	protected String basicGetClassifierNameSuffix(EStructuralFeature eStructuralFeature) {
-		EAnnotation eAnnotation = getRMFAnnotation(eStructuralFeature, false);
-		String result = null;
-		if (eAnnotation != null) {
-			result = eAnnotation.getDetails().get(CLASSIFIER_NAME_SUFFIX);
-		}
-		if (null == result) {
-			result = ""; //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	/**
-	 * @param eStructuralFeature
-	 * @return #SERILIZATION_STRUCTURE__UNDDEFINED, if no annotation is defined
-	 */
-	protected int basicGetFeatureSerializationStructure(EStructuralFeature eStructuralFeature) {
-		EAnnotation eAnnotation = getRMFAnnotation(eStructuralFeature, false);
-		if (eAnnotation != null) {
-			String featureWrapperElement = eAnnotation.getDetails().get(FEATURE_WRAPPER_ELEMENT);
-			String featureElement = eAnnotation.getDetails().get(FEATURE_ELEMENT);
-			String classifierWrapperElement = eAnnotation.getDetails().get(CLASSIFIER_WRAPPER_ELEMENT);
-			String classifierElement = eAnnotation.getDetails().get(CLASSIFIER_ELEMENT);
-
-			int result = 0;
-			if (null == featureWrapperElement || Boolean.parseBoolean(featureWrapperElement)) {
-				// if not explicitly set to false, the feature wrapper element is created
-				result += FEATURE_WRAPPER_ELEMENT_MASK;
-			}
-
-			if (Boolean.parseBoolean(featureElement)) {
-				// if explicitly set to true, the feature element is created
-				result += FEATURE_ELEMENT_MASK;
-			}
-
-			if (Boolean.parseBoolean(classifierWrapperElement)) {
-				// if explicitly set to true, the classifier wrapper element is created
-				result += CLASSIFIER_WRAPPER_ELEMENT_MASK;
-			}
-
-			if (null == classifierWrapperElement || Boolean.parseBoolean(classifierElement)) {
-				// if not explicitly set to false, the classifier element is created
-				result += CLASSIFIER_ELEMENT_MASK;
-			}
-
-			return fallbackSerializationConfiguration[result];
-
-		} else {
-			// default to standard EMF serialization
-			return SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT;
-		}
-	}
-
-	protected XMLPersistenceMappingEStructuralFeatureExtendedMetaData getXMLPersistenceMappingExtendedMetaData(EStructuralFeature eStructuralFeature) {
-		XMLPersistenceMappingEStructuralFeatureExtendedMetaData result = (XMLPersistenceMappingEStructuralFeatureExtendedMetaData) extendedMetaDataCache
-				.get(eStructuralFeature);
-		if (result == null) {
-			extendedMetaDataCache.put(eStructuralFeature, result = createRMFEStructuralFeatureExtendedMetaData(eStructuralFeature));
-		}
-		return result;
-	}
-
-	protected XMLPersistenceMappingEClassifierExtendedMetaData getXMLPersistenceMappingExtendedMetaData(EClassifier eClassifier) {
-		XMLPersistenceMappingEClassifierExtendedMetaData result = (XMLPersistenceMappingEClassifierExtendedMetaData) extendedMetaDataCache
-				.get(eClassifier);
-		if (result == null) {
-			extendedMetaDataCache.put(eClassifier, result = createRMFEClassifierExtendedMetaData(eClassifier));
-		}
-		return result;
-	}
-
-	protected XMLPersistenceMappingEPackageExtendedMetaData getXMLPersistenceMappingExtendedMetaData(EPackage ePackage) {
-		XMLPersistenceMappingEPackageExtendedMetaData result = (XMLPersistenceMappingEPackageExtendedMetaData) extendedMetaDataCache.get(ePackage);
-		if (result == null) {
-			extendedMetaDataCache.put(ePackage, result = createRMFEPackageExtendedMetaData(ePackage));
-		}
-		return result;
-	}
-
-	protected XMLPersistenceMappingEStructuralFeatureExtendedMetaData createRMFEStructuralFeatureExtendedMetaData(
-			EStructuralFeature eStructuralFeature) {
-		return new XMLPersistenceMappingEStructuralFeatureExtendedMetaDataImpl(eStructuralFeature);
-	}
-
-	protected XMLPersistenceMappingEClassifierExtendedMetaData createRMFEClassifierExtendedMetaData(EClassifier eClassifier) {
-		if (eClassifier instanceof EClass) {
-			return new XMLPersistenceMappingEClassExtendedMetaDataImpl(eClassifier);
-		} else {
-			return new XMLPersistenceMappingEDataTypeExtendedMetaDataImpl(eClassifier);
-		}
-	}
-
-	protected XMLPersistenceMappingEPackageExtendedMetaData createRMFEPackageExtendedMetaData(EPackage ePackage) {
-		return new XMLPersistenceMappingEPackageExtendedMetaDataImpl(ePackage);
-	}
-
-	protected EAnnotation getRMFAnnotation(EModelElement eModelElement, boolean demandCreate) {
-		EAnnotation result = annotationCache.get(eModelElement);
-		if (result == null) {
-			result = eModelElement.getEAnnotation(XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI);
-		}
-		if (result == null && demandCreate) {
-			result = EcoreFactory.eINSTANCE.createEAnnotation();
-			result.setSource(XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI);
-			annotationCache.put(eModelElement, result);
-		}
-		return result;
-	}
-
-	protected boolean isIdentifiedByFeatureWrapper(EStructuralFeature feature) {
-		int featureSerializationStructure = getXMLPersistenceMappingExtendedMetaData(feature).getFeatureSerializationStructure();
-		return FEATURE_WRAPPER_ELEMENT_MASK == (featureSerializationStructure & FEATURE_WRAPPER_ELEMENT_MASK);
-	}
-
-	protected boolean isIdentifiedByFeature(EStructuralFeature feature) {
-		int featureSerializationStructure = getXMLPersistenceMappingExtendedMetaData(feature).getFeatureSerializationStructure();
-		return FEATURE_ELEMENT_MASK == (featureSerializationStructure & (FEATURE_WRAPPER_ELEMENT_MASK | FEATURE_ELEMENT_MASK));
-	}
-
-	protected boolean isIdentifiedByClassifierWrapper(EStructuralFeature feature) {
-		int featureSerializationStructure = getXMLPersistenceMappingExtendedMetaData(feature).getFeatureSerializationStructure();
-		return CLASSIFIER_WRAPPER_ELEMENT_MASK == (featureSerializationStructure & (FEATURE_WRAPPER_ELEMENT_MASK | FEATURE_ELEMENT_MASK | CLASSIFIER_WRAPPER_ELEMENT_MASK));
-	}
-
-	protected boolean isIdentifiedByClassifier(EStructuralFeature feature) {
-		int featureSerializationStructure = getXMLPersistenceMappingExtendedMetaData(feature).getFeatureSerializationStructure();
-		return CLASSIFIER_ELEMENT_MASK == featureSerializationStructure;
-	}
-
-	protected boolean isNone(EStructuralFeature feature) {
-		int featureSerializationStructure = getXMLPersistenceMappingExtendedMetaData(feature).getFeatureSerializationStructure();
-		return 0 == featureSerializationStructure;
-	}
-
-	protected boolean isEReference_Contained0000(EStructuralFeature feature) {
-		boolean isEReference_Contained0000;
-		if (feature instanceof EReference) {
-			EReference reference = (EReference) feature;
-			if (reference.isContainment()) {
-				isEReference_Contained0000 = isNone(feature);
-			} else {
-				isEReference_Contained0000 = false;
-			}
-		} else {
-			isEReference_Contained0000 = false;
-		}
-		return isEReference_Contained0000;
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResource.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResource.java
deleted file mode 100644
index d2404a4..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResource.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import org.eclipse.emf.ecore.xmi.XMLResource;
-
-public interface XMLPersistenceMappingResource extends XMLResource {
-
-	/**
-	 * This option allows you to tailor the XML serialization of objects. You should provide an RMFExtendedMetaData as
-	 * the value of this option.
-	 * 
-	 * @see org.eclipse.rmf.serialization.RMFExtendedMetaData
-	 */
-	public static final String HREF = "_href"; //$NON-NLS-1$
-	public static final String OPTION_PROGRESS_MONITOR = "progress monitor"; //$NON-NLS-1$
-	public static final String OPTION_NAMEPSACE_TO_PREFIX_MAP = "namespace to prefix map"; //$NON-NLS-1$
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceFactoryImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceFactoryImpl.java
deleted file mode 100644
index aba5644..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceFactoryImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
-
-/**
- * <!-- begin-user-doc --> The <b>Resource Factory</b> associated with the package. <!-- end-user-doc -->
- * 
- * @see org.eclipse.rmf.reqif10.util.Reqif10ResourceImpl
- * @generated
- */
-public class XMLPersistenceMappingResourceFactoryImpl extends ResourceFactoryImpl {
-	/**
-	 * Creates an instance of the resource factory. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public XMLPersistenceMappingResourceFactoryImpl() {
-		super();
-	}
-
-	/**
-	 * Creates an instance of the resource. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 */
-	@Override
-	public Resource createResource(URI uri) {
-		Resource result = new XMLPersistenceMappingResourceImpl(uri);
-		return result;
-	}
-
-} // RMFResourceFactoryImpl
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceImpl.java
deleted file mode 100644
index 6ea3cac..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceImpl.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.XMLConstants;
-
-import org.apache.xerces.impl.Constants;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.XMLHelper;
-import org.eclipse.emf.ecore.xmi.XMLLoad;
-import org.eclipse.emf.ecore.xmi.XMLOptions;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xmi.XMLSave;
-import org.eclipse.emf.ecore.xmi.impl.XMLOptionsImpl;
-import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
-import org.eclipse.rmf.internal.serialization.XMLPersistenceMappingHelperImpl;
-import org.eclipse.rmf.internal.serialization.XMLPersistenceMappingLoadImpl;
-import org.eclipse.rmf.internal.serialization.XMLPersistenceMappingSaveImpl;
-
-public class XMLPersistenceMappingResourceImpl extends XMLResourceImpl implements XMLPersistenceMappingResource {
-	// TODO: let implementation get the value from preferences and set it to false by default
-	// This is a temporal HACK
-	public boolean enableSchemaValidation = false;
-	protected Collection<EPackage> createIdForPackages;
-
-	class ResourceHandlerImpl implements ResourceHandler {
-
-		ResourceHandlerImpl(Resource resource) {
-			super();
-		}
-
-		public void preLoad(XMLResource resource, InputStream inputStream, Map<?, ?> options) {
-			// NOP
-		}
-
-		public void postLoad(XMLResource resource, InputStream inputStream, Map<?, ?> options) {
-			// NOP
-		}
-
-		public void preSave(XMLResource resource, OutputStream outputStream, Map<?, ?> options) {
-			// NOP
-
-		}
-
-		public void postSave(XMLResource resource, OutputStream outputStream, Map<?, ?> options) {
-			// NOP
-
-		}
-
-	}
-
-	public XMLPersistenceMappingResourceImpl() {
-		super();
-		initDefaultOptions();
-	}
-
-	public XMLPersistenceMappingResourceImpl(URI uri) {
-		super(uri);
-		initDefaultOptions();
-	}
-
-	@Override
-	protected XMLHelper createXMLHelper() {
-		return new XMLPersistenceMappingHelperImpl(this);
-	}
-
-	@Override
-	protected XMLLoad createXMLLoad() {
-		return new XMLPersistenceMappingLoadImpl(createXMLHelper());
-	}
-
-	@Override
-	protected XMLSave createXMLSave() {
-		return new XMLPersistenceMappingSaveImpl(createXMLHelper());
-	}
-
-	@Override
-	public void save(Map<?, ?> options) throws IOException {
-		super.save(options);
-	}
-
-	@Override
-	public EObject getEObject(String uriFragment) {
-		EObject object = getEObjectByID(uriFragment);
-		if (null == object) {
-			object = super.getEObject(uriFragment);
-		}
-		return object;
-	}
-
-	/**
-	 * Initializes the resource. Is called by the constructors of XMLResourceImpl
-	 */
-	@Override
-	protected void init() {
-		encoding = "UTF-8"; //$NON-NLS-1$
-		xmlVersion = "1.0"; //$NON-NLS-1$
-
-	}
-
-	public void initDefaultOptions() {
-		ResourceHandler resourceHandler = new ResourceHandlerImpl(this);
-		// ========= default save options ===================
-		Map<Object, Object> saveOptions = getDefaultSaveOptions();
-		// set encoding to UTF-8
-		saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$
-		// get XML names and attribute/value information from extended metadata
-		saveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		// make sure to write the <?xml version="1.0" encoding="UTF-8"?> header
-		saveOptions.put(XMLResource.OPTION_DECLARE_XML, Boolean.TRUE);
-
-		saveOptions.put(XMLResource.OPTION_SAVE_TYPE_INFORMATION, Boolean.FALSE);
-
-		saveOptions.put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.FALSE);
-
-		saveOptions.put(XMLResource.OPTION_RESOURCE_HANDLER, resourceHandler);
-
-		// ========= default load options ===================
-		Map<Object, Object> loadOptions = getDefaultLoadOptions();
-		// get XML names and attribute/value information from extended metadata
-		loadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		// comments and CDATA will be preserved in any mixed text processing. Required to support extensions
-		loadOptions.put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
-		// Improve deserialization performance
-		loadOptions.put(XMLResource.OPTION_USE_DEPRECATED_METHODS, Boolean.FALSE);
-		// avoids creation of href attributes for non containment references
-		loadOptions.put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		// options for handling unknown tool extensions
-		loadOptions.put(XMLResource.OPTION_RECORD_ANY_TYPE_NAMESPACE_DECLARATIONS, Boolean.TRUE);
-		loadOptions.put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.FALSE);
-
-		// Performance enhancement
-		loadOptions.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
-
-		loadOptions.put(XMLResource.OPTION_RESOURCE_HANDLER, resourceHandler);
-
-		// defer attachment of object tree created during load to end of load process.
-		// this creating notifications by EContentAdapters that might be registered for the resource or resource set
-		// during load
-		loadOptions.put(XMLResource.OPTION_DEFER_ATTACHMENT, Boolean.TRUE);
-
-		// Retrieve application-defined XMLReader features (see http://xerces.apache.org/xerces2-j/features.html for
-		// available features and their details)
-		Map<String, Boolean> parserFeatures = new HashMap<String, Boolean>();
-
-		// Retrieve application-defined XMLReader properties (see http://xerces.apache.org/xerces2-j/properties.html
-		// for available properties and their details)
-		Map<String, Object> parserProperties = new HashMap<String, Object>();
-
-		parserProperties.put(Constants.XERCES_PROPERTY_PREFIX + Constants.BUFFER_SIZE_PROPERTY, 1024 * 8);
-
-		// Perform namespace processing (prefixes will be stripped off element and attribute names and replaced with the
-		// corresponding namespace URIs) but do not report attributes used for namespace declarations, and do not report
-		// original prefixed names
-		parserFeatures.put(Constants.SAX_FEATURE_PREFIX + Constants.NAMESPACES_FEATURE, true);
-		parserFeatures.put(Constants.SAX_FEATURE_PREFIX + Constants.NAMESPACE_PREFIXES_FEATURE, false);
-
-		if (enableSchemaValidation) {
-			parserFeatures.put(Constants.SAX_FEATURE_PREFIX + Constants.VALIDATION_FEATURE, true);
-			parserFeatures.put(Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE, true);
-			parserProperties.put(Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE, XMLConstants.W3C_XML_SCHEMA_NS_URI);
-			parserProperties.put(Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_LOCATION,
-					"http://www.omg.org/spec/ReqIF/20110401/reqif.xsd reqif.xsd");
-		}
-
-		loadOptions.put(XMLResource.OPTION_PARSER_FEATURES, parserFeatures);
-		loadOptions.put(XMLResource.OPTION_PARSER_PROPERTIES, parserProperties);
-
-		XMLOptions xmlOptions = new XMLOptionsImpl();
-
-		xmlOptions.setProcessAnyXML(true);
-
-		// xmlOptions.setProcessSchemaLocations(true);
-
-		loadOptions.put(XMLResource.OPTION_XML_OPTIONS, xmlOptions);
-	}
-
-}
diff --git a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceSetImpl.java b/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceSetImpl.java
deleted file mode 100644
index 0a70306..0000000
--- a/org.eclipse.rmf.serialization/src/org/eclipse/rmf/serialization/XMLPersistenceMappingResourceSetImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (c) 2013 itemis AG and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   itemis AG - initial API and implementation
- */
-package org.eclipse.rmf.serialization;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-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.impl.ResourceSetImpl;
-
-public class XMLPersistenceMappingResourceSetImpl extends ResourceSetImpl {
-
-	/**
-	 * Tools that need to follow the progress may store an {@link IProgressMonitor} in {@link #getLoadOptions()}, using
-	 * this constant as the key.
-	 */
-	public static final String PROGRESS_MONITOR = "PROGRESS_MONITOR"; //$NON-NLS-1$
-
-	@Override
-	/**
-	 * ReqIF doesn't contain any information about the resource where to find an object with a given ID.
-	 * Since most references are expected to be references to objects within the same file, we first search in the resource that contained the reference.
-	 * If the referenced object is not found, then the search continues in all other resources that are contained in the resource set.
-	 * 
-	 * In order to map this behavior to the standard EMF proxy resolution mechanism the 
-	 * URI of the resource that contains the reference is added to the reference by default during deserialization.
-	 * 
-	 * This allows using the ReqIFResourceImpl in a standard EMF resource set if no cross resource links need to be resolved.
-	 */
-	public EObject getEObject(URI uri, boolean loadOnDemand) {
-		EObject eObject = null;
-		// first try to find the object in the resource that contained the reference using the standard EMF proxy
-		// resolution strategy
-
-		eObject = super.getEObject(uri, loadOnDemand);
-
-		// if the eObject was not found: continue searching in all other resources
-		if (null == eObject) {
-			Resource sourceResource = getResource(uri.trimFragment(), loadOnDemand);
-			for (Resource resource : getResources()) {
-				if (resource != sourceResource) {
-					eObject = resource.getEObject(uri.fragment());
-					if (null != eObject) {
-						break;
-					}
-				}
-			}
-		}
-
-		return eObject;
-	}
-
-}
diff --git a/org.eclipse.rmf.tests.ext.prostep/META-INF/MANIFEST.MF b/org.eclipse.rmf.tests.ext.prostep/META-INF/MANIFEST.MF
index a1e5461..ea4161f 100644
--- a/org.eclipse.rmf.tests.ext.prostep/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.tests.ext.prostep/META-INF/MANIFEST.MF
@@ -12,4 +12,4 @@
  org.eclipse.rmf.reqif10.serialization;bundle-version="0.12.0",
  org.eclipse.rmf.tests.reqif10.serialization;bundle-version="0.12.0",
  org.eclipse.rmf.tests.reqif10.serialization,
- org.eclipse.rmf.serialization
+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"
diff --git a/org.eclipse.rmf.tests.ext.prostep/src/org/eclipse/rmf/tests/ext/prostep/serializaion/SerializationTests.java b/org.eclipse.rmf.tests.ext.prostep/src/org/eclipse/rmf/tests/ext/prostep/serializaion/SerializationTests.java
index 76b5376..2deb483 100644
--- a/org.eclipse.rmf.tests.ext.prostep/src/org/eclipse/rmf/tests/ext/prostep/serializaion/SerializationTests.java
+++ b/org.eclipse.rmf.tests.ext.prostep/src/org/eclipse/rmf/tests/ext/prostep/serializaion/SerializationTests.java
@@ -15,7 +15,7 @@
 import org.eclipse.rmf.reqif10.ReqIF10Package;
 import org.eclipse.rmf.reqif10.common.util.ReqIFToolExtensionUtil;
 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;
 import org.eclipse.rmf.tests.reqif10.serialization.util.AbstractTestCase;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/org.eclipse.rmf.tests.reqif10.serialization/META-INF/MANIFEST.MF b/org.eclipse.rmf.tests.reqif10.serialization/META-INF/MANIFEST.MF
index 52176e8..4807baf 100644
--- a/org.eclipse.rmf.tests.reqif10.serialization/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.tests.reqif10.serialization/META-INF/MANIFEST.MF
@@ -9,8 +9,8 @@
  org.eclipse.rmf.reqif10.xhtml,
  org.eclipse.rmf.reqif10;bundle-version="0.9.0",
  org.eclipse.rmf.reqif10.serialization;bundle-version="0.9.0",
- org.eclipse.rmf.serialization;bundle-version="0.9.0",
- org.eclipse.rmf.reqif10.common;bundle-version="0.12.0"
+ org.eclipse.rmf.reqif10.common;bundle-version="0.12.0",
+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.rmf.tests.reqif10.serialization.model.tool
diff --git a/org.eclipse.rmf.tests.reqif10.serialization/input/SimpleReqIFWithUnknowToolExtensions.reqif b/org.eclipse.rmf.tests.reqif10.serialization/input/SimpleReqIFWithUnknowToolExtensions.reqif
new file mode 100644
index 0000000..a329433
--- /dev/null
+++ b/org.eclipse.rmf.tests.reqif10.serialization/input/SimpleReqIFWithUnknowToolExtensions.reqif
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/notExistingURL">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="identifier">
+      <CREATION-TIME>2013-08-13T16:58:30.965+02:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>RMF - Requirements Modeling Framework (http://www.eclipse.org/rmf)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>RMF - Requirements Modeling Framework (http://www.eclipse.org/rmf)</SOURCE-TOOL-ID>
+      <TITLE>Unregistered Tool Extension</TITLE>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+       <REQ-IF-CONTENT>
+       </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+      <REQ-IF-TOOL-EXTENSION>
+      <configuration:UnknownToolExtension>
+      </configuration:UnknownToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/org.eclipse.rmf.tests.reqif10.serialization/src/org/eclipse/rmf/tests/reqif10/serialization/util/AbstractTestCase.java b/org.eclipse.rmf.tests.reqif10.serialization/src/org/eclipse/rmf/tests/reqif10/serialization/util/AbstractTestCase.java
index e11cf1d..a275b63 100644
--- a/org.eclipse.rmf.tests.reqif10.serialization/src/org/eclipse/rmf/tests/reqif10/serialization/util/AbstractTestCase.java
+++ b/org.eclipse.rmf.tests.reqif10.serialization/src/org/eclipse/rmf/tests/reqif10/serialization/util/AbstractTestCase.java
@@ -60,9 +60,9 @@
 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceFactoryImpl;
 import org.eclipse.rmf.reqif10.serialization.ReqIF10ResourceImpl;
 import org.eclipse.rmf.reqif10.xhtml.XhtmlPackage;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResource;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.w3c.dom.ls.LSInput;
diff --git a/org.eclipse.rmf.tests.serialization/META-INF/MANIFEST.MF b/org.eclipse.rmf.tests.serialization/META-INF/MANIFEST.MF
index 766139b..405b8f6 100644
--- a/org.eclipse.rmf.tests.serialization/META-INF/MANIFEST.MF
+++ b/org.eclipse.rmf.tests.serialization/META-INF/MANIFEST.MF
@@ -9,8 +9,8 @@
  org.eclipse.emf.ecore.xmi;bundle-version="2.7.0",
  org.eclipse.xsd;bundle-version="2.7.1",
  org.apache.xerces;bundle-version="2.9.0",
- org.eclipse.rmf.serialization;bundle-version="0.9.0",
- org.eclipse.core.runtime;bundle-version="3.6.0"
+ org.eclipse.core.runtime;bundle-version="3.6.0",
+ org.eclipse.sphinx.emf.serialization;bundle-version="0.8.1"
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/adapter/IDAdapterTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/adapter/IDAdapterTests.java
index 73c5de8..d20a340 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/adapter/IDAdapterTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/adapter/IDAdapterTests.java
@@ -22,13 +22,13 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesFactory;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
 import org.eclipse.rmf.tests.serialization.model.nodes.serialization.NodesResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.serialization.NodesResourceImpl;
 import org.eclipse.rmf.tests.serialization.util.AbstractTestCase;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResource;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/BasicLoadTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/BasicLoadTests.java
index 0b77b17..a16bcc5 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/BasicLoadTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/BasicLoadTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -21,11 +21,11 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
 import org.eclipse.rmf.tests.serialization.model.nodes.SubNode;
 import org.eclipse.rmf.tests.serialization.util.AbstractTestCase;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/FoereignNamespaceLoadTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/FoereignNamespaceLoadTests.java
index 4c56d7a..6e78362 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/FoereignNamespaceLoadTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/load/FoereignNamespaceLoadTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -22,14 +22,14 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.xml.type.AnyType;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
 import org.eclipse.rmf.tests.serialization.util.AbstractTestCase;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.junit.Before;
 import org.junit.Test;
 
-// Junit 3.8 test 
+// Junit 3.8 test
 @SuppressWarnings("nls")
 public class FoereignNamespaceLoadTests extends AbstractTestCase {
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/metadata/XMLPersistenceExtendedMetaDataTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/metadata/XMLPersistenceExtendedMetaDataTests.java
index a3fa2ff..7861d31 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/metadata/XMLPersistenceExtendedMetaDataTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/metadata/XMLPersistenceExtendedMetaDataTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -19,9 +19,9 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaData;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingExtendedMetaDataImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingExtendedMetaData;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingExtendedMetaDataImpl;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -53,7 +53,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("EReference '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -68,7 +68,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("EReference '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -83,7 +83,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("EReference '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -98,7 +98,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("EReference '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -113,7 +113,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("EAttribute '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -128,7 +128,7 @@
 			EStructuralFeature feature = nodeEClass.getEStructuralFeature(featureName);
 			assertNotNull("Attribute '" + featureName + "' not found", feature);
 
-			int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+			int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 			assertSame(i, featureSerializationStructure);
 		}
 	}
@@ -138,8 +138,8 @@
 		XMLPersistenceMappingExtendedMetaData metadata = new XMLPersistenceMappingExtendedMetaDataImpl(identitySerializationStructureConfiguration);
 
 		EStructuralFeature feature = NodesPackage.eINSTANCE.getNode_EReference_EmptyAnnotationSingle();
-		int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
-		assertSame(XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT,
+		int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
+		assertSame(XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_STRATEGY__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT,
 				featureSerializationStructure);
 	}
 
@@ -148,9 +148,9 @@
 		XMLPersistenceMappingExtendedMetaData metadata = new XMLPersistenceMappingExtendedMetaDataImpl(identitySerializationStructureConfiguration);
 
 		EStructuralFeature feature = NodesPackage.eINSTANCE.getNode_EReference_NoAnnotationSingle();
-		int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+		int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 		// assume standard EMF serialization if not specified explicitly
-		assertSame(XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT, featureSerializationStructure);
+		assertSame(XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_STRATEGY__0100__FEATURE_ELEMENT, featureSerializationStructure);
 	}
 
 	@Test
@@ -158,8 +158,8 @@
 		XMLPersistenceMappingExtendedMetaData metadata = new XMLPersistenceMappingExtendedMetaDataImpl(identitySerializationStructureConfiguration);
 
 		EStructuralFeature feature = NodesPackage.eINSTANCE.getNode_EReference_EmptyAnnotationMany();
-		int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
-		assertSame(XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT,
+		int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
+		assertSame(XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_STRATEGY__1001__FEATURE_WRAPPER_ELEMENT__CLASSIFIER_ELEMENT,
 				featureSerializationStructure);
 	}
 
@@ -168,9 +168,9 @@
 		XMLPersistenceMappingExtendedMetaData metadata = new XMLPersistenceMappingExtendedMetaDataImpl(identitySerializationStructureConfiguration);
 
 		EStructuralFeature feature = NodesPackage.eINSTANCE.getNode_EReference_NoAnnotationMany();
-		int featureSerializationStructure = metadata.getFeatureSerializationStructure(feature);
+		int featureSerializationStructure = metadata.getXMLPersistenceMappingStrategy(feature);
 		// use default: standard emf serialization structure
-		assertSame(XMLPersistenceMappingExtendedMetaData.SERIALIZATION_STRUCTURE__0100__FEATURE_ELEMENT, featureSerializationStructure);
+		assertSame(XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_STRATEGY__0100__FEATURE_ELEMENT, featureSerializationStructure);
 	}
 
 	@Test
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceFactoryImpl.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceFactoryImpl.java
index 41f8a65..b6ff8e9 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceFactoryImpl.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceFactoryImpl.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 
 public class NodesResourceFactoryImpl extends XMLPersistenceMappingResourceFactoryImpl {
 	@Override
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceImpl.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceImpl.java
index 2851b5e..11dd374 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceImpl.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/model/nodes/serialization/NodesResourceImpl.java
@@ -18,8 +18,8 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.xmi.XMLResource;
 import org.eclipse.emf.ecore.xmi.impl.XMLMapImpl;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceImpl;
 
 public class NodesResourceImpl extends XMLPersistenceMappingResourceImpl {
 
@@ -51,7 +51,7 @@
 
 	/**
 	 * Return <code>true</code>.
-	 * 
+	 *
 	 * @return <code>true</code>.
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#useUUIDs()
 	 */
@@ -62,7 +62,7 @@
 
 	/**
 	 * Return <code>true</code>.
-	 * 
+	 *
 	 * @return <code>true</code>.
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#assignIDsWhileLoading()
 	 */
@@ -75,7 +75,7 @@
 	 * Sets the ID of the object. The default implementation will update the {@link #eObjectToIDMap}. This behavior is
 	 * override to set the ID in a object's specific attribute to set the id in the
 	 * {@link Identifiable#setIdentifier(String)} and call the super method.
-	 * 
+	 *
 	 * @param eObject
 	 *            : The object where the Id must be set.
 	 * @param id
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/monitor/ProgressMonitorTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/monitor/ProgressMonitorTests.java
index 9569d84..37c401c 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/monitor/ProgressMonitorTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/monitor/ProgressMonitorTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -20,10 +20,10 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
 import org.eclipse.rmf.tests.serialization.util.LoadSaveUtil;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResource;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/robustness/LoadPatternAttribute0100RobustnessTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/robustness/LoadPatternAttribute0100RobustnessTests.java
index 7a56c28..1e9fec0 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/robustness/LoadPatternAttribute0100RobustnessTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/robustness/LoadPatternAttribute0100RobustnessTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -22,11 +22,11 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.xmi.FeatureNotFoundException;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
 import org.eclipse.rmf.tests.serialization.util.AbstractTestCase;
 import org.eclipse.rmf.tests.serialization.util.LoadSaveUtil;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/AbstractSaveTestCase.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/AbstractSaveTestCase.java
index d66415a..2528cd1 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/AbstractSaveTestCase.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/AbstractSaveTestCase.java
@@ -23,9 +23,9 @@
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.util.AbstractTestCase;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
 import org.junit.Before;
 import org.xml.sax.InputSource;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/BasicSaveTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/BasicSaveTests.java
index e703a05..f698392 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/BasicSaveTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/BasicSaveTests.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -1244,8 +1244,7 @@
 			assertEquals("node", xpath.evaluate("/nodes:NODE/nodes:EREFERENCE-REFERENCED-0100-MANY-REF[1]", root, XPathConstants.STRING));
 			assertEquals("", xpath.evaluate("/nodes:NODE/nodes:EREFERENCE-REFERENCED-0100-MANY-REF[1]/@xsi:type", root, XPathConstants.STRING));
 			assertEquals("subNode", xpath.evaluate("/nodes:NODE/nodes:EREFERENCE-REFERENCED-0100-MANY-REF[2]", root, XPathConstants.STRING));
-			assertEquals("nodes:SUB-NODE",
-					xpath.evaluate("/nodes:NODE/nodes:EREFERENCE-REFERENCED-0100-MANY-REF[2]/@xsi:type", root, XPathConstants.STRING));
+			assertEquals("SUB-NODE", xpath.evaluate("/nodes:NODE/nodes:EREFERENCE-REFERENCED-0100-MANY-REF[2]/@TYPE", root, XPathConstants.STRING));
 
 		} catch (Exception ex) {
 			ex.printStackTrace();
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/CustomNamespacePrefixSaveTests.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/CustomNamespacePrefixSaveTests.java
index 5df9a32..0d1ed10 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/CustomNamespacePrefixSaveTests.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/save/CustomNamespacePrefixSaveTests.java
@@ -21,7 +21,6 @@
 
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResource;
 import org.eclipse.rmf.tests.serialization.model.extnodes.ExtNodesFactory;
 import org.eclipse.rmf.tests.serialization.model.extnodes.ExtNodesPackage;
 import org.eclipse.rmf.tests.serialization.model.extnodes.ExtendedNode;
@@ -29,6 +28,7 @@
 import org.eclipse.rmf.tests.serialization.model.nodes.Node;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesFactory;
 import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResource;
 import org.junit.Test;
 import org.w3c.dom.NodeList;
 
diff --git a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/util/AbstractTestCase.java b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/util/AbstractTestCase.java
index abead8c..3d5175e 100644
--- a/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/util/AbstractTestCase.java
+++ b/org.eclipse.rmf.tests.serialization/src/org/eclipse/rmf/tests/serialization/util/AbstractTestCase.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *   itemis AG - initial API and implementation
  */
@@ -22,7 +22,7 @@
 import org.eclipse.emf.ecore.resource.URIConverter;
 import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
 import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.rmf.serialization.XMLPersistenceMappingResourceSetImpl;
+import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceSetImpl;
 import org.junit.Before;
 
 @SuppressWarnings("nls")
diff --git a/specifications/reqif/Search.reqif b/specifications/reqif/Search.reqif
new file mode 100644
index 0000000..bf52bc8
--- /dev/null
+++ b/specifications/reqif/Search.reqif
@@ -0,0 +1,2049 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:headline="http://pror.org/presentation/headline" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="rmf-e82c1946-823d-40de-8c66-eedcbbbca843">
+      <COMMENT>Created by: jastram</COMMENT>
+      <CREATION-TIME>2014-12-04T08:14:06.220+01:00</CREATION-TIME>
+      <REQ-IF-TOOL-ID>ProR (http://pror.org)</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0.1</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>ProR (http://pror.org)</SOURCE-TOOL-ID>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_Ii3vI3uFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:14:06.220+01:00" LONG-NAME="T_String32k" MAX-LENGTH="32000"/>
+        <DATATYPE-DEFINITION-STRING IDENTIFIER="_NO484HuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:21:42.499+01:00" LONG-NAME="T_ChapterName"/>
+        <DATATYPE-DEFINITION-XHTML IDENTIFIER="_wPv3kHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:25:39.770+01:00" LONG-NAME="T_XHTML"/>
+        <DATATYPE-DEFINITION-DATE IDENTIFIER="_QcQsMH7FEeS-kbr2itXc9A" LAST-CHANGE="2014-12-08T11:30:36.777+01:00" LONG-NAME="T_Date"/>
+        <DATATYPE-DEFINITION-INTEGER IDENTIFIER="_KyTGQH_GEeSYdsnACTHR5g" LAST-CHANGE="2014-12-09T18:09:40.169+01:00" LONG-NAME="T_Integer"/>
+        <DATATYPE-DEFINITION-REAL IDENTIFIER="_MlKyEH_GEeSYdsnACTHR5g" LAST-CHANGE="2014-12-09T18:09:53.379+01:00" LONG-NAME="T_Real"/>
+        <DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_iNIiMYRqEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T15:56:18.817+01:00" LONG-NAME="T_Status">
+          <SPECIFIED-VALUES>
+            <ENUM-VALUE IDENTIFIER="_p2YykIRqEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T15:57:10.829+01:00" LONG-NAME="Ready">
+              <PROPERTIES>
+                <EMBEDDED-VALUE/>
+              </PROPERTIES>
+            </ENUM-VALUE>
+            <ENUM-VALUE IDENTIFIER="_knXwAIRqEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T15:56:36.997+01:00" LONG-NAME="In progress">
+              <PROPERTIES>
+                <EMBEDDED-VALUE/>
+              </PROPERTIES>
+            </ENUM-VALUE>
+            <ENUM-VALUE IDENTIFIER="_oM33EIRqEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T15:56:58.984+01:00" LONG-NAME="Done">
+              <PROPERTIES>
+                <EMBEDDED-VALUE/>
+              </PROPERTIES>
+            </ENUM-VALUE>
+            <ENUM-VALUE IDENTIFIER="_eqI4YIRxEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:45:58.503+01:00" LONG-NAME="Won't implement">
+              <PROPERTIES>
+                <EMBEDDED-VALUE/>
+              </PROPERTIES>
+            </ENUM-VALUE>
+          </SPECIFIED-VALUES>
+        </DATATYPE-DEFINITION-ENUMERATION>
+        <DATATYPE-DEFINITION-BOOLEAN IDENTIFIER="_gnfjgIX-EeSrC7YZbjRQ5g" LAST-CHANGE="2014-12-17T16:08:05.370+01:00" LONG-NAME="T_Boolean"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPECIFICATION-TYPE IDENTIFIER="_Ii3vJnuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:14:06.220+01:00" LONG-NAME="Specification Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_Ii3vJ3uFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:14:06.220+01:00" LONG-NAME="Description">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_Ii3vI3uFEeS1tthkGDp8zA</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPECIFICATION-TYPE>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_RdybsHuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:15:06.090+01:00" LONG-NAME="Requirement Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_RdybsXuFEeS1tthkGDp8zA" LONG-NAME="ID">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_Ii3vI3uFEeS1tthkGDp8zA</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_RdybsnuFEeS1tthkGDp8zA" LONG-NAME="ReqIF.Text">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_Ii3vI3uFEeS1tthkGDp8zA</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_KcpewHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:21:25.168+01:00" LONG-NAME="ReqIF.ChapterName">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_NO484HuGEeS48tWDFoyOsw</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+            <ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_s29AkIRqEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T15:57:31.283+01:00" LONG-NAME="Status">
+              <TYPE>
+                <DATATYPE-DEFINITION-ENUMERATION-REF>_iNIiMYRqEeSo3fPbjIH42w</DATATYPE-DEFINITION-ENUMERATION-REF>
+              </TYPE>
+              <DEFAULT-VALUE>
+                <ATTRIBUTE-VALUE-ENUMERATION>
+                  <DEFINITION>
+                    <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+                  </DEFINITION>
+                </ATTRIBUTE-VALUE-ENUMERATION>
+              </DEFAULT-VALUE>
+            </ATTRIBUTE-DEFINITION-ENUMERATION>
+            <ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_OjmY8IU9EeSrC7YZbjRQ5g" LAST-CHANGE="2014-12-16T17:04:29.629+01:00" LONG-NAME="Integer">
+              <TYPE>
+                <DATATYPE-DEFINITION-INTEGER-REF>_KyTGQH_GEeSYdsnACTHR5g</DATATYPE-DEFINITION-INTEGER-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-INTEGER>
+            <ATTRIBUTE-DEFINITION-BOOLEAN IDENTIFIER="_iqVlAIX-EeSrC7YZbjRQ5g" LAST-CHANGE="2014-12-17T16:08:19.384+01:00" LONG-NAME="Boolean">
+              <TYPE>
+                <DATATYPE-DEFINITION-BOOLEAN-REF>_gnfjgIX-EeSrC7YZbjRQ5g</DATATYPE-DEFINITION-BOOLEAN-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-BOOLEAN>
+            <ATTRIBUTE-DEFINITION-REAL IDENTIFIER="_pUFUoYYIEeSPf9NLiwbWcw" LAST-CHANGE="2014-12-17T17:20:39.608+01:00" LONG-NAME="Real">
+              <TYPE>
+                <DATATYPE-DEFINITION-REAL-REF>_MlKyEH_GEeSYdsnACTHR5g</DATATYPE-DEFINITION-REAL-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-REAL>
+            <ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_hVqvwYYMEeScj_gsSBA4Mw" LAST-CHANGE="2014-12-17T17:48:23.682+01:00" LONG-NAME="Due">
+              <TYPE>
+                <DATATYPE-DEFINITION-DATE-REF>_QcQsMH7FEeS-kbr2itXc9A</DATATYPE-DEFINITION-DATE-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-DATE>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPEC-OBJECT-TYPE IDENTIFIER="_rGI5cHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:25:02.124+01:00" LONG-NAME="Information Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_tdtNwHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:25:19.394+01:00" LONG-NAME="ReqIF.Text">
+              <TYPE>
+                <DATATYPE-DEFINITION-XHTML-REF>_wPv3kHuGEeS48tWDFoyOsw</DATATYPE-DEFINITION-XHTML-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-XHTML>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPEC-RELATION-TYPE IDENTIFIER="_tHrFwIFMEeSAeqAN7wsrbQ" LAST-CHANGE="2014-12-11T16:45:14.128+01:00" LONG-NAME="Link Type">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_u7mhgIFMEeSAeqAN7wsrbQ" LAST-CHANGE="2014-12-11T16:45:18.638+01:00" LONG-NAME="ReqIF.Text">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>_Ii3vI3uFEeS1tthkGDp8zA</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-RELATION-TYPE>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="_Rd7loHuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-08T13:48:00.220+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="While there is very basic search support available, it is currently not suitable for professional work.  The objective of this project is to improve this, as follows:">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_ReHL0HuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-08T14:20:41.356+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The following is a proposal on how the interface could look like, based on best practices in user interface design.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+            <ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-INTEGER-REF>_OjmY8IU9EeSrC7YZbjRQ5g</ATTRIBUTE-DEFINITION-INTEGER-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-INTEGER>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_ReRj4HuFEeS1tthkGDp8zA" LAST-CHANGE="2015-01-02T12:29:02.928+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Spec-Nav">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsXuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Within a Specification, users can navigate between search results via corresponding buttons in the toolbar, i.e. .  Note that this will not cycle through elements outside the specification (e.g. elements in other Specifications or SpecTypes).">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Reb78HuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-07T16:56:31.782+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Result-Nav">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsXuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The result of a search will be shown in a separate view, as shown in the mockup (implementation appearance may vary).">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_bBoUAHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-08T14:56:30.927+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="User-Friendly Searcing Title">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_xpa_cH4nEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-08T11:26:31.234+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-XHTML>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-XHTML-REF>_tdtNwHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-XHTML-REF>
+              </DEFINITION>
+              <THE-VALUE>
+                <xhtml:div><xhtml:p style="text-align: left;"><xhtml:object data="Search/search-mockup.png" style="max-width:100%;" type="image/png">This is what will show if the image can't be displayed.</xhtml:object></xhtml:p></xhtml:div>
+              </THE-VALUE>
+            </ATTRIBUTE-VALUE-XHTML>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_rGI5cHuGEeS48tWDFoyOsw</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Ixr7gH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:45:52.846+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Search-UI">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_UjFF8H4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:49:42.136+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Note that this is a non-functional mock-up.  The final interface will differ in appearance.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_fQwJkH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:48:57.648+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The final Details regarding the conditions are found after this table in “Search Conditions” below. interface will differ in appearance.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_jpJtMH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:48:58.371+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The search interface allows the user to to configure a number of “conditions”.  These relate either to internal attributes (e.g. internal ID) or attribute values (those attributes that the user creates), with typical type-specific relations: equal, contains, etc.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_leVtMH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:49:10.659+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="All conditions are combined via “and” or “or”.  More complex relationships are not supported in this first implementation. Details regarding the conditions are found after this table in “Search Conditions” below.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_wPuMIH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:50:22.946+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Spec-Nav">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_XUBuIH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:55:36.087+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-XHTML>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-XHTML-REF>_tdtNwHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-XHTML-REF>
+              </DEFINITION>
+              <THE-VALUE>
+                <xhtml:div><xhtml:p style="text-align: left;"><xhtml:object data="Search/arrows.png" style="max-width:100%;" type="image/png">This is what will show if the image can't be displayed.</xhtml:object></xhtml:p></xhtml:div>
+              </THE-VALUE>
+            </ATTRIBUTE-VALUE-XHTML>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_rGI5cHuGEeS48tWDFoyOsw</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_f8jqMH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:55:43.059+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Result-Nav">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_nTc_QH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:46.238+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="In will show all matches, including those that are not accessible from the Specification Editor.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_pb22MH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:46.739+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The View will exhibit the following behavior:">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_qrvwwH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:55.116+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Selecting any element will show its properties in the Properties View, where it can be edited.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_r1rNQH4pEeSJSKCeNoEp0g" LAST-CHANGE="2015-01-02T12:29:13.038+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Double-Clicking on a SpecHierarchy will open the corresponding Specification, with the clicked SpecHierarchy selected.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_wWlzsH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:57:59.375+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-XHTML>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-XHTML-REF>_tdtNwHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-XHTML-REF>
+              </DEFINITION>
+              <THE-VALUE>
+                <xhtml:div><xhtml:p style="text-align: left;"><xhtml:object data="Search/search-result.png" style="max-width:100%;" type="image/png">This is what will show if the image can't be displayed.</xhtml:object></xhtml:p></xhtml:div>
+              </THE-VALUE>
+            </ATTRIBUTE-VALUE-XHTML>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_rGI5cHuGEeS48tWDFoyOsw</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_AIIZ0H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-15T16:27:09.053+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Search-Conditions">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_LsaVUH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:00:34.377+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="In the following, we outline the various Conditions for the search box.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_MKVncH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:06.345+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The Scope of attributes can be “internal” or “value”.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_QMLsQH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:06.819+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="  Internal attributes are those defined by the ReqIF standard, e.g. Identifiable.identifier.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Rm0eQH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:16.324+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Values are specific instances of Attributes that were set up by the user. They are identified in the form SPECTYPE.ATTRIBUTENAME.  Thus, as users create new SpecTypes and their attributes, so will the list of choices grow.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_U0NAQH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:37.860+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The available criteria are determined by the Type.  We can class multiple attributes in one type (e.g. integer and real are both of type NUM).">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_V1xyAH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:44.736+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="If an attribute is null or does not exist, then it is treated as if it was empty.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_mrWoAH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:03:37.728+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Identifiable.identifier (STRING): Internal attribute&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_oPR44H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:04.413+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Identifiable.lastChange (DATE): Internal attribute">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_riumoH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:10.378+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Identifiable.desc (STRING): Internal attribute">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_uOb-8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:28.383+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Identifiable.longName (STRING) Internal attribute&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_wcpi8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:43.295+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueBoolean (BOOL): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_yqNmsH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:58.139+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueDate (DATE): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_0rNOEH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:11.665+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueEnumeration (ENUM): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_3VBI8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:29.471+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueInteger (NUM): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_5wNZAH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:56.386+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueReal (NUM): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_8WllYH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:03.189+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueString (STRING): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_-gKhAH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:17.616+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="AttributeValueXHTML (XHTML): Value">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_A4zzYH4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:33.622+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The following table describes the various types.  Most types are straight forward, except XHTML.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_CPt78H4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:42.735+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="The XHTML operation is applied to the raw XHTML, including all tags (this allows searching for embedded URLs, for instance).  There is the additional option of “regexp plain”. In that case, the regular expression is applied to the plain text, with all tags stripped out.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Dug1MH4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:52.675+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="NOTE: We are considering to introduce a NEGATION flag for all conditions.  This would reduce the number of selectors, but of course not the number of overall options.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_eqI4YIRxEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_1XObsIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:27:09.035+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Search-Conditions Interface">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_7Xf8EIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:49.296+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="String">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_9P0voIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:00.017+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="equal:one text field (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_BUYKMIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:29.266+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="not equal: one text field (if empty: true)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_D_z1sIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:47.243+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="contains: one text field (if empty: false)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_GUXSQIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:02.820+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="not contains: one text field (if empty: true)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_I0jXEIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:19.617+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="regexp: one text field (if empty: regexp applied to empty string)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_NPWucIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:06.719+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Date">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_P6ISoIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:30:01.717+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is: one date selector (if empty: false)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Tz2WMIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:30:33.363+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is not: one date selector (if empty: true)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_YhH9oIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:04.954+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="between: two date selectors (if empty: false)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_apgmcIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:19.255+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="before: one date selector (if empty: false)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_ftZ-IIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:53.218+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="after: one date selector (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_ht7EYIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:35.285+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Bool">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_jY7NoIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:15.567+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is: dropwdown: true/false (if empty: false)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_l-apMIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:37.137+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Number">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_qYF_MIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:01.426+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is: one number field (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_updGsIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:33.467+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is not: one number field (if empty: true)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_xhUrsIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:52.747+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="between: two number fields (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_z9RJsIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:09.098+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="greater: one number field (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_2QODwIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:24.508+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="smaller: one number field (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_4IhCIIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:01.253+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="XHTML">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_5837sIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:47.704+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="contains: one text field (if empty: false)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_8qk4EIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:07.537+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="not contains: one text field (if empty: true)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="__MW4UIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:24.501+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="regexp: one text field (if empty: regexp applied to empty string)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_CRnZEIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:45.185+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="regexp plain: one text field (if empty: regexp applied to empty string)">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_EqsJQIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:01.236+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Enum">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_G3v2sIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:12.940+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="equal: multiple choice (if empty: false, unless empty)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_Ka83sIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:39.851+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="not equal: multiple choice (if empty: true, unless empty)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_MrsyUIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:55.028+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="contains all: multiple choice (if empty: false, unless empty)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_PGUaoIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:37:11.242+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="contains any: multiple choice (if emtpy: false, unless empty)&#xA;">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_GvRwkIUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:09.141+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Documentation">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_IjTS8IUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:19.371+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Context-Sensitive Integration">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_KU82wIUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:33.228+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Help Content">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_p2YykIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_baq2AYUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T11:51:02.876+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Operators for all">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_KcpewHuGEeS48tWDFoyOsw</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_daicAIUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T13:29:21.202+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is set: If a non-null-value exists, return true.  Ignore default values (i.e. if there is a default value but no explicitly set one, return false).">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="_kTHdYIUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T13:29:23.448+01:00">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="is not set: return true only if the attribute exisits, but is not set (irrespective of default value).">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_RdybsnuFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+            <ATTRIBUTE-VALUE-ENUMERATION>
+              <VALUES>
+                <ENUM-VALUE-REF>_oM33EIRqEeSo3fPbjIH42w</ENUM-VALUE-REF>
+              </VALUES>
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-ENUMERATION-REF>_s29AkIRqEeSo3fPbjIH42w</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-ENUMERATION>
+          </VALUES>
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>_RdybsHuFEeS1tthkGDp8zA</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPEC-RELATIONS/>
+      <SPECIFICATIONS>
+        <SPECIFICATION IDENTIFIER="_Ii3vKnuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:14:06.220+01:00" LONG-NAME="Specification Document">
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Requirements Document">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>_Ii3vJ3uFEeS1tthkGDp8zA</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>_Ii3vJnuFEeS1tthkGDp8zA</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="_bB2WcHuGEeS48tWDFoyOsw" LAST-CHANGE="2014-12-04T08:23:14.270+01:00">
+              <OBJECT>
+                <SPEC-OBJECT-REF>_bBoUAHuGEeS48tWDFoyOsw</SPEC-OBJECT-REF>
+              </OBJECT>
+              <CHILDREN>
+                <SPEC-HIERARCHY IDENTIFIER="_ReFWoHuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-04T08:24:04.425+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_Rd7loHuFEeS1tthkGDp8zA</SPEC-OBJECT-REF>
+                  </OBJECT>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_Ix2TkH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:45:52.847+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_Ixr7gH4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_ReQVwHuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-07T16:46:13.912+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_ReHL0HuFEeS1tthkGDp8zA</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_xpl-kH4nEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:50:56.983+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_xpa_cH4nEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_UjR6QH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:47:17.070+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_UjFF8H4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_fQ7vwH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:48:28.969+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_fQwJkH4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_jpTeMH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:48:58.371+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_jpJtMH4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_legFQH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:49:10.659+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_leVtMH4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_wP81oH4oEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:50:22.946+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_wPuMIH4oEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_Reat0HuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-07T16:54:31.540+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_ReRj4HuFEeS1tthkGDp8zA</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_XUNUUH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:54:41.918+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_XUBuIH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_f8uCQH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:55:43.059+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_f8jqMH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_ReoJMHuFEeS1tthkGDp8zA" LAST-CHANGE="2014-12-07T16:56:05.298+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_Reb78HuFEeS1tthkGDp8zA</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_wW2SYH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:57:07.408+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_wWlzsH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_nTolcH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:32.436+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_nTc_QH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_pcAnMH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:46.739+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_pb22MH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_qr6v4H4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:56:55.116+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_qrvwwH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_r12MYH4pEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:57:02.868+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_r1rNQH4pEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_AITY8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T16:59:47.890+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_AIIZ0H4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_LsmikH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:00:34.377+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_LsaVUH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_MKfYcH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:00:39.783+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_MKVncH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_QMVdQH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:06.820+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_QMLsQH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_Rm-PQH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:16.324+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_Rm0eQH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_U0cQ0H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:37.860+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_U0NAQH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_V19YMH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:01:44.736+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_V1xyAH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_mriOMH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:03:37.728+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_mrWoAH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_oPcQ8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:03:48.206+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_oPR44H4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_ri6z4H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:10.378+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_riumoH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_uOmXAH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:28.383+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_uOb-8H4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_wc1JIH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:43.295+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_wcpi8H4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_yqZM4H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:04:58.139+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_yqNmsH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_0rYNMH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:11.665+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_0rNOEH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_3VMvIH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:29.471+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_3VBI8H4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_5wWi8H4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:05:45.744+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_5wNZAH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_8WxyoH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:03.189+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_8WllYH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_-gU5EH4qEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:17.616+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_-gKhAH4qEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_A489UH4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:33.622+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_A4zzYH4rEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_CP4UAH4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:42.735+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_CPt78H4rEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_DutpgH4rEeSJSKCeNoEp0g" LAST-CHANGE="2014-12-07T17:06:52.675+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_Dug1MH4rEeSJSKCeNoEp0g</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_ba77wIUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T11:51:02.876+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_baq2AYUREeScH7zcd23EKQ</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_dazhwIUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T11:51:14.450+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_daicAIUREeScH7zcd23EKQ</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_kTScgIUREeScH7zcd23EKQ" LAST-CHANGE="2014-12-16T11:52:02.486+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_kTHdYIUREeScH7zcd23EKQ</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_1XYMsIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:27:09.035+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_1XObsIRuEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_7XulkIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:27:47.337+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_7Xf8EIRuEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_9QCyEIRuEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:00.017+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_9P0voIRuEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_BUhUIIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:29.267+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_BUYKMIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_D_9msIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:28:47.243+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_D_z1sIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_GUgcMIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:02.820+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_GUXSQIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_I0tvIIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:19.617+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_I0jXEIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_NPlX8IRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:29:49.271+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_NPWucIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_P6RckIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:30:01.717+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_P6ISoIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_Tz_gIIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:30:33.363+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_Tz2WMIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_YhRHkIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:04.954+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_YhH9oIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_apszsIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:19.255+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_apgmcIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_ftjvIIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:31:53.218+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_ftZ-IIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_huKU8IRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:06.694+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_ht7EYIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_jZGz0IRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:15.567+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_jY7NoIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_l-loUIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:32:35.267+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_l-apMIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_qYTakIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:01.426+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_qYF_MIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_upmQoIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:33.467+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_updGsIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_xhd1oIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:33:52.747+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_xhUrsIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_z9cv4IRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:09.099+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_z9RJsIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_2QXNsIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:24.508+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_2QODwIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_4IqMEIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:37.122+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_4IhCIIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_59F-IIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:34:47.704+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_5837sIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_8qta8IRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:07.537+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_8qk4EIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="__MhQYIRvEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:24.501+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>__MW4UIRvEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_CRv78IRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:35:45.185+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_CRnZEIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_Eq2hUIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:01.236+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_EqsJQIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                      </OBJECT>
+                      <CHILDREN>
+                        <SPEC-HIERARCHY IDENTIFIER="_G35nsIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:12.940+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_G3v2sIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_KbFakIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:39.851+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_Ka83sIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_Mr4_kIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:36:55.029+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_MrsyUIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                        <SPEC-HIERARCHY IDENTIFIER="_PGdkkIRwEeSo3fPbjIH42w" LAST-CHANGE="2014-12-15T16:37:11.242+01:00">
+                          <OBJECT>
+                            <SPEC-OBJECT-REF>_PGUaoIRwEeSo3fPbjIH42w</SPEC-OBJECT-REF>
+                          </OBJECT>
+                        </SPEC-HIERARCHY>
+                      </CHILDREN>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+                <SPEC-HIERARCHY IDENTIFIER="_GvfzAIUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:09.141+01:00">
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>_GvRwkIUHEeSBv4sQQMMdsA</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <CHILDREN>
+                    <SPEC-HIERARCHY IDENTIFIER="_IjdrAIUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:19.371+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_IjTS8IUHEeSBv4sQQMMdsA</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                    <SPEC-HIERARCHY IDENTIFIER="_KVGnwIUHEeSBv4sQQMMdsA" LAST-CHANGE="2014-12-16T10:37:33.228+01:00">
+                      <OBJECT>
+                        <SPEC-OBJECT-REF>_KU82wIUHEeSBv4sQQMMdsA</SPEC-OBJECT-REF>
+                      </OBJECT>
+                    </SPEC-HIERARCHY>
+                  </CHILDREN>
+                </SPEC-HIERARCHY>
+              </CHILDREN>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+  <TOOL-EXTENSIONS>
+    <REQ-IF-TOOL-EXTENSION>
+      <configuration:ProrToolExtension>
+        <configuration:specViewConfigurations>
+          <configuration:ProrSpecViewConfiguration specification="_Ii3vKnuFEeS1tthkGDp8zA">
+            <configuration:columns>
+              <configuration:UnifiedColumn label="Main" width="393"/>
+              <configuration:Column label="Status"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="59"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+          <configuration:ProrSpecViewConfiguration>
+            <configuration:columns>
+              <configuration:UnifiedColumn label="Main" width="458"/>
+            </configuration:columns>
+            <configuration:leftHeaderColumn>
+              <configuration:Column label="Lead Header Column" width="30"/>
+            </configuration:leftHeaderColumn>
+          </configuration:ProrSpecViewConfiguration>
+        </configuration:specViewConfigurations>
+        <configuration:generalConfiguration>
+          <configuration:ProrGeneralConfiguration>
+            <configuration:labelConfiguration>
+              <configuration:LabelConfiguration>
+                <defaultLabel>ID</defaultLabel>
+                <defaultLabel>ReqIF.ChapterName</defaultLabel>
+                <defaultLabel>ReqIF.Text</defaultLabel>
+                <defaultLabel>Description</defaultLabel>
+              </configuration:LabelConfiguration>
+            </configuration:labelConfiguration>
+          </configuration:ProrGeneralConfiguration>
+        </configuration:generalConfiguration>
+        <configuration:presentationConfigurations>
+          <configuration:ProrPresentationConfigurations>
+            <configuration:presentationConfigurations>
+              <headline:HeadlineConfiguration datatype="_NO484HuGEeS48tWDFoyOsw"/>
+            </configuration:presentationConfigurations>
+          </configuration:ProrPresentationConfigurations>
+        </configuration:presentationConfigurations>
+      </configuration:ProrToolExtension>
+    </REQ-IF-TOOL-EXTENSION>
+  </TOOL-EXTENSIONS>
+</REQ-IF>
diff --git a/specifications/reqif/Search/arrows.png b/specifications/reqif/Search/arrows.png
new file mode 100644
index 0000000..1293928
--- /dev/null
+++ b/specifications/reqif/Search/arrows.png
Binary files differ
diff --git a/specifications/reqif/Search/search-mockup.png b/specifications/reqif/Search/search-mockup.png
new file mode 100644
index 0000000..4322ece
--- /dev/null
+++ b/specifications/reqif/Search/search-mockup.png
Binary files differ
diff --git a/specifications/reqif/Search/search-result.png b/specifications/reqif/Search/search-result.png
new file mode 100644
index 0000000..eb790f2
--- /dev/null
+++ b/specifications/reqif/Search/search-result.png
Binary files differ