460339: Consume serialization from Sphinx Project 

removed org.eclipse.rmf.serialization plugin which is now replaced by
org.eclipse.sphinx.emf.serialization

Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=460339
diff --git a/org.eclipse.rmf.serialization/.classpath b/org.eclipse.rmf.serialization/.classpath
deleted file mode 100644
index 472ee29..0000000
--- a/org.eclipse.rmf.serialization/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<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="output" path="bin"/>
-</classpath>
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/.project b/org.eclipse.rmf.serialization/.project
deleted file mode 100644
index 3a80015..0000000
--- a/org.eclipse.rmf.serialization/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rmf.serialization</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
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;
-	}
-
-}