[CDO] Add CDO'ified models

Add CDO'ified version of Nattable.genmodel
Add CDO'ified version of Architecture.genmodel
Add CDO'ified version of the UML Standard profile

Change-Id: I2d52be0b636ad8d2890da0adc025c9910828a15d
Signed-off-by: Eike Stepper <stepper@esc-net.de>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.classpath b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.project b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.project
new file mode 100644
index 0000000..ed48dfe
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.project
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.infra.core.architecture.cdo</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>
+        <buildCommand>
+            <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+            <arguments>
+            </arguments>
+        </buildCommand>
+        <buildCommand>
+            <name>org.eclipse.oomph.version.VersionBuilder</name>
+            <arguments>
+                <dictionary>
+                    <key>check.maven.pom</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>ignore.lower.bound.dependency.ranges</key>
+                    <value>true</value>
+                </dictionary>
+                <dictionary>
+                    <key>release.path</key>
+                    <value>/org.eclipse.papyrus.releng.main.release/release.xml</value>
+                </dictionary>
+            </arguments>
+        </buildCommand>
+    </buildSpec>
+    <natures>
+        <nature>org.eclipse.pde.PluginNature</nature>
+        <nature>org.eclipse.jdt.core.javanature</nature>
+        <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+        <nature>org.eclipse.oomph.version.VersionNature</nature>
+    </natures>
+</projectDescription>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.resources.prefs b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..896a9a5
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
\ No newline at end of file
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.runtime.prefs b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.core.prefs b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2411532
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,294 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+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_lambda_body=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=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+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=260
+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=do not 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_after_type_annotation=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_lambda_arrow=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_lambda_arrow=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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=260
+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=5
+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/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.ui.prefs b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..ba7542e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=false
+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=true
+cleanup.remove_redundant_type_arguments=true
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+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\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\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 * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n *\n * Contributors\:\n *   CEA LIST - Initial API and implementation\n *   \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\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 *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\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\="true" 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\n${exception_var}.printStackTrace();</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=true
+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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_type_arguments=true
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.pde.api.tools.prefs b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..b2260f8
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,104 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+changed_execution_env=Warning
+eclipse.preferences.version=1
+incompatible_api_component_version=Warning
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Error
+incompatible_api_component_version_report_minor_without_api_change=Error
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/META-INF/MANIFEST.MF b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e6c2798
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.infra.core.architecture.cdo;singleton:=true
+Automatic-Module-Name: org.eclipse.papyrus.infra.core.architecture.cdo
+Bundle-Version: 2.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.infra.core.architecture.cdo
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.12.0,3.0.0)",
+ org.eclipse.gmf.runtime.emf.type.core;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.14.0,4.0.0)",
+ org.eclipse.papyrus.infra.types;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.papyrus.emf;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.infra.core.architecture;bundle-version="[2.1.0,3.0.0)"
+Bundle-ActivationPolicy: lazy
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/about.html b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/about.html
@@ -0,0 +1,28 @@
+<!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>November 30, 2017</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 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</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/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/build.properties b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/build.properties
new file mode 100644
index 0000000..543fdec
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/build.properties
@@ -0,0 +1,23 @@
+* Copyright (c) 2017 CEA LIST.
+# 
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License 2.0
+#  which accompanies this distribution, and is available at
+#  https://www.eclipse.org/legal/epl-2.0/
+#
+#  SPDX-License-Identifier: EPL-2.0
+#  
+#  Contributors:
+#  Maged Elaasar - Initial API and implementation
+#  
+# 
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.aird b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.aird
new file mode 100644
index 0000000..6069591
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.aird
@@ -0,0 +1,977 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+  <viewpoint:DAnalysis xmi:id="_xGjjUO0AEeaf8aQEde1Z1Q" selectedViews="_ya3q4O0AEeaf8aQEde1Z1Q _ybEfMO0AEeaf8aQEde1Z1Q _ybFtUO0AEeaf8aQEde1Z1Q _ybMbAO0AEeaf8aQEde1Z1Q" version="11.1.0.201608251200">
+    <semanticResources>Architecture.ecore</semanticResources>
+    <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources>
+    <semanticResources>platform:/resource/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.ecore</semanticResources>
+    <semanticResources>Architecture.genmodel</semanticResources>
+    <semanticResources>platform:/resource/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel</semanticResources>
+    <ownedViews xmi:type="viewpoint:DView" xmi:id="_ya3q4O0AEeaf8aQEde1Z1Q">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_5z_NgO0AEeaf8aQEde1Z1Q" name="architecture class diagram" representation="_5z_0kO0AEeaf8aQEde1Z1Q">
+        <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+        <target xmi:type="ecore:EPackage" href="Architecture.ecore#/"/>
+      </ownedRepresentationDescriptors>
+    </ownedViews>
+    <ownedViews xmi:type="viewpoint:DView" xmi:id="_ybEfMO0AEeaf8aQEde1Z1Q">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
+    </ownedViews>
+    <ownedViews xmi:type="viewpoint:DView" xmi:id="_ybFtUO0AEeaf8aQEde1Z1Q">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
+    </ownedViews>
+    <ownedViews xmi:type="viewpoint:DView" xmi:id="_ybMbAO0AEeaf8aQEde1Z1Q">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
+    </ownedViews>
+  </viewpoint:DAnalysis>
+  <diagram:DSemanticDiagram xmi:id="_5z_0kO0AEeaf8aQEde1Z1Q" name="architecture class diagram">
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_5z_0ke0AEeaf8aQEde1Z1Q" source="DANNOTATION_CUSTOMIZATION_KEY">
+      <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_5z_0ku0AEeaf8aQEde1Z1Q">
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_7Qb9YO0AEeaf8aQEde1Z1Q" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelFormat>bold</labelFormat>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_7QirEO0AEeaf8aQEde1Z1Q" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_7Qr1AO0AEeaf8aQEde1Z1Q" labelExpression="service:renderAsNode" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelFormat>bold</labelFormat>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_7SFjMO0AEeaf8aQEde1Z1Q" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_7SFjMe0AEeaf8aQEde1Z1Q" showIcon="false" labelExpression="service:renderEOpposite">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </beginLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_7SFjMu0AEeaf8aQEde1Z1Q" showIcon="false" labelExpression="service:render">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_7SMQ4O0AEeaf8aQEde1Z1Q" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_7SMQ4e0AEeaf8aQEde1Z1Q" showIcon="false" labelExpression="service:renderEOpposite">
+            <labelFormat>bold</labelFormat>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </beginLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_7SMQ4u0AEeaf8aQEde1Z1Q" showIcon="false" labelExpression="service:render">
+            <labelFormat>bold</labelFormat>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_53Qj8O0AEeaf8aQEde1Z1Q" source="GMF_DIAGRAMS">
+      <data xmi:type="notation:Diagram" xmi:id="_53Qj8e0AEeaf8aQEde1Z1Q" type="Sirius" element="_5z_0kO0AEeaf8aQEde1Z1Q" measurementUnit="Pixel">
+        <children xmi:type="notation:Node" xmi:id="_7SZsQO0AEeaf8aQEde1Z1Q" type="2003" element="_7PdF8O0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SbhcO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7Sfy4O0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7StOQO0AEeaf8aQEde1Z1Q" type="3010" element="_7QZhIO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7StOQe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7StOQu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7St1UO0AEeaf8aQEde1Z1Q" type="3010" element="_7Qg14O0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7St1Ue0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7St1Uu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7St1U-0AEeaf8aQEde1Z1Q" type="3010" element="_7QiEAO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7St1VO0AEeaf8aQEde1Z1Q" fontColor="7490599" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7St1Ve0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7Sfy4e0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7Sfy4u0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SZsQe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SZsQu0AEeaf8aQEde1Z1Q" x="267" y="21" height="82"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SgZ8O0AEeaf8aQEde1Z1Q" type="2003" element="_7Pp6QO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7ShoEO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7ShoEe0AEeaf8aQEde1Z1Q" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7ShoEu0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7ShoE-0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SgZ8e0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SgZ8u0AEeaf8aQEde1Z1Q" x="123" y="117" height="57"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SiPIO0AEeaf8aQEde1Z1Q" type="2003" element="_7Ps9kO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SjdQO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7SjdQe0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7SucYO0AEeaf8aQEde1Z1Q" type="3010" element="_7QkgQO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SucYe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SucYu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7SucY-0AEeaf8aQEde1Z1Q" type="3010" element="_7QtDIO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SucZO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SucZe0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SjdQu0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7SjdQ-0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SiPIe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SiPIu0AEeaf8aQEde1Z1Q" x="324" y="270" height="66"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SkEUO0AEeaf8aQEde1Z1Q" type="2003" element="_7PvZ0O0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SkrYO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7SlScO0AEeaf8aQEde1Z1Q" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SlSce0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7SlScu0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SkEUe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SkEUu0AEeaf8aQEde1Z1Q" x="126" y="274" height="57"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SlSc-0AEeaf8aQEde1Z1Q" type="2003" element="_7PxPAO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7Sl5gO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7Sl5ge0AEeaf8aQEde1Z1Q" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SmgkO0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7Smgke0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SlSdO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SlSde0AEeaf8aQEde1Z1Q" x="123" y="432" height="57"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7Smgku0AEeaf8aQEde1Z1Q" type="2003" element="_7PzEMO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SnHoO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7SnHoe0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7SvDcO0AEeaf8aQEde1Z1Q" type="3010" element="_7Qu4UO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SvDce0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SvDcu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SnHou0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7SnHo-0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7Smgk-0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SmglO0AEeaf8aQEde1Z1Q" x="600" y="432" height="57"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SnHpO0AEeaf8aQEde1Z1Q" type="2003" element="_7P1gcO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SnusO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7So80O0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7SvqgO0AEeaf8aQEde1Z1Q" type="3010" element="_7QxUkO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7Svqge0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7Svqgu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7So80e0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7So80u0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SnHpe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SnHpu0AEeaf8aQEde1Z1Q" x="339" y="432" height="57"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7So80-0AEeaf8aQEde1Z1Q" type="2003" element="_7P5x4O0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7Spj4O0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7Spj4e0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7Svqg-0AEeaf8aQEde1Z1Q" type="3010" element="_7QyisO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SvqhO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7Svqhe0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7SwRkO0AEeaf8aQEde1Z1Q" type="3010" element="_7Q0X4O0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SwRke0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SwRku0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7SwRk-0AEeaf8aQEde1Z1Q" type="3010" element="_7Q0-8e0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SwRlO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SwRle0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7SwRlu0AEeaf8aQEde1Z1Q" type="3010" element="_7Q2NEO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7SwRl-0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7SwRmO0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7Sw4oO0AEeaf8aQEde1Z1Q" type="3010" element="_7Q3bMO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7Sw4oe0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7Sw4ou0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_7Sw4o-0AEeaf8aQEde1Z1Q" type="3010" element="_7Q4pUO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7Sw4pO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7Sw4pe0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7Spj4u0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7Spj4-0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7So81O0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7So81e0AEeaf8aQEde1Z1Q" x="376" y="117"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SqK8O0AEeaf8aQEde1Z1Q" type="2003" element="_7P7nEO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SqK8-0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7SqyAO0AEeaf8aQEde1Z1Q" type="7004">
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SqyAe0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7SqyAu0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SqK8e0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SqK8u0AEeaf8aQEde1Z1Q" x="495" y="270" height="66"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_7SqyA-0AEeaf8aQEde1Z1Q" type="2003" element="_7P9cQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7SrZEO0AEeaf8aQEde1Z1Q" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_7SrZEe0AEeaf8aQEde1Z1Q" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_7SxfsO0AEeaf8aQEde1Z1Q" type="3010" element="_7Q53cO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_7Sxfse0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_7Sxfsu0AEeaf8aQEde1Z1Q"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_7SrZEu0AEeaf8aQEde1Z1Q"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_7SrZE-0AEeaf8aQEde1Z1Q"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_7SqyBO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7SqyBe0AEeaf8aQEde1Z1Q" x="234" y="189" height="55"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_anAukPaMEeazb43LOF1y5w" type="2003" element="_amJL4PaMEeazb43LOF1y5w">
+          <children xmi:type="notation:Node" xmi:id="_anjhIPaMEeazb43LOF1y5w" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_ankIMPaMEeazb43LOF1y5w" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_NLxcAPaNEeazb43LOF1y5w" type="3010" element="_7Q7FkO0AEeaf8aQEde1Z1Q">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NLxcAfaNEeazb43LOF1y5w" fontName=".SF NS Text" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NLxcAvaNEeazb43LOF1y5w"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_ankIMfaMEeazb43LOF1y5w"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_ankIMvaMEeazb43LOF1y5w"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_anAukfaMEeazb43LOF1y5w" fontName=".SF NS Text" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_anAukvaMEeazb43LOF1y5w" x="234" y="351" height="57"/>
+        </children>
+        <styles xmi:type="notation:DiagramStyle" xmi:id="_53Qj8u0AEeaf8aQEde1Z1Q"/>
+        <edges xmi:type="notation:Edge" xmi:id="_7S-UAO0AEeaf8aQEde1Z1Q" type="4001" element="_7REPgO0AEeaf8aQEde1Z1Q" source="_7SkEUO0AEeaf8aQEde1Z1Q" target="_7SlSc-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TAwQO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TAwQe0AEeaf8aQEde1Z1Q" x="38" y="33"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TB-YO0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TB-Ye0AEeaf8aQEde1Z1Q" x="39" y="-7"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TDMgO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TDMge0AEeaf8aQEde1Z1Q" x="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7S-UAe0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7S-UAu0AEeaf8aQEde1Z1Q" fontColor="7490599" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7S-UA-0AEeaf8aQEde1Z1Q" points="[-60, -10, 61, -122]$[-60, 93, 61, -19]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TQA0O0AEeaf8aQEde1Z1Q" id="(1.0,1.1878787425648083)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TQn4O0AEeaf8aQEde1Z1Q" id="(0.0,0.3563636363636364)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TQn4e0AEeaf8aQEde1Z1Q" type="4001" element="_7Rvk8O0AEeaf8aQEde1Z1Q" source="_7Smgku0AEeaf8aQEde1Z1Q" target="_7SlSc-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TRO8O0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TRO8e0AEeaf8aQEde1Z1Q" x="198" y="13"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TR2AO0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TR2Ae0AEeaf8aQEde1Z1Q" x="45" y="-9"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TR2Au0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TR2A-0AEeaf8aQEde1Z1Q" x="-2" y="36"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TQn4u0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TQn4-0AEeaf8aQEde1Z1Q" fontColor="7490599" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TQn5O0AEeaf8aQEde1Z1Q" points="[-58, -3, 537, -23]$[-58, 19, 537, -1]$[-535, 19, 60, -1]$[-535, -3, 60, -23]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TSdEO0AEeaf8aQEde1Z1Q" id="(1.0,1.069090909090909)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TSdEe0AEeaf8aQEde1Z1Q" id="(0.0,1.4254545454545455)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TSdEu0AEeaf8aQEde1Z1Q" type="4001" element="_7RxaIO0AEeaf8aQEde1Z1Q" source="_7Smgku0AEeaf8aQEde1Z1Q" target="_7SnHpO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TTEIO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TTEIe0AEeaf8aQEde1Z1Q" x="12" y="-14"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TTEIu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TTEI-0AEeaf8aQEde1Z1Q" x="85" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TTEJO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TTEJe0AEeaf8aQEde1Z1Q" x="14" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TSdE-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TSdFO0AEeaf8aQEde1Z1Q" fontColor="7490599" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TSdFe0AEeaf8aQEde1Z1Q" points="[-118, -3, 261, -29]$[-261, -3, 118, -29]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TTrMO0AEeaf8aQEde1Z1Q" id="(1.0,0.7127272727272728)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TTrMe0AEeaf8aQEde1Z1Q" id="(0.0,1.1878786066228695)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TTrMu0AEeaf8aQEde1Z1Q" type="4001" element="_7RyBM-0AEeaf8aQEde1Z1Q" source="_7SnHpO0AEeaf8aQEde1Z1Q" target="_7SlSc-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TUSQO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TUSQe0AEeaf8aQEde1Z1Q" x="12" y="-14"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TUSQu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TUSQ-0AEeaf8aQEde1Z1Q" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TU5UO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TU5Ue0AEeaf8aQEde1Z1Q" x="3" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TTrM-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TTrNO0AEeaf8aQEde1Z1Q" fontColor="7490599" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TTrNe0AEeaf8aQEde1Z1Q" points="[-118, -5, 216, -31]$[-216, -5, 118, -31]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TU5Uu0AEeaf8aQEde1Z1Q" id="(1.0,0.5939395751953125)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TU5U-0AEeaf8aQEde1Z1Q" id="(0.0,1.069090909090909)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TU5VO0AEeaf8aQEde1Z1Q" type="4001" element="_7R0dcO0AEeaf8aQEde1Z1Q" source="_7SgZ8O0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TVgYO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TVgYe0AEeaf8aQEde1Z1Q" x="-2" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TVgYu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TVgY-0AEeaf8aQEde1Z1Q" x="-18" y="53"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TVgZO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TVgZe0AEeaf8aQEde1Z1Q" x="2" y="-31"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TU5Ve0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TU5Vu0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TU5V-0AEeaf8aQEde1Z1Q" points="[-14, -39, -40, 69]$[-14, -65, -40, 43]$[26, -65, 0, 43]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TWHcO0AEeaf8aQEde1Z1Q" id="(1.0,0.7127272727272728)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TWHce0AEeaf8aQEde1Z1Q" id="(0.0,0.3499999732971191)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TWHcu0AEeaf8aQEde1Z1Q" type="4001" element="_7R5V8O0AEeaf8aQEde1Z1Q" source="_7SiPIO0AEeaf8aQEde1Z1Q" target="_7So80-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TWugO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TWuge0AEeaf8aQEde1Z1Q" x="-4" y="1"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TWugu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TWug-0AEeaf8aQEde1Z1Q" x="4" y="-5"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TWuhO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TWuhe0AEeaf8aQEde1Z1Q" x="-12"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TWHc-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TWHdO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TWHde0AEeaf8aQEde1Z1Q" points="[-58, -32, 40, 78]$[-58, -60, 40, 50]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TXVkO0AEeaf8aQEde1Z1Q" id="(1.0,0.5104168224334716)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TXVke0AEeaf8aQEde1Z1Q" id="(0.0,0.6000000961183563)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TXVku0AEeaf8aQEde1Z1Q" type="4001" element="_7R7LIO0AEeaf8aQEde1Z1Q" source="_7SkEUO0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TX8oO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TX8oe0AEeaf8aQEde1Z1Q" x="-194" y="3"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TX8ou0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TX8o-0AEeaf8aQEde1Z1Q" x="-14" y="12"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TX8pO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TX8pe0AEeaf8aQEde1Z1Q" x="12" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TXVk-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TXVlO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TXVle0AEeaf8aQEde1Z1Q" points="[-118, 0, -141, 271]$[-193, 0, -216, 271]$[-193, -246, -216, 25]$[23, -246, 0, 25]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TYjsO0AEeaf8aQEde1Z1Q" id="(1.0,0.5939393033114347)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TYjse0AEeaf8aQEde1Z1Q" id="(0.0,0.1750000801086426)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TYjsu0AEeaf8aQEde1Z1Q" type="4001" element="_7R8ZQO0AEeaf8aQEde1Z1Q" source="_7SlSc-0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TZKwO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TZKwe0AEeaf8aQEde1Z1Q" x="-40" y="-8"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TZKwu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TZKw-0AEeaf8aQEde1Z1Q" x="-108" y="-5"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TZKxO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TZKxe0AEeaf8aQEde1Z1Q" x="-114" y="43"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TYjs-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TYjtO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TYjte0AEeaf8aQEde1Z1Q" points="[-118, -4, -144, 414]$[-208, -4, -234, 414]$[-208, -444, -234, -26]$[26, -444, 0, -26]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TZx0O0AEeaf8aQEde1Z1Q" id="(1.0,0.8909090909090909)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TZx0e0AEeaf8aQEde1Z1Q" id="(0.0,0.5250000534057617)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TZx0u0AEeaf8aQEde1Z1Q" type="4001" element="_7R9nYO0AEeaf8aQEde1Z1Q" source="_7Smgku0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TZx1u0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TaY4O0AEeaf8aQEde1Z1Q" x="-284" y="14"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TaY4e0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TaY4u0AEeaf8aQEde1Z1Q" x="-76"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TaY4-0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TaY5O0AEeaf8aQEde1Z1Q" x="-181" y="-217"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TZx0-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TZx1O0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TZx1e0AEeaf8aQEde1Z1Q" points="[-37, -78, 414, 327]$[-37, -450, 414, -45]$[-330, -450, 121, -45]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TaY5e0AEeaf8aQEde1Z1Q" id="(1.0,1.4254545454545455)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TaY5u0AEeaf8aQEde1Z1Q" id="(0.0,1.0500001068115234)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7Ta_8O0AEeaf8aQEde1Z1Q" type="4001" element="_7R-1gO0AEeaf8aQEde1Z1Q" source="_7SnHpO0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7Ta_9O0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Ta_9e0AEeaf8aQEde1Z1Q" x="-57" y="-1"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7Ta_9u0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Ta_9-0AEeaf8aQEde1Z1Q" x="163" y="-50"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TbnAO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TbnAe0AEeaf8aQEde1Z1Q" x="-144" y="-175"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7Ta_8e0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7Ta_8u0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Ta_8-0AEeaf8aQEde1Z1Q" points="[-58, -10, 132, 396]$[-58, -2, 132, 404]$[272, -2, 462, 404]$[272, -460, 462, -54]$[-69, -460, 121, -54]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TbnAu0AEeaf8aQEde1Z1Q" id="(1.0,1.1878786066228695)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TbnA-0AEeaf8aQEde1Z1Q" id="(0.0,0.8750000267028808)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TcOEO0AEeaf8aQEde1Z1Q" type="4001" element="_7SAqsO0AEeaf8aQEde1Z1Q" source="_7So80-0AEeaf8aQEde1Z1Q" target="_7SZsQO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TcOFO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TcOFe0AEeaf8aQEde1Z1Q" x="-3" y="-23"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7Tc1IO0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tc1Ie0AEeaf8aQEde1Z1Q" x="-15" y="18"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7Tc1Iu0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tc1I-0AEeaf8aQEde1Z1Q" x="-35" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TcOEe0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TcOEu0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TcOE-0AEeaf8aQEde1Z1Q" points="[-102, -62, 219, 40]$[-102, -88, 219, 14]$[-195, -88, 126, 14]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TdcMO0AEeaf8aQEde1Z1Q" id="(1.0,0.5)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TeDQO0AEeaf8aQEde1Z1Q" id="(0.0,0.7000001335144044)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TeDQe0AEeaf8aQEde1Z1Q" type="4001" element="_7SB40O0AEeaf8aQEde1Z1Q" source="_7SqK8O0AEeaf8aQEde1Z1Q" target="_7So80-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TeDRe0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TeDRu0AEeaf8aQEde1Z1Q" x="-7"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TeqUO0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TeqUe0AEeaf8aQEde1Z1Q" x="1" y="9"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TeqUu0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TeqU-0AEeaf8aQEde1Z1Q" x="-18" y="-9"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TeDQu0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TeDQ-0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TeDRO0AEeaf8aQEde1Z1Q" points="[-60, -48, 177, 104]$[-60, -76, 177, 76]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TeqVO0AEeaf8aQEde1Z1Q" id="(1.0,0.7656247663497925)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TeqVe0AEeaf8aQEde1Z1Q" id="(0.0,0.3999999038816437)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TeqVu0AEeaf8aQEde1Z1Q" type="4001" element="_7SDuAO0AEeaf8aQEde1Z1Q" source="_7SgZ8O0AEeaf8aQEde1Z1Q" target="_7SlSc-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TfRYO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TfRYe0AEeaf8aQEde1Z1Q" x="35"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TfRYu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TfRY-0AEeaf8aQEde1Z1Q" x="-41" y="9"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TfRZO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TfRZe0AEeaf8aQEde1Z1Q" x="41" y="5"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TeqV-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TeqWO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TeqWe0AEeaf8aQEde1Z1Q" points="[-118, -30, 0, -326]$[-145, -30, -27, -326]$[-145, 275, -27, -21]$[-118, 275, 0, -21]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tf4cO0AEeaf8aQEde1Z1Q" id="(1.0,1.069090909090909)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tf4ce0AEeaf8aQEde1Z1Q" id="(0.0,0.7127272727272728)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7Tf4cu0AEeaf8aQEde1Z1Q" type="4001" element="_7SGKQO0AEeaf8aQEde1Z1Q" source="_7SgZ8O0AEeaf8aQEde1Z1Q" target="_7So80-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7Tf4du0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tf4d-0AEeaf8aQEde1Z1Q" x="-40" y="19"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TgfgO0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tgfge0AEeaf8aQEde1Z1Q" x="15" y="14"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7Tgfgu0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tgfg-0AEeaf8aQEde1Z1Q" x="-16" y="-13"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7Tf4c-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7Tf4dO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Tf4de0AEeaf8aQEde1Z1Q" points="[0, -51, -135, 3]$[135, -51, 0, 3]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TgfhO0AEeaf8aQEde1Z1Q" id="(1.0,1.4254545454545455)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tgfhe0AEeaf8aQEde1Z1Q" id="(0.0,0.19999995194082185)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7Tgfhu0AEeaf8aQEde1Z1Q" type="4001" element="_7SHYY-0AEeaf8aQEde1Z1Q" source="_7SgZ8O0AEeaf8aQEde1Z1Q" target="_7SkEUO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7ThGkO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ThGke0AEeaf8aQEde1Z1Q" x="34"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7ThGku0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ThGk-0AEeaf8aQEde1Z1Q" x="7" y="38"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7ThGlO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ThGle0AEeaf8aQEde1Z1Q" x="-2" y="46"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7Tgfh-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TgfiO0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Tgfie0AEeaf8aQEde1Z1Q" points="[-52, 36, 63, -151]$[-52, 138, 63, -49]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ThtoO0AEeaf8aQEde1Z1Q" id="(1.0,0.3563636363636364)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Thtoe0AEeaf8aQEde1Z1Q" id="(0.0,0.8909090909090909)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7TiUsO0AEeaf8aQEde1Z1Q" type="4001" element="_7SJNkO0AEeaf8aQEde1Z1Q" source="_7SiPIO0AEeaf8aQEde1Z1Q" target="_7SnHpO0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7Tji0O0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tji0e0AEeaf8aQEde1Z1Q" x="6"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TkJ4O0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TkJ4e0AEeaf8aQEde1Z1Q" x="-2" y="-41"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TkJ4u0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TkJ4-0AEeaf8aQEde1Z1Q" x="2" y="-59"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7TiUse0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7TiUsu0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TiUs-0AEeaf8aQEde1Z1Q" points="[-87, -1, 48, -130]$[-87, 97, 48, -32]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tkw8O0AEeaf8aQEde1Z1Q" id="(1.0,1.0208336448669433)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tkw8e0AEeaf8aQEde1Z1Q" id="(0.0,0.5939395751953125)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_7Tkw8u0AEeaf8aQEde1Z1Q" type="4001" element="_7SLCwO0AEeaf8aQEde1Z1Q" source="_7Smgku0AEeaf8aQEde1Z1Q" target="_7So80-0AEeaf8aQEde1Z1Q">
+          <children xmi:type="notation:Node" xmi:id="_7TlYAO0AEeaf8aQEde1Z1Q" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TlYAe0AEeaf8aQEde1Z1Q" x="-25"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7TlYAu0AEeaf8aQEde1Z1Q" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TlYA-0AEeaf8aQEde1Z1Q" x="-34" y="-42"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_7Tl_EO0AEeaf8aQEde1Z1Q" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Tl_Ee0AEeaf8aQEde1Z1Q" x="6" y="13"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_7Tkw8-0AEeaf8aQEde1Z1Q" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_7Tkw9O0AEeaf8aQEde1Z1Q" fontName=".SF NS Text" fontHeight="8" bold="true"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Tkw9e0AEeaf8aQEde1Z1Q" points="[-75, -19, 267, 215]$[-75, -271, 267, -37]$[-133, -271, 209, -37]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tl_Eu0AEeaf8aQEde1Z1Q" id="(1.0,0.3563636363636364)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Tl_E-0AEeaf8aQEde1Z1Q" id="(0.0,0.8000000480591781)"/>
+        </edges>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7PdF8O0AEeaf8aQEde1Z1Q" name="ADElement" tooltipText="" incomingEdges="_7R0dcO0AEeaf8aQEde1Z1Q _7R7LIO0AEeaf8aQEde1Z1Q _7R8ZQO0AEeaf8aQEde1Z1Q _7R9nYO0AEeaf8aQEde1Z1Q _7R-1gO0AEeaf8aQEde1Z1Q _7SAqsO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ADElement"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ADElement"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7Plo0O0AEeaf8aQEde1Z1Q" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QZhIO0AEeaf8aQEde1Z1Q" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7QgO0O0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" description="_7Qb9YO0AEeaf8aQEde1Z1Q">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Qg14O0AEeaf8aQEde1Z1Q" name="desciption : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/desciption"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/desciption"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Qhc8O0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QiEAO0AEeaf8aQEde1Z1Q" name="/qualifiedName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/qualifiedName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ADElement/qualifiedName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7QjSIO0AEeaf8aQEde1Z1Q" labelColor="39,76,114" labelAlignment="LEFT" description="_7QirEO0AEeaf8aQEde1Z1Q"/>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7Pp6QO0AEeaf8aQEde1Z1Q" name="ArchitectureDomain" tooltipText="" outgoingEdges="_7R0dcO0AEeaf8aQEde1Z1Q _7SDuAO0AEeaf8aQEde1Z1Q _7SGKQO0AEeaf8aQEde1Z1Q _7SHYY-0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDomain"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDomain"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7PrIYO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7Ps9kO0AEeaf8aQEde1Z1Q" name="ArchitectureDescriptionLanguage" tooltipText="" outgoingEdges="_7R5V8O0AEeaf8aQEde1Z1Q _7SJNkO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionLanguage"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionLanguage"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7PuLsO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QkgQO0AEeaf8aQEde1Z1Q" name=" metamodel : EPackage" tooltipText="">
+        <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/metamodel"/>
+        <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/metamodel"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7QscEO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" description="_7Qr1AO0AEeaf8aQEde1Z1Q" color="114,159,207">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QtDIO0AEeaf8aQEde1Z1Q" name=" profiles : EPackage" tooltipText="">
+        <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/profiles"/>
+        <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/profiles"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7QtqMO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" color="114,159,207">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7PvZ0O0AEeaf8aQEde1Z1Q" name="Stakeholder" tooltipText="" outgoingEdges="_7REPgO0AEeaf8aQEde1Z1Q _7R7LIO0AEeaf8aQEde1Z1Q" incomingEdges="_7SHYY-0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//Stakeholder"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//Stakeholder"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7PwA4O0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7PxPAO0AEeaf8aQEde1Z1Q" name="Concern" tooltipText="" outgoingEdges="_7R8ZQO0AEeaf8aQEde1Z1Q" incomingEdges="_7REPgO0AEeaf8aQEde1Z1Q _7Rvk8O0AEeaf8aQEde1Z1Q _7RyBM-0AEeaf8aQEde1Z1Q _7SDuAO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//Concern"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//Concern"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7Px2EO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7PzEMO0AEeaf8aQEde1Z1Q" name="ArchitectureViewpoint" tooltipText="" outgoingEdges="_7Rvk8O0AEeaf8aQEde1Z1Q _7RxaIO0AEeaf8aQEde1Z1Q _7R9nYO0AEeaf8aQEde1Z1Q _7SLCwO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureViewpoint"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureViewpoint"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7P0SUO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Qu4UO0AEeaf8aQEde1Z1Q" name="id : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureViewpoint/id"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureViewpoint/id"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7QwGcO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" description="_7Qb9YO0AEeaf8aQEde1Z1Q">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7P1gcO0AEeaf8aQEde1Z1Q" name="RepresentationKind" tooltipText="" outgoingEdges="_7RyBM-0AEeaf8aQEde1Z1Q _7R-1gO0AEeaf8aQEde1Z1Q" incomingEdges="_7RxaIO0AEeaf8aQEde1Z1Q _7SJNkO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//RepresentationKind"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//RepresentationKind"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7P5K0O0AEeaf8aQEde1Z1Q" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QxUkO0AEeaf8aQEde1Z1Q" name="icon : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//RepresentationKind/icon"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//RepresentationKind/icon"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Qx7oO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7P5x4O0AEeaf8aQEde1Z1Q" name="ArchitectureContext" tooltipText="" outgoingEdges="_7SAqsO0AEeaf8aQEde1Z1Q" incomingEdges="_7R5V8O0AEeaf8aQEde1Z1Q _7SB40O0AEeaf8aQEde1Z1Q _7SGKQO0AEeaf8aQEde1Z1Q _7SLCwO0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureContext"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureContext"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7P7AAO0AEeaf8aQEde1Z1Q" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7QyisO0AEeaf8aQEde1Z1Q" name="id : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/id"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/id"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Qzw0O0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" description="_7Qb9YO0AEeaf8aQEde1Z1Q">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q0X4O0AEeaf8aQEde1Z1Q" name="icon : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/icon"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/icon"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q0-8O0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q0-8e0AEeaf8aQEde1Z1Q" name="extensionPrefix : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/extensionPrefix"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/extensionPrefix"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q1mAO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q2NEO0AEeaf8aQEde1Z1Q" name="creationCommandClass : EJavaClass" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/creationCommandClass"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/creationCommandClass"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q20IO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" description="_7Qb9YO0AEeaf8aQEde1Z1Q">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q3bMO0AEeaf8aQEde1Z1Q" name="conversionCommandClass : EJavaClass" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/conversionCommandClass"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureContext/conversionCommandClass"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q4CQO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q4pUO0AEeaf8aQEde1Z1Q" name=" elementTypes : ElementTypeSetConfiguration" tooltipText="">
+        <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/elementTypes"/>
+        <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/elementTypes"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q5QYO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT" color="114,159,207">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7P7nEO0AEeaf8aQEde1Z1Q" name="ArchitectureFramework" tooltipText="" outgoingEdges="_7SB40O0AEeaf8aQEde1Z1Q" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureFramework"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureFramework"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7P81MO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7P9cQO0AEeaf8aQEde1Z1Q" name="ArchitectureDescription" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescription"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescription"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7P-qYO0AEeaf8aQEde1Z1Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q53cO0AEeaf8aQEde1Z1Q" name="contextId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureDescription/contextId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureDescription/contextId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q6egO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7REPgO0AEeaf8aQEde1Z1Q" name="[0..*] concerns" sourceNode="_7PvZ0O0AEeaf8aQEde1Z1Q" targetNode="_7PxPAO0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//Stakeholder/concerns"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//Stakeholder/concerns"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7RuW0O0AEeaf8aQEde1Z1Q" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7RuW0e0AEeaf8aQEde1Z1Q" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7RuW0u0AEeaf8aQEde1Z1Q" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7Rvk8O0AEeaf8aQEde1Z1Q" name="[0..*] concerns" sourceNode="_7PzEMO0AEeaf8aQEde1Z1Q" targetNode="_7PxPAO0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/concerns"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/concerns"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7RwzEO0AEeaf8aQEde1Z1Q" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7RwzEe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7RwzEu0AEeaf8aQEde1Z1Q" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7RxaIO0AEeaf8aQEde1Z1Q" name="[0..*] representationKinds" sourceNode="_7PzEMO0AEeaf8aQEde1Z1Q" targetNode="_7P1gcO0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/representationKinds"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/representationKinds"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7RyBMO0AEeaf8aQEde1Z1Q" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7RyBMe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7RyBMu0AEeaf8aQEde1Z1Q" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7RyBM-0AEeaf8aQEde1Z1Q" name="[0..*] concerns" sourceNode="_7P1gcO0AEeaf8aQEde1Z1Q" targetNode="_7PxPAO0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//RepresentationKind/concerns"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//RepresentationKind/concerns"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7RyoQO0AEeaf8aQEde1Z1Q" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7RyoQe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7RyoQu0AEeaf8aQEde1Z1Q" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R0dcO0AEeaf8aQEde1Z1Q" sourceNode="_7Pp6QO0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDomain"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//ArchitectureDomain/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7R4u4O0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7R4u4e0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7R4u4u0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R5V8O0AEeaf8aQEde1Z1Q" sourceNode="_7Ps9kO0AEeaf8aQEde1Z1Q" targetNode="_7P5x4O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionLanguage"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//ArchitectureDescriptionLanguage/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7R6kEO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7R6kEe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7R6kEu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R7LIO0AEeaf8aQEde1Z1Q" sourceNode="_7PvZ0O0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//Stakeholder"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//Stakeholder/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7R7yMO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7R7yMe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7R7yMu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R8ZQO0AEeaf8aQEde1Z1Q" sourceNode="_7PxPAO0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//Concern"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//Concern/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7R9AUO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7R9AUe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7R9AUu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R9nYO0AEeaf8aQEde1Z1Q" sourceNode="_7PzEMO0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureViewpoint"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//ArchitectureViewpoint/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7R-OcO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7R-Oce0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7R-Ocu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7R-1gO0AEeaf8aQEde1Z1Q" sourceNode="_7P1gcO0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//RepresentationKind"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//RepresentationKind/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SADoO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SADoe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7SADou0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SAqsO0AEeaf8aQEde1Z1Q" sourceNode="_7P5x4O0AEeaf8aQEde1Z1Q" targetNode="_7PdF8O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureContext"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//ArchitectureContext/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SBRwO0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SBRwe0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7SBRwu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SB40O0AEeaf8aQEde1Z1Q" sourceNode="_7P7nEO0AEeaf8aQEde1Z1Q" targetNode="_7P5x4O0AEeaf8aQEde1Z1Q">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureFramework"/>
+      <semanticElements xmi:type="ecore:EGenericType" href="Architecture.ecore#//ArchitectureFramework/@eGenericSuperTypes.0"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SCf4O0AEeaf8aQEde1Z1Q" targetArrow="InputClosedArrow" routingStyle="manhattan">
+        <customFeatures>routingStyle</customFeatures>
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SCf4e0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7SCf4u0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SDuAO0AEeaf8aQEde1Z1Q" sourceNode="_7Pp6QO0AEeaf8aQEde1Z1Q" targetNode="_7PxPAO0AEeaf8aQEde1Z1Q" beginLabel="[1..1] domain" endLabel="[0..*] concerns">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/concerns"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/concerns"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//Concern/domain"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SFjM-0AEeaf8aQEde1Z1Q" description="_7SFjMO0AEeaf8aQEde1Z1Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SFjNO0AEeaf8aQEde1Z1Q" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7SFjNe0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SGKQO0AEeaf8aQEde1Z1Q" sourceNode="_7Pp6QO0AEeaf8aQEde1Z1Q" targetNode="_7P5x4O0AEeaf8aQEde1Z1Q" beginLabel="[1..1] domain" endLabel="[0..*] contexts">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/contexts"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/contexts"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/domain"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SHYYO0AEeaf8aQEde1Z1Q" description="_7SFjMO0AEeaf8aQEde1Z1Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SHYYe0AEeaf8aQEde1Z1Q" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7SHYYu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SHYY-0AEeaf8aQEde1Z1Q" sourceNode="_7Pp6QO0AEeaf8aQEde1Z1Q" targetNode="_7PvZ0O0AEeaf8aQEde1Z1Q" beginLabel="[1..1] domain" endLabel="[0..*] stakeholders">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/stakeholders"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//Stakeholder/domain"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/stakeholders"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SImgO0AEeaf8aQEde1Z1Q" description="_7SFjMO0AEeaf8aQEde1Z1Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SImge0AEeaf8aQEde1Z1Q" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7SImgu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SJNkO0AEeaf8aQEde1Z1Q" sourceNode="_7Ps9kO0AEeaf8aQEde1Z1Q" targetNode="_7P1gcO0AEeaf8aQEde1Z1Q" beginLabel="[1..1] language" endLabel="[0..*] representationKinds">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/representationKinds"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//RepresentationKind/language"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/representationKinds"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SKbsO0AEeaf8aQEde1Z1Q" description="_7SFjMO0AEeaf8aQEde1Z1Q" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SKbse0AEeaf8aQEde1Z1Q" showIcon="false"/>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7SKbsu0AEeaf8aQEde1Z1Q" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7SLCwO0AEeaf8aQEde1Z1Q" sourceNode="_7PzEMO0AEeaf8aQEde1Z1Q" targetNode="_7P5x4O0AEeaf8aQEde1Z1Q" beginLabel="[0..*] viewpoints" endLabel="[1..1] context">
+      <target xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/context"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/context"/>
+      <semanticElements xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/viewpoints"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7SMQ4-0AEeaf8aQEde1Z1Q" description="_7SMQ4O0AEeaf8aQEde1Z1Q" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_7SM38O0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </beginLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7SM38e0AEeaf8aQEde1Z1Q" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_amJL4PaMEeazb43LOF1y5w" name="ArchitectureDescriptionPreferences" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionPreferences"/>
+      <semanticElements xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionPreferences"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_amKaAPaMEeazb43LOF1y5w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_7Q7FkO0AEeaf8aQEde1Z1Q" name="viewpointIds : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureDescriptionPreferences/viewpointIds"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="Architecture.ecore#//ArchitectureDescriptionPreferences/viewpointIds"/>
+        <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_7Q7soO0AEeaf8aQEde1Z1Q" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+    <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_5z_0le0AEeaf8aQEde1Z1Q"/>
+    <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+    <target xmi:type="ecore:EPackage" href="Architecture.ecore#/"/>
+  </diagram:DSemanticDiagram>
+</xmi:XMI>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore
new file mode 100644
index 0000000..a0a5bfd
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="architecture" nsURI="http://www.eclipse.org/papyrus/infra/core/architecture"
+    nsPrefix="architecture">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="An architecture context is a method for customizing Papyrus for a given domain. It defines a regime for editing a Papyrus model semantically and notationally. The semantic editing is defined by a set of element type set configurations (from some domain), while the notational side is defined by a set of viewpoints consisting of a set of representation kinds (e.g., diagram kinds and table kinds) and other notational configurations...."/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="ADElement" abstract="true">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="The superclass of all architecture elements"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The unique id of the element"/>
+        <details key="propertyDescription" value="The unique id of the element"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The name of the element"/>
+        <details key="propertyDescription" value="The name of the element"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The description of the element"/>
+        <details key="propertyDescription" value="The description of the element"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        changeable="false" volatile="true" transient="true" derived="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The qualified name of the element"/>
+        <details key="propertyDescription" value="The qualified name of the element"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="icon" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The icon of the element specified using a platform plugin URI"/>
+        <details key="propertyDescription" value="The icon of the element specified using a platform plugin URI"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureDomain" eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A domain is the root of the architecture model. It can contains a collection of concerns, stakeholders, as well as contexts (which can be description languages and/or frameworks)."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="stakeholders" upperBound="-1"
+        eType="#//Stakeholder" containment="true" eOpposite="#//Stakeholder/domain">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of stakeholders defined by the domain"/>
+        <details key="propertyDescription" value="The set of stakeholders defined by the domain"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="concerns" upperBound="-1"
+        eType="#//Concern" containment="true" eOpposite="#//Concern/domain">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of concerns defined by the domain"/>
+        <details key="propertyDescription" value="The set of concerns defined by the domain"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contexts" upperBound="-1"
+        eType="#//ArchitectureContext" containment="true" eOpposite="#//ArchitectureContext/domain">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of contexts defined by the domain"/>
+        <details key="propertyDescription" value="The set of contexts defined by the domain"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureDescriptionLanguage" eSuperTypes="#//ArchitectureContext">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A description language (from ISO 42010) represents in Papyrus a modeling language (e.g., UML, SysML). It has a unique id' that corresponds to that of an ''IClientContext from GMF. It references a metamodel, a set of profiles, a set of element type set configurations, a creation command (creates a model of this language), a conversion command (converts a model to this language), and and icon. It also has an optional extension prefix for its models. It can also contain a set of representation kinds (which can be either diagrams or tables) and a set of viewpoints."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="representationKinds" upperBound="-1"
+        eType="#//RepresentationKind" containment="true" eOpposite="#//RepresentationKind/language">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of representation kinds defined by the language"/>
+        <details key="propertyDescription" value="The set of representation kinds defined by the language"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" lowerBound="1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The metamodel used by the language"/>
+        <details key="propertyDescription" value="The metamodel used by the language"/>
+        <details key="propertyCategory" value="Description Language"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="profiles" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of UML profiles used by the language"/>
+        <details key="propertyDescription" value="The set of UML profiles used by the language"/>
+        <details key="propertyCategory" value="Description Language"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Stakeholder" eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A stakeholder (from ISO 42010) represents in Papyrus an archetype of users. It references a set of its concerns."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="concerns" upperBound="-1"
+        eType="#//Concern">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of concerns of the stakeholder"/>
+        <details key="propertyDescription" value="The set of concerns of the stakeholder"/>
+        <details key="propertyCategory" value="Stakeholder"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="domain" lowerBound="1"
+        eType="#//ArchitectureDomain" eOpposite="#//ArchitectureDomain/stakeholders">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The domain that defines the stakeholder"/>
+        <details key="propertyDescription" value="The domain that defines the stakeholder"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Concern" eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A concern (from ISO 42010) represents in Papyrus a matter of interest to some stakeholder."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="domain" lowerBound="1"
+        eType="#//ArchitectureDomain" eOpposite="#//ArchitectureDomain/concerns">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The domain that defines the concern"/>
+        <details key="propertyDescription" value="The domain that defines the concern"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureViewpoint" eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A viewpoint (from ISO 42010) in Papyrus references set of representation kinds, which can be diagrams or tables."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="concerns" upperBound="-1"
+        eType="#//Concern">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of concerns covered by the viewpoint"/>
+        <details key="propertyDescription" value="The set of concerns covered by the viewpoint"/>
+        <details key="propertyCategory" value="Viewpoint"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="representationKinds" upperBound="-1"
+        eType="#//RepresentationKind">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of representation kinds provided by the viewpoint"/>
+        <details key="propertyDescription" value="The set of representation kinds provided by the viewpoint"/>
+        <details key="propertyCategory" value="Viewpoint"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" lowerBound="1"
+        eType="#//ArchitectureContext" eOpposite="#//ArchitectureContext/viewpoints">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The context that defines the viewpoint"/>
+        <details key="propertyDescription" value="The context that defines the viewpoint"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RepresentationKind" abstract="true"
+      eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="The kind of representations defined by architectural contexts and that depict some information from a model"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="language" lowerBound="1"
+        eType="#//ArchitectureDescriptionLanguage" eOpposite="#//ArchitectureDescriptionLanguage/representationKinds">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The language that defines the representation kind"/>
+        <details key="propertyDescription" value="The language that defines the representation kind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="concerns" upperBound="-1"
+        eType="#//Concern">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of concerns covered by the representation kind"/>
+        <details key="propertyDescription" value="The set of concerns covered by the representation kind"/>
+        <details key="propertyCategory" value="Representation Kind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="grayedIcon" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The icon of the element specified using a platform plugin URI"/>
+        <details key="propertyDescription" value="The icon of the element specified using a platform plugin URI"/>
+        <details key="propertyCategory" value="Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureContext" abstract="true"
+      eSuperTypes="#//ADElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="The superclass of architectural description languages or architecture frameworks. It defines a collection of viewpoints on models."/>
+    </eAnnotations>
+    <eOperations name="ceationCommandClassExists" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eOperations name="conversionCommandClassExists" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="diagnostics" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain"/>
+      <eParameters name="context" unique="false">
+        <eGenericType eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="viewpoints" upperBound="-1"
+        eType="#//ArchitectureViewpoint" containment="true" eOpposite="#//ArchitectureViewpoint/context">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of viewpoints defined by the context"/>
+        <details key="propertyDescription" value="The set of viewpoints defined by the context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="defaultViewpoints" upperBound="-1"
+        eType="#//ArchitectureViewpoint">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of viewpoints that are selected for the context by default"/>
+        <details key="propertyDescription" value="The set of viewpoints that are selected for the context by default"/>
+        <details key="propertyCategory" value="Context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="elementTypes" upperBound="-1"
+        eType="ecore:EClass ../../org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.ecore#//ElementTypeSetConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of element type set configurations that are used by the context (typically found in .elementtypesconfigurations resources)"/>
+        <details key="propertyDescription" value="The set of element type set configurations that are used by the context (typically found in .elementtypesconfigurations resources)"/>
+        <details key="propertyCategory" value="Context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="domain" lowerBound="1"
+        eType="#//ArchitectureDomain" eOpposite="#//ArchitectureDomain/contexts">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The domain that defines the context"/>
+        <details key="propertyDescription" value="The domain that defines the context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="extensionPrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The prefix of the file extension of the UML models applying this context (e.g., &lt;Name>.&lt;prefixExtension>.uml)"/>
+        <details key="propertyDescription" value="The prefix of the file extension of the UML models applying this context (e.g., &lt;Name>.&lt;prefixExtension>.uml)"/>
+        <details key="propertyCategory" value="Context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationCommandClass" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The fully qualified name of a command that creates models applying this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand inteface"/>
+        <details key="propertyDescription" value="The fully qualified name of a command that creates models applying this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand inteface"/>
+        <details key="propertyCategory" value="Context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="conversionCommandClass"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The fully qualified name of a command that refactors models that switched to this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand inteface"/>
+        <details key="propertyDescription" value="The fully qualified name of a command that refactors models that switched to this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand inteface"/>
+        <details key="propertyCategory" value="Context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureFramework" eSuperTypes="#//ArchitectureContext">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A framework (from ISO 42010) represents in Papyrus a modeling framework (e.g., DoDAF). It has a unique id' that corresponds to that of an ''IClientContext from GMF. It references a set of element type set configurations, a creation command (creates a model of this framework), a conversion command (converts a model to this framework), and an icon. It also has an optional extension prefix for its models. It can also contain a set of viewpoints."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureDescription">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An element that is added to a DI model to record the id of the architecture context applied to a model set"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contextId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The id of the context applied to a UML model"/>
+        <details key="propertyDescription" value="The id of the context applied to a UML model"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArchitectureDescriptionPreferences">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An element that is added to a DI model to record the architecture preferences used by a model set"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpointIds" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The set of ids of viewpoints enabled on a UML model"/>
+        <details key="propertyDescription" value="The set of ids of viewpoints enabled on a UML model"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore_diagram b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore_diagram
new file mode 100644
index 0000000..fca39ee
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.ecore_diagram
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_jPuUwLeqEearJ4erliAKEg" type="Ecore" measurementUnit="Pixel">
+  <children xmi:type="notation:Shape" xmi:id="_jpWVsLeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jph74LeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpnbcLeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpnbcbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpnbcreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpoCgLeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpoCgbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpoCgreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpoCg7eqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpoChLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpoChbeqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ADElement"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpWVsbeqEearJ4erliAKEg" x="234" y="63"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpopkLeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpopkreqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jppQoLeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jppQobeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jppQoreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jppQo7eqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jppQpLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jppQpbeqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jppQpreqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jppQp7eqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jppQqLeqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDomain"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpopkbeqEearJ4erliAKEg" x="99" y="198"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpqewLeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jprF0LeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jprF0beqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jprF0reqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jprF07eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jprF1LeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jprF1beqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jprF1reqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jprs4LeqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jprs4beqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jprs4reqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionLanguage"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpqewbeqEearJ4erliAKEg" x="270" y="378"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jprs47eqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpsT8LeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpsT8beqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpsT8reqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpsT87eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpsT9LeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpsT9beqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpsT9reqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpsT97eqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpsT-LeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpsT-beqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//Stakeholder"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jprs5LeqEearJ4erliAKEg" x="54" y="324" width="109"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jps7ALeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jps7AreqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jps7A7eqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jps7BLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jps7BbeqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jps7BreqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jps7B7eqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jps7CLeqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jps7CbeqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jps7CreqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jps7C7eqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//Concern"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jps7AbeqEearJ4erliAKEg" x="99" y="486" width="109"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jptiELeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpuJILeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpuJIbeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpuJIreqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpuJI7eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpuJJLeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpuJJbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpuJJreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpuwMLeqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpuwMbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpuwMreqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureViewpoint"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jptiEbeqEearJ4erliAKEg" x="513" y="486" width="172"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpvXQLeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpvXQreqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpvXQ7eqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpvXRLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpvXRbeqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpv-ULeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpv-UbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpv-UreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpv-U7eqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpv-VLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpv-VbeqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//RepresentationKind"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpvXQbeqEearJ4erliAKEg" x="297" y="486"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpv-VreqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpwlYLeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpwlYbeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpwlYreqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpwlY7eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpwlZLeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpwlZbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpwlZreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpxMcLeqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpxMcbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpxMcreqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureContext"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpv-V7eqEearJ4erliAKEg" x="351" y="171"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpxMc7eqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpxzgLeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpxzgbeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpxzgreqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpxzg7eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpxzhLeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpxzhbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpxzhreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpxzh7eqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpxziLeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpxzibeqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureFramework"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpxMdLeqEearJ4erliAKEg" x="450" y="378"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_jpyakLeqEearJ4erliAKEg" type="2001" fontName="Lucida Grande">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jpzBoLeqEearJ4erliAKEg" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpzBobeqEearJ4erliAKEg" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpzBoreqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpzBo7eqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpzBpLeqEearJ4erliAKEg" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpzBpbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpzBpreqEearJ4erliAKEg"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_jpzosLeqEearJ4erliAKEg" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_jpzosbeqEearJ4erliAKEg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_jpzosreqEearJ4erliAKEg"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescription"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jpyakbeqEearJ4erliAKEg" x="414" y="36"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_UOZmMAP_EeeD5ZWpL2ysEA" type="2001" fontName=".SF NS Text">
+    <children xmi:type="notation:DecorationNode" xmi:id="_UOa0UAP_EeeD5ZWpL2ysEA" type="5001"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_UOa0UQP_EeeD5ZWpL2ysEA" type="7001">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_UOa0UgP_EeeD5ZWpL2ysEA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_UOa0UwP_EeeD5ZWpL2ysEA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_UOa0VAP_EeeD5ZWpL2ysEA" type="7002">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_UOa0VQP_EeeD5ZWpL2ysEA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_UOa0VgP_EeeD5ZWpL2ysEA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_UObbYAP_EeeD5ZWpL2ysEA" type="7003">
+      <styles xmi:type="notation:SortingStyle" xmi:id="_UObbYQP_EeeD5ZWpL2ysEA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_UObbYgP_EeeD5ZWpL2ysEA"/>
+    </children>
+    <element xmi:type="ecore:EClass" href="Architecture.ecore#//ArchitectureDescriptionPreferences"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UOZmMQP_EeeD5ZWpL2ysEA" x="-5" y="20"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_jPuUwbeqEearJ4erliAKEg"/>
+  <element xmi:type="ecore:EPackage" href="Architecture.ecore#/"/>
+  <edges xmi:type="notation:Connector" xmi:id="_jvgBALeqEearJ4erliAKEg" type="4003" source="_jpopkLeqEearJ4erliAKEg" target="_jprs47eqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jvgoELeqEearJ4erliAKEg" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jvgoEbeqEearJ4erliAKEg" x="24" y="34"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jvgoEreqEearJ4erliAKEg" type="6004">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jvgoE7eqEearJ4erliAKEg" x="-2" y="-18"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jvgBAbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/stakeholders"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jvgBAreqEearJ4erliAKEg" points="[-8, 0, 37, -74]$[-8, 74, 37, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B0LeqEearJ4erliAKEg" id="(0.4953271028037383,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B0beqEearJ4erliAKEg" id="(0.49295774647887325,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jv_wQLeqEearJ4erliAKEg" type="4003" source="_jpopkLeqEearJ4erliAKEg" target="_jps7ALeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwAXULeqEearJ4erliAKEg" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwAXUbeqEearJ4erliAKEg" x="96" y="-29"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwAXUreqEearJ4erliAKEg" type="6004">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwAXU7eqEearJ4erliAKEg" x="13" y="10"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jv_wQbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/concerns"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jv_wQreqEearJ4erliAKEg" points="[19, 0, 52, -200]$[19, 200, 52, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B1LeqEearJ4erliAKEg" id="(0.6635514018691588,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B1beqEearJ4erliAKEg" id="(0.35714285714285715,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwEBsLeqEearJ4erliAKEg" type="4003" source="_jpopkLeqEearJ4erliAKEg" target="_jpv-VreqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwEowLeqEearJ4erliAKEg" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwEowbeqEearJ4erliAKEg" x="46" y="14"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwEowreqEearJ4erliAKEg" type="6004">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwEow7eqEearJ4erliAKEg" x="-6" y="-13"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwEBsbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDomain/contexts"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwEBsreqEearJ4erliAKEg" points="[18, -34, -193, 45]$[163, -34, -48, 45]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzztbeqEearJ4erliAKEg" id="(0.8317757009345794,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy0awLeqEearJ4erliAKEg" id="(0.24299065420560748,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwITILeqEearJ4erliAKEg" type="4004" source="_jpopkLeqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwITIbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwITIreqEearJ4erliAKEg" points="[19, -52, -106, 135]$[19, -106, -106, 81]$[109, -106, -16, 81]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B0reqEearJ4erliAKEg" id="(0.24299065420560748,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1B07eqEearJ4erliAKEg" id="(0.12121212121212122,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwMkkLeqEearJ4erliAKEg" type="4003" source="_jpqewLeqEearJ4erliAKEg" target="_jpvXQLeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwMkk7eqEearJ4erliAKEg" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwMklLeqEearJ4erliAKEg" x="15" y="46"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwMklbeqEearJ4erliAKEg" type="6004">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwMklreqEearJ4erliAKEg" x="-5" y="-17"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwMkkbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureDescriptionLanguage/representationKinds"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwMkkreqEearJ4erliAKEg" points="[69, 0, -24, -56]$[69, 56, -24, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o4LeqEearJ4erliAKEg" id="(0.07272727272727272,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o4beqEearJ4erliAKEg" id="(0.7428571428571429,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwPn4LeqEearJ4erliAKEg" type="4004" source="_jpqewLeqEearJ4erliAKEg" target="_jpv-VreqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwPn4beqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwPn4reqEearJ4erliAKEg" points="[104, -52, -119, 180]$[104, -109, -119, 123]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzMpLeqEearJ4erliAKEg" id="(0.03636363636363636,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzzsLeqEearJ4erliAKEg" id="(0.7476635514018691,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwRdELeqEearJ4erliAKEg" type="4002" source="_jprs47eqEearJ4erliAKEg" target="_jps7ALeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwRdE7eqEearJ4erliAKEg" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwRdFLeqEearJ4erliAKEg" x="33" y="26"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwRdFbeqEearJ4erliAKEg" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwRdFreqEearJ4erliAKEg" x="-6" y="-16"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwRdEbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//Stakeholder/concerns"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwRdEreqEearJ4erliAKEg" points="[-29, 0, -5, -47]$[-29, 47, -5, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzMoLeqEearJ4erliAKEg" id="(0.6619718309859155,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzMobeqEearJ4erliAKEg" id="(0.17857142857142858,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwYKwLeqEearJ4erliAKEg" type="4004" source="_jprs47eqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwYKwbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwYKwreqEearJ4erliAKEg" points="[-23, -52, -201, 261]$[-23, -250, -201, 63]$[145, -250, -33, 63]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o4reqEearJ4erliAKEg" id="(0.323943661971831,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o47eqEearJ4erliAKEg" id="(0.25,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwanALeqEearJ4erliAKEg" type="4004" source="_jps7ALeqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwanAbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwanAreqEearJ4erliAKEg" points="[-54, -40, -184, 435]$[-117, -40, -247, 435]$[-117, -430, -247, 45]$[81, -430, -49, 45]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzzs7eqEearJ4erliAKEg" id="(0.5,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzztLeqEearJ4erliAKEg" id="(0.3712121212121212,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwccMLeqEearJ4erliAKEg" type="4002" source="_jptiELeqEearJ4erliAKEg" target="_jps7ALeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwccM7eqEearJ4erliAKEg" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwccNLeqEearJ4erliAKEg" x="183" y="17"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwccNbeqEearJ4erliAKEg" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwccNreqEearJ4erliAKEg" x="60" y="17"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwccMbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/concerns"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwccMreqEearJ4erliAKEg" points="[23, 0, 439, 52]$[23, 29, 439, 81]$[-418, 29, -2, 81]$[-418, 0, -2, 52]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P8LeqEearJ4erliAKEg" id="(0.2672413793103448,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P8beqEearJ4erliAKEg" id="(0.5178571428571429,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwgGkLeqEearJ4erliAKEg" type="4002" source="_jptiELeqEearJ4erliAKEg" target="_jpvXQLeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwgGk7eqEearJ4erliAKEg" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwgGlLeqEearJ4erliAKEg" x="5" y="-8"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwgGlbeqEearJ4erliAKEg" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwgGlreqEearJ4erliAKEg" x="1" y="13"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwgGkbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureViewpoint/representationKinds"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwgGkreqEearJ4erliAKEg" points="[-93, -25, 164, 27]$[-204, -25, 53, 27]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy0awbeqEearJ4erliAKEg" id="(0.5431034482758621,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy0awreqEearJ4erliAKEg" id="(0.49523809523809526,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwkYALeqEearJ4erliAKEg" type="4004" source="_jptiELeqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwkYAbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwkYAreqEearJ4erliAKEg" points="[31, -52, 353, 423]$[31, -412, 353, 63]$[-278, -412, 44, 63]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o5LeqEearJ4erliAKEg" id="(0.7672413793103449,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy1o5beqEearJ4erliAKEg" id="(0.6666666666666666,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwm0QLeqEearJ4erliAKEg" type="4002" source="_jpvXQLeqEearJ4erliAKEg" target="_jps7ALeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwm0Q7eqEearJ4erliAKEg" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwm0RLeqEearJ4erliAKEg" x="16" y="-14"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwm0RbeqEearJ4erliAKEg" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwm0RreqEearJ4erliAKEg" x="-6" y="13"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwm0QbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//RepresentationKind/concerns"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwm0QreqEearJ4erliAKEg" points="[-26, -25, 115, 27]$[-115, -25, 26, 27]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzMoreqEearJ4erliAKEg" id="(0.24761904761904763,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzMo7eqEearJ4erliAKEg" id="(0.7678571428571429,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwrswLeqEearJ4erliAKEg" type="4004" source="_jpvXQLeqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwrswbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwrswreqEearJ4erliAKEg" points="[29, 0, 78, 475]$[29, 41, 78, 516]$[344, 41, 393, 516]$[344, -430, 393, 45]$[17, -430, 66, 45]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P8reqEearJ4erliAKEg" id="(0.49523809523809526,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P87eqEearJ4erliAKEg" id="(0.5,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwuwELeqEearJ4erliAKEg" type="4003" source="_jpv-VreqEearJ4erliAKEg" target="_jptiELeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwuwE7eqEearJ4erliAKEg" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwuwFLeqEearJ4erliAKEg" x="171" y="31"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_jwuwFbeqEearJ4erliAKEg" type="6004">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_jwuwFreqEearJ4erliAKEg" x="24" y="28"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwuwEbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/viewpoints"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwuwEreqEearJ4erliAKEg" points="[100, -69, -55, -261]$[208, -69, 53, -261]$[208, 192, 53, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyylkLeqEearJ4erliAKEg" id="(0.4953271028037383,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyylkbeqEearJ4erliAKEg" id="(0.5344827586206896,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jwyacLeqEearJ4erliAKEg" type="4004" source="_jpv-VreqEearJ4erliAKEg" target="_jpWVsLeqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jwyacbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwyacreqEearJ4erliAKEg" points="[-33, -91, 122, 108]$[-33, -118, 122, 81]$[-133, -118, 22, 81]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P9LeqEearJ4erliAKEg" id="(0.7476635514018691,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jy2P9beqEearJ4erliAKEg" id="(0.8333333333333334,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_jw02sLeqEearJ4erliAKEg" type="4004" source="_jpxMc7eqEearJ4erliAKEg" target="_jpv-VreqEearJ4erliAKEg" routing="Rectilinear">
+    <styles xmi:type="notation:FontStyle" xmi:id="_jw02sbeqEearJ4erliAKEg" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jw02sreqEearJ4erliAKEg" points="[-32, -52, 64, 180]$[-32, -109, 64, 123]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzzsbeqEearJ4erliAKEg" id="(0.7851239669421488,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jyzzsreqEearJ4erliAKEg" id="(0.4953271028037383,0.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_nPrvwDGnEeeThtX0CLDTfA" type="4002" source="_jpv-VreqEearJ4erliAKEg" target="_jptiELeqEearJ4erliAKEg" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_nPsW0DGnEeeThtX0CLDTfA" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_nPsW0TGnEeeThtX0CLDTfA" x="124" y="46"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_nPsW0jGnEeeThtX0CLDTfA" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_nPsW0zGnEeeThtX0CLDTfA" x="11" y="28"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_nPrvwTGnEeeThtX0CLDTfA" fontName=".SF NS Text"/>
+    <element xmi:type="ecore:EReference" href="Architecture.ecore#//ArchitectureContext/defaultViewpoints"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nPrvwjGnEeeThtX0CLDTfA" points="[22, 3, -41, -263]$[58, 3, -5, -263]$[58, 237, -5, -29]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nPxPUDGnEeeThtX0CLDTfA" id="(0.8888888888888888,0.6341463414634146)"/>
+  </edges>
+</notation:Diagram>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel
new file mode 100644
index 0000000..ef3d448
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.genmodel
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=" Copyright (c) 2017 CEA LIST and others.&#xA;&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License 2.0&#xA; which accompanies this distribution, and is available at&#xA; https://www.eclipse.org/legal/epl-2.0/&#xA;&#xA; SPDX-License-Identifier: EPL-2.0&#xA;&#xA; Contributors:&#xA; Maged Elaasar - Initial API and implementation"
+    modelDirectory="/org.eclipse.papyrus.infra.core.architecture/src-gen" editDirectory="/org.eclipse.papyrus.infra.core.architecture.edit/src-gen"
+    editorDirectory="" modelPluginID="org.eclipse.papyrus.infra.core.architecture"
+    modelName="Architecture" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl"
+    testsDirectory="" importerID="org.eclipse.emf.importer.ecore" featureDelegation="Dynamic"
+    complianceLevel="8.0" copyrightFields="false" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel#//types"
+    operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>Architecture.ecore</foreignModel>
+  <genPackages prefix="Architecture" basePackage="org.eclipse.papyrus.infra.core"
+      disposableProviderFactory="true" extensibleProviderFactory="true" ecorePackage="Architecture.ecore#/">
+    <genClasses image="false" ecoreClass="Architecture.ecore#//ADElement">
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The unique id of the element"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ADElement/id"/>
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The name of the element"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ADElement/name"/>
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The description of the element"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ADElement/description"/>
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The qualified name of the element"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ADElement/qualifiedName"/>
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The icon of the element specified using a platform plugin URI"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ADElement/icon"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureDomain">
+      <genFeatures property="None" children="true" createChild="true" propertyDescription="The set of stakeholders defined by the domain"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDomain/stakeholders"/>
+      <genFeatures property="None" children="true" createChild="true" propertyDescription="The set of concerns defined by the domain"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDomain/concerns"/>
+      <genFeatures property="None" children="true" createChild="true" propertyDescription="The set of contexts defined by the domain"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDomain/contexts"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureDescriptionLanguage">
+      <genFeatures property="None" children="true" createChild="true" propertyDescription="The set of representation kinds defined by the language"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDescriptionLanguage/representationKinds"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Description Language"
+          propertyDescription="The metamodel used by the language" propertySortChoices="true"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDescriptionLanguage/metamodel"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Description Language"
+          propertyDescription="The set of UML profiles used by the language" propertySortChoices="true"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureDescriptionLanguage/profiles"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//Stakeholder">
+      <genFeatures notify="false" createChild="false" propertyCategory="Stakeholder"
+          propertyDescription="The set of concerns of the stakeholder" propertySortChoices="true"
+          ecoreFeature="ecore:EReference Architecture.ecore#//Stakeholder/concerns"/>
+      <genFeatures property="None" notify="false" createChild="false" propertyDescription="The domain that defines the stakeholder"
+          ecoreFeature="ecore:EReference Architecture.ecore#//Stakeholder/domain"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//Concern">
+      <genFeatures property="None" notify="false" createChild="false" propertyDescription="The domain that defines the concern"
+          ecoreFeature="ecore:EReference Architecture.ecore#//Concern/domain"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureViewpoint">
+      <genFeatures notify="false" createChild="false" propertyCategory="Viewpoint"
+          propertyDescription="The set of concerns covered by the viewpoint" propertySortChoices="true"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureViewpoint/concerns"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Viewpoint"
+          propertyDescription="The set of representation kinds provided by the viewpoint"
+          propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureViewpoint/representationKinds"/>
+      <genFeatures property="None" notify="false" createChild="false" propertyDescription="The context that defines the viewpoint"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureViewpoint/context"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="Architecture.ecore#//RepresentationKind">
+      <genFeatures property="None" notify="false" createChild="false" propertyDescription="The language that defines the representation kind"
+          ecoreFeature="ecore:EReference Architecture.ecore#//RepresentationKind/language"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Representation Kind"
+          propertyDescription="The set of concerns covered by the representation kind"
+          propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//RepresentationKind/concerns"/>
+      <genFeatures createChild="false" propertyCategory="Element" propertyDescription="The icon of the element specified using a platform plugin URI"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//RepresentationKind/grayedIcon"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="Architecture.ecore#//ArchitectureContext">
+      <genFeatures property="None" children="true" createChild="true" propertyDescription="The set of viewpoints defined by the context"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/viewpoints"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Context" propertyDescription="The set of viewpoints that are selected for the context by default"
+          propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/defaultViewpoints"/>
+      <genFeatures notify="false" createChild="false" propertyCategory="Context" propertyDescription="The set of element type set configurations that are used by the context (typically found in .elementtypesconfigurations resources)"
+          propertySortChoices="true" ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/elementTypes"/>
+      <genFeatures property="None" notify="false" createChild="false" propertyDescription="The domain that defines the context"
+          ecoreFeature="ecore:EReference Architecture.ecore#//ArchitectureContext/domain"/>
+      <genFeatures createChild="false" propertyCategory="Context" propertyDescription="The prefix of the file extension of the UML models applying this context (e.g., &lt;Name>.&lt;prefixExtension>.uml)"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/extensionPrefix"/>
+      <genFeatures createChild="false" propertyCategory="Context" propertyDescription="The fully qualified name of a command that creates models applying this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand inteface"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/creationCommandClass"/>
+      <genFeatures createChild="false" propertyCategory="Context" propertyDescription="The fully qualified name of a command that refactors models that switched to this context. The command must implement the org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand inteface"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureContext/conversionCommandClass"/>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/ceationCommandClassExists/context"/>
+      </genOperations>
+      <genOperations ecoreOperation="Architecture.ecore#//ArchitectureContext/conversionCommandClassExists">
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/conversionCommandClassExists/diagnostics"/>
+        <genParameters ecoreParameter="Architecture.ecore#//ArchitectureContext/conversionCommandClassExists/context"/>
+      </genOperations>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureFramework"/>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureDescription">
+      <genFeatures createChild="false" propertyDescription="The id of the context applied to a UML model"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureDescription/contextId"/>
+    </genClasses>
+    <genClasses ecoreClass="Architecture.ecore#//ArchitectureDescriptionPreferences">
+      <genFeatures createChild="false" propertyDescription="The set of ids of viewpoints enabled on a UML model"
+          ecoreFeature="ecore:EAttribute Architecture.ecore#//ArchitectureDescriptionPreferences/viewpointIds"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml
new file mode 100644
index 0000000..4cadc77
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/Architecture.uml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Model xmi:id="_46bO0F_sEeecE-N4uvmt0g" name="architecture" URI="http://www.eclipse.org/papyrus/infra/core/architecture">
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bO0V_sEeecE-N4uvmt0g" name="ADElement" isAbstract="true">
+      <ownedAttribute xmi:id="_46bO0l_sEeecE-N4uvmt0g" name="id" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO01_sEeecE-N4uvmt0g" name="name" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO1F_sEeecE-N4uvmt0g" name="description" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO1V_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO1l_sEeecE-N4uvmt0g" name="qualifiedName" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO11_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO2F_sEeecE-N4uvmt0g" name="icon" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO2V_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bO2l_sEeecE-N4uvmt0g" name="ArchitectureDomain">
+      <generalization xmi:id="_46bO21_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bO3F_sEeecE-N4uvmt0g" name="stakeholders" type="_46bO5V_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bO8V_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO3V_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO3l_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO31_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bO7l_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO4F_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO4V_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO4l_sEeecE-N4uvmt0g" name="contexts" type="_46bO8l_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPM1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO41_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO5F_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bO5V_sEeecE-N4uvmt0g" name="Stakeholder">
+      <generalization xmi:id="_46bO5l_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bO51_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO71_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO6F_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO6V_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO6l_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO8V_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bO61_sEeecE-N4uvmt0g" name="Concern">
+      <generalization xmi:id="_46bO7F_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bO7V_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bO7l_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bO7l_sEeecE-N4uvmt0g" memberEnd="_46bO31_sEeecE-N4uvmt0g _46bO7V_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bO71_sEeecE-N4uvmt0g" memberEnd="_46bO51_sEeecE-N4uvmt0g _46bO8F_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bO8F_sEeecE-N4uvmt0g" type="_46bO5V_sEeecE-N4uvmt0g" association="_46bO71_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bO8V_sEeecE-N4uvmt0g" memberEnd="_46bO3F_sEeecE-N4uvmt0g _46bO6l_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bO8l_sEeecE-N4uvmt0g" name="ArchitectureContext" isAbstract="true">
+      <generalization xmi:id="_46bO81_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bO9F_sEeecE-N4uvmt0g" name="viewpoints" type="_46bPC1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPLl_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO9V_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO9l_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO91_sEeecE-N4uvmt0g" name="defaultViewpoints" type="_46bPC1_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPL1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO-F_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO-V_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO-l_sEeecE-N4uvmt0g" name="elementTypes" isOrdered="true" association="_46bPMV_sEeecE-N4uvmt0g">
+        <type xmi:type="uml:Class" href="ElementTypesConfigurations.uml#_44q7UV_sEeecE-N4uvmt0g"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO-1_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bO_F_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bO_V_sEeecE-N4uvmt0g" name="domain" type="_46bO2l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPM1_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bO_l_sEeecE-N4uvmt0g" name="extensionPrefix" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bO_1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bPAF_sEeecE-N4uvmt0g" name="creationCommandClass" visibility="public" type="_46bPBF_sEeecE-N4uvmt0g" isOrdered="true"/>
+      <ownedAttribute xmi:id="_46bPAV_sEeecE-N4uvmt0g" name="conversionCommandClass" visibility="public" type="_46bPCF_sEeecE-N4uvmt0g" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPAl_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_46bPA1_sEeecE-N4uvmt0g" name="Wildcard"/>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_46bPBF_sEeecE-N4uvmt0g" name="EJavaClass_Wildcard">
+        <templateBinding xmi:id="_46bPBV_sEeecE-N4uvmt0g">
+          <parameterSubstitution xmi:id="_46bPBl_sEeecE-N4uvmt0g" actual="_46bPA1_sEeecE-N4uvmt0g">
+            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
+          </parameterSubstitution>
+          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
+        </templateBinding>
+      </nestedClassifier>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_46bPB1_sEeecE-N4uvmt0g" name="Wildcard"/>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_46bPCF_sEeecE-N4uvmt0g" name="EJavaClass_Wildcard">
+        <templateBinding xmi:id="_46bPCV_sEeecE-N4uvmt0g">
+          <parameterSubstitution xmi:id="_46bPCl_sEeecE-N4uvmt0g" actual="_46bPB1_sEeecE-N4uvmt0g">
+            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0-_ownedParameter.0"/>
+          </parameterSubstitution>
+          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaClass-_ownedElement.0"/>
+        </templateBinding>
+      </nestedClassifier>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPC1_sEeecE-N4uvmt0g" name="ArchitectureViewpoint">
+      <generalization xmi:id="_46bPDF_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bPDV_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPFF_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPDl_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPD1_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bPEF_sEeecE-N4uvmt0g" name="representationKinds" type="_46bPFl_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPLF_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPEV_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPEl_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bPE1_sEeecE-N4uvmt0g" name="context" type="_46bO8l_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPLl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPFF_sEeecE-N4uvmt0g" memberEnd="_46bPDV_sEeecE-N4uvmt0g _46bPFV_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPFV_sEeecE-N4uvmt0g" type="_46bPC1_sEeecE-N4uvmt0g" association="_46bPFF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPFl_sEeecE-N4uvmt0g" name="RepresentationKind" isAbstract="true">
+      <generalization xmi:id="_46bPF1_sEeecE-N4uvmt0g" general="_46bO0V_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bPGF_sEeecE-N4uvmt0g" name="language" type="_46bPHF_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPJV_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bPGV_sEeecE-N4uvmt0g" name="concerns" type="_46bO61_sEeecE-N4uvmt0g" isOrdered="true" association="_46bPKl_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPGl_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPG1_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_3prHYMrzEem0O816XhrVeA" name="grayedIcon" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3prHYcrzEem0O816XhrVeA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPHF_sEeecE-N4uvmt0g" name="ArchitectureDescriptionLanguage">
+      <generalization xmi:id="_46bPHV_sEeecE-N4uvmt0g" general="_46bO8l_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bPHl_sEeecE-N4uvmt0g" name="representationKinds" type="_46bPFl_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_46bPJV_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPH1_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPIF_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_46bPIV_sEeecE-N4uvmt0g" name="metamodel" isOrdered="true" association="_46bPJl_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_46bPIl_sEeecE-N4uvmt0g" name="profiles" isOrdered="true" association="_46bPKF_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPI1_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPJF_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPJV_sEeecE-N4uvmt0g" memberEnd="_46bPHl_sEeecE-N4uvmt0g _46bPGF_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPJl_sEeecE-N4uvmt0g" memberEnd="_46bPIV_sEeecE-N4uvmt0g _46bPJ1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPJ1_sEeecE-N4uvmt0g" type="_46bPHF_sEeecE-N4uvmt0g" association="_46bPJl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPKF_sEeecE-N4uvmt0g" memberEnd="_46bPIl_sEeecE-N4uvmt0g _46bPKV_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPKV_sEeecE-N4uvmt0g" type="_46bPHF_sEeecE-N4uvmt0g" association="_46bPKF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPKl_sEeecE-N4uvmt0g" memberEnd="_46bPGV_sEeecE-N4uvmt0g _46bPK1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPK1_sEeecE-N4uvmt0g" type="_46bPFl_sEeecE-N4uvmt0g" association="_46bPKl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPLF_sEeecE-N4uvmt0g" memberEnd="_46bPEF_sEeecE-N4uvmt0g _46bPLV_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPLV_sEeecE-N4uvmt0g" type="_46bPC1_sEeecE-N4uvmt0g" association="_46bPLF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPLl_sEeecE-N4uvmt0g" memberEnd="_46bO9F_sEeecE-N4uvmt0g _46bPE1_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPL1_sEeecE-N4uvmt0g" memberEnd="_46bO91_sEeecE-N4uvmt0g _46bPMF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPMF_sEeecE-N4uvmt0g" type="_46bO8l_sEeecE-N4uvmt0g" association="_46bPL1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPMV_sEeecE-N4uvmt0g" memberEnd="_46bO-l_sEeecE-N4uvmt0g _46bPMl_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_46bPMl_sEeecE-N4uvmt0g" type="_46bO8l_sEeecE-N4uvmt0g" association="_46bPMV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_46bPM1_sEeecE-N4uvmt0g" memberEnd="_46bO4l_sEeecE-N4uvmt0g _46bO_V_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPNF_sEeecE-N4uvmt0g" name="ArchitectureFramework">
+      <generalization xmi:id="_46bPNV_sEeecE-N4uvmt0g" general="_46bO8l_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPNl_sEeecE-N4uvmt0g" name="ArchitectureDescription">
+      <ownedAttribute xmi:id="_46bPN1_sEeecE-N4uvmt0g" name="contextId" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPOF_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_46bPOV_sEeecE-N4uvmt0g" name="ArchitectureDescriptionPreferences">
+      <ownedAttribute xmi:id="_46bPOl_sEeecE-N4uvmt0g" name="viewpointIds" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_46bPO1_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_46bPPF_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <profileApplication xmi:id="_46bPPV_sEeecE-N4uvmt0g">
+      <eAnnotations xmi:id="_46bPPl_sEeecE-N4uvmt0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+      </eAnnotations>
+      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_46bPP1_sEeecE-N4uvmt0g" base_Package="_46bO0F_sEeecE-N4uvmt0g" nsPrefix="architecture" basePackage="org.eclipse.papyrus.infra.core"/>
+  <Ecore:EClass xmi:id="_46bPQF_sEeecE-N4uvmt0g" base_Class="_46bO0V_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPQV_sEeecE-N4uvmt0g" base_Class="_46bO2l_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPQl_sEeecE-N4uvmt0g" base_Property="_46bO3F_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPQ1_sEeecE-N4uvmt0g" base_Property="_46bO31_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPRF_sEeecE-N4uvmt0g" base_Property="_46bO4l_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPRV_sEeecE-N4uvmt0g" base_Class="_46bO5V_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPRl_sEeecE-N4uvmt0g" base_Property="_46bO51_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPR1_sEeecE-N4uvmt0g" base_Property="_46bO6l_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPSF_sEeecE-N4uvmt0g" base_Class="_46bO61_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPSV_sEeecE-N4uvmt0g" base_Property="_46bO7V_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPSl_sEeecE-N4uvmt0g" base_Class="_46bO8l_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPS1_sEeecE-N4uvmt0g" base_Property="_46bO9F_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPTF_sEeecE-N4uvmt0g" base_Property="_46bO91_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPTV_sEeecE-N4uvmt0g" base_Property="_46bO-l_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPTl_sEeecE-N4uvmt0g" base_Property="_46bO_V_sEeecE-N4uvmt0g"/>
+  <Ecore:EGenericType xmi:id="_46bPT1_sEeecE-N4uvmt0g" base_Class="_46bPA1_sEeecE-N4uvmt0g"/>
+  <Ecore:EGenericType xmi:id="_46bPUF_sEeecE-N4uvmt0g" base_DataType="_46bPBF_sEeecE-N4uvmt0g"/>
+  <Ecore:EGenericType xmi:id="_46bPUV_sEeecE-N4uvmt0g" base_Class="_46bPB1_sEeecE-N4uvmt0g"/>
+  <Ecore:EGenericType xmi:id="_46bPUl_sEeecE-N4uvmt0g" base_DataType="_46bPCF_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPU1_sEeecE-N4uvmt0g" base_Class="_46bPC1_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPVF_sEeecE-N4uvmt0g" base_Property="_46bPDV_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPVV_sEeecE-N4uvmt0g" base_Property="_46bPEF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPVl_sEeecE-N4uvmt0g" base_Property="_46bPE1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPV1_sEeecE-N4uvmt0g" base_Class="_46bPFl_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPWF_sEeecE-N4uvmt0g" base_Property="_46bPGF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPWV_sEeecE-N4uvmt0g" base_Property="_46bPGV_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPWl_sEeecE-N4uvmt0g" base_Class="_46bPHF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPW1_sEeecE-N4uvmt0g" base_Property="_46bPHl_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPXF_sEeecE-N4uvmt0g" base_Property="_46bPIV_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_46bPXV_sEeecE-N4uvmt0g" base_Property="_46bPIl_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPXl_sEeecE-N4uvmt0g" base_Class="_46bPNF_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPX1_sEeecE-N4uvmt0g" base_Class="_46bPNl_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_46bPYF_sEeecE-N4uvmt0g" base_Class="_46bPOV_sEeecE-N4uvmt0g"/>
+</xmi:XMI>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml
new file mode 100644
index 0000000..18f519c
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/model/ElementTypesConfigurations.uml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Model xmi:id="_44q7UF_sEeecE-N4uvmt0g" name="types" URI="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2">
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7UV_sEeecE-N4uvmt0g" name="ElementTypeSetConfiguration">
+      <generalization xmi:id="_44q7Ul_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7U1_sEeecE-N4uvmt0g" name="elementTypeConfigurations" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7dl_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7VF_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7VV_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7Vl_sEeecE-N4uvmt0g" name="adviceBindingsConfigurations" type="_44q7eF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7ol_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7V1_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7WF_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7WV_sEeecE-N4uvmt0g" name="metamodelNsURI" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_44q7Wl_sEeecE-N4uvmt0g" client="_44q7UV_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
+      <interfaceRealization xmi:id="_44q7W1_sEeecE-N4uvmt0g" client="_44q7UV_sEeecE-N4uvmt0g" supplier="_44q7YV_sEeecE-N4uvmt0g" contract="_44q7YV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7XF_sEeecE-N4uvmt0g" name="ConfigurationElement" isAbstract="true">
+      <ownedAttribute xmi:id="_44q7XV_sEeecE-N4uvmt0g" name="description" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7Xl_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_44q7X1_sEeecE-N4uvmt0g" name="IdentifiedConfiguration">
+      <ownedAttribute xmi:id="_44q7YF_sEeecE-N4uvmt0g" name="identifier" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_44q7YV_sEeecE-N4uvmt0g" name="NamedConfiguration">
+      <ownedAttribute xmi:id="_44q7Yl_sEeecE-N4uvmt0g" name="name" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7Y1_sEeecE-N4uvmt0g" name="ElementTypeConfiguration" isAbstract="true">
+      <generalization xmi:id="_44q7ZF_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7ZV_sEeecE-N4uvmt0g" name="hint" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7Zl_sEeecE-N4uvmt0g"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_44q7Z1_sEeecE-N4uvmt0g" value="">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7aF_sEeecE-N4uvmt0g" name="kind" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7aV_sEeecE-N4uvmt0g"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_44q7al_sEeecE-N4uvmt0g" value="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7a1_sEeecE-N4uvmt0g" name="iconEntry" type="_44q7b1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7dF_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7bF_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_44q7bV_sEeecE-N4uvmt0g" client="_44q7Y1_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
+      <interfaceRealization xmi:id="_44q7bl_sEeecE-N4uvmt0g" client="_44q7Y1_sEeecE-N4uvmt0g" supplier="_44q7YV_sEeecE-N4uvmt0g" contract="_44q7YV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7b1_sEeecE-N4uvmt0g" name="IconEntry">
+      <ownedAttribute xmi:id="_44q7cF_sEeecE-N4uvmt0g" name="iconPath" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7cV_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7cl_sEeecE-N4uvmt0g" name="bundleId" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7c1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7dF_sEeecE-N4uvmt0g" memberEnd="_44q7a1_sEeecE-N4uvmt0g _44q7dV_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7dV_sEeecE-N4uvmt0g" type="_44q7Y1_sEeecE-N4uvmt0g" association="_44q7dF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7dl_sEeecE-N4uvmt0g" memberEnd="_44q7U1_sEeecE-N4uvmt0g _44q7d1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7d1_sEeecE-N4uvmt0g" type="_44q7UV_sEeecE-N4uvmt0g" association="_44q7dl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7eF_sEeecE-N4uvmt0g" name="AbstractAdviceBindingConfiguration" isAbstract="true">
+      <generalization xmi:id="_44q7eV_sEeecE-N4uvmt0g" general="_44q7gl_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7el_sEeecE-N4uvmt0g" name="target" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7jl_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7e1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7fF_sEeecE-N4uvmt0g" name="containerConfiguration" type="_44q7kF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7m1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7fV_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7fl_sEeecE-N4uvmt0g" name="matcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7nV_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7f1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7gF_sEeecE-N4uvmt0g" name="inheritance" visibility="public" type="_44q7n1_sEeecE-N4uvmt0g" isOrdered="true"/>
+      <interfaceRealization xmi:id="_44q7gV_sEeecE-N4uvmt0g" client="_44q7eF_sEeecE-N4uvmt0g" supplier="_44q7X1_sEeecE-N4uvmt0g" contract="_44q7X1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7gl_sEeecE-N4uvmt0g" name="AdviceConfiguration" isAbstract="true">
+      <generalization xmi:id="_44q7g1_sEeecE-N4uvmt0g" general="_44q7XF_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7hF_sEeecE-N4uvmt0g" name="before" type="_44q7gl_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7il_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7hV_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7hl_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7h1_sEeecE-N4uvmt0g" name="after" type="_44q7gl_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7jF_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7iF_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7iV_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7il_sEeecE-N4uvmt0g" memberEnd="_44q7hF_sEeecE-N4uvmt0g _44q7i1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7i1_sEeecE-N4uvmt0g" type="_44q7gl_sEeecE-N4uvmt0g" association="_44q7il_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7jF_sEeecE-N4uvmt0g" memberEnd="_44q7h1_sEeecE-N4uvmt0g _44q7jV_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7jV_sEeecE-N4uvmt0g" type="_44q7gl_sEeecE-N4uvmt0g" association="_44q7jF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7jl_sEeecE-N4uvmt0g" memberEnd="_44q7el_sEeecE-N4uvmt0g _44q7j1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7j1_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7jl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7kF_sEeecE-N4uvmt0g" name="ContainerConfiguration">
+      <ownedAttribute xmi:id="_44q7kV_sEeecE-N4uvmt0g" name="containerMatcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7l1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7kl_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7k1_sEeecE-N4uvmt0g" name="eContainmentFeatures" isOrdered="true" association="_44q7mV_sEeecE-N4uvmt0g">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EReference"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7lF_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7lV_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7ll_sEeecE-N4uvmt0g" name="AbstractMatcherConfiguration" isAbstract="true"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7l1_sEeecE-N4uvmt0g" memberEnd="_44q7kV_sEeecE-N4uvmt0g _44q7mF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7mF_sEeecE-N4uvmt0g" type="_44q7kF_sEeecE-N4uvmt0g" association="_44q7l1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7mV_sEeecE-N4uvmt0g" memberEnd="_44q7k1_sEeecE-N4uvmt0g _44q7ml_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7ml_sEeecE-N4uvmt0g" type="_44q7kF_sEeecE-N4uvmt0g" association="_44q7mV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7m1_sEeecE-N4uvmt0g" memberEnd="_44q7fF_sEeecE-N4uvmt0g _44q7nF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7nF_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7m1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7nV_sEeecE-N4uvmt0g" memberEnd="_44q7fl_sEeecE-N4uvmt0g _44q7nl_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7nl_sEeecE-N4uvmt0g" type="_44q7eF_sEeecE-N4uvmt0g" association="_44q7nV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_44q7n1_sEeecE-N4uvmt0g" name="InheritanceKind">
+      <ownedLiteral xmi:id="_44q7oF_sEeecE-N4uvmt0g" name="none"/>
+      <ownedLiteral xmi:id="_44q7oV_sEeecE-N4uvmt0g" name="all"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7ol_sEeecE-N4uvmt0g" memberEnd="_44q7Vl_sEeecE-N4uvmt0g _44q7o1_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7o1_sEeecE-N4uvmt0g" type="_44q7UV_sEeecE-N4uvmt0g" association="_44q7ol_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7pF_sEeecE-N4uvmt0g" name="SpecializationTypeConfiguration">
+      <generalization xmi:id="_44q7pV_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7pl_sEeecE-N4uvmt0g" name="editHelperAdviceConfiguration" type="_44q7r1_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7sl_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7p1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7qF_sEeecE-N4uvmt0g" name="containerConfiguration" type="_44q7kF_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7s1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7qV_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7ql_sEeecE-N4uvmt0g" name="matcherConfiguration" type="_44q7ll_sEeecE-N4uvmt0g" isOrdered="true" aggregation="composite" association="_44q7tV_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7q1_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7rF_sEeecE-N4uvmt0g" name="specializedTypes" type="_44q7Y1_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7t1_sEeecE-N4uvmt0g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7rV_sEeecE-N4uvmt0g"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_44q7rl_sEeecE-N4uvmt0g" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7r1_sEeecE-N4uvmt0g" name="AbstractEditHelperAdviceConfiguration" isAbstract="true">
+      <generalization xmi:id="_44q7sF_sEeecE-N4uvmt0g" general="_44q7gl_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7sV_sEeecE-N4uvmt0g" name="target" type="_44q7pF_sEeecE-N4uvmt0g" isOrdered="true" association="_44q7sl_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7sl_sEeecE-N4uvmt0g" memberEnd="_44q7pl_sEeecE-N4uvmt0g _44q7sV_sEeecE-N4uvmt0g"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7s1_sEeecE-N4uvmt0g" memberEnd="_44q7qF_sEeecE-N4uvmt0g _44q7tF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7tF_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7s1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7tV_sEeecE-N4uvmt0g" memberEnd="_44q7ql_sEeecE-N4uvmt0g _44q7tl_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7tl_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7tV_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7t1_sEeecE-N4uvmt0g" memberEnd="_44q7rF_sEeecE-N4uvmt0g _44q7uF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7uF_sEeecE-N4uvmt0g" type="_44q7pF_sEeecE-N4uvmt0g" association="_44q7t1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7uV_sEeecE-N4uvmt0g" name="MetamodelTypeConfiguration">
+      <generalization xmi:id="_44q7ul_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7u1_sEeecE-N4uvmt0g" name="eClass" isOrdered="true" association="_44q7v1_sEeecE-N4uvmt0g">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EClass"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7vF_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_44q7vV_sEeecE-N4uvmt0g" name="editHelperClassName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44q7vl_sEeecE-N4uvmt0g"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_44q7v1_sEeecE-N4uvmt0g" memberEnd="_44q7u1_sEeecE-N4uvmt0g _44q7wF_sEeecE-N4uvmt0g">
+      <ownedEnd xmi:id="_44q7wF_sEeecE-N4uvmt0g" type="_44q7uV_sEeecE-N4uvmt0g" association="_44q7v1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7wV_sEeecE-N4uvmt0g" name="EditHelperAdviceConfiguration">
+      <generalization xmi:id="_44q7wl_sEeecE-N4uvmt0g" general="_44q7r1_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7w1_sEeecE-N4uvmt0g" name="editHelperAdviceClassName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7xF_sEeecE-N4uvmt0g" name="AdviceBindingConfiguration">
+      <generalization xmi:id="_44q7xV_sEeecE-N4uvmt0g" general="_44q7eF_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7xl_sEeecE-N4uvmt0g" name="editHelperAdviceClassName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7x1_sEeecE-N4uvmt0g" name="MatcherConfiguration">
+      <generalization xmi:id="_44q7yF_sEeecE-N4uvmt0g" general="_44q7ll_sEeecE-N4uvmt0g"/>
+      <ownedAttribute xmi:id="_44q7yV_sEeecE-N4uvmt0g" name="matcherClassName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7yl_sEeecE-N4uvmt0g" name="ExternallyRegisteredType">
+      <generalization xmi:id="_44q7y1_sEeecE-N4uvmt0g" general="_44q7Y1_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_44q7zF_sEeecE-N4uvmt0g" name="ExternallyRegisteredAdvice">
+      <generalization xmi:id="_44q7zV_sEeecE-N4uvmt0g" general="_44q7xF_sEeecE-N4uvmt0g"/>
+    </packagedElement>
+    <profileApplication xmi:id="_44q7zl_sEeecE-N4uvmt0g">
+      <eAnnotations xmi:id="_44q7z1_sEeecE-N4uvmt0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+      </eAnnotations>
+      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_44q70F_sEeecE-N4uvmt0g" base_Package="_44q7UF_sEeecE-N4uvmt0g" nsPrefix="elementtypesconfigurations" basePackage="org.eclipse.papyrus.infra"/>
+  <Ecore:EClass xmi:id="_44q70V_sEeecE-N4uvmt0g" base_Class="_44q7UV_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q70l_sEeecE-N4uvmt0g" base_Property="_44q7U1_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q701_sEeecE-N4uvmt0g" base_Property="_44q7Vl_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q71F_sEeecE-N4uvmt0g" base_Class="_44q7XF_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q71V_sEeecE-N4uvmt0g" base_Interface="_44q7X1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q71l_sEeecE-N4uvmt0g" base_Interface="_44q7YV_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q711_sEeecE-N4uvmt0g" base_Class="_44q7Y1_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q72F_sEeecE-N4uvmt0g" base_Property="_44q7a1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q72V_sEeecE-N4uvmt0g" base_Class="_44q7b1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q72l_sEeecE-N4uvmt0g" base_Class="_44q7eF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q721_sEeecE-N4uvmt0g" base_Property="_44q7el_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q73F_sEeecE-N4uvmt0g" base_Property="_44q7fF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q73V_sEeecE-N4uvmt0g" base_Property="_44q7fl_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q73l_sEeecE-N4uvmt0g" base_Class="_44q7gl_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q731_sEeecE-N4uvmt0g" base_Property="_44q7hF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q74F_sEeecE-N4uvmt0g" base_Property="_44q7h1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44q74V_sEeecE-N4uvmt0g" base_Class="_44q7kF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q74l_sEeecE-N4uvmt0g" base_Property="_44q7kV_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44q741_sEeecE-N4uvmt0g" base_Property="_44q7k1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44riYF_sEeecE-N4uvmt0g" base_Class="_44q7ll_sEeecE-N4uvmt0g"/>
+  <Ecore:EEnum xmi:id="_44riYV_sEeecE-N4uvmt0g" base_Enumeration="_44q7n1_sEeecE-N4uvmt0g"/>
+  <Ecore:EEnumLiteral xmi:id="_44riYl_sEeecE-N4uvmt0g" base_EnumerationLiteral="_44q7oF_sEeecE-N4uvmt0g" literal="none"/>
+  <Ecore:EEnumLiteral xmi:id="_44riY1_sEeecE-N4uvmt0g" base_EnumerationLiteral="_44q7oV_sEeecE-N4uvmt0g" literal="all"/>
+  <Ecore:EClass xmi:id="_44riZF_sEeecE-N4uvmt0g" base_Class="_44q7pF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44riZV_sEeecE-N4uvmt0g" base_Property="_44q7pl_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44riZl_sEeecE-N4uvmt0g" base_Property="_44q7qF_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44riZ1_sEeecE-N4uvmt0g" base_Property="_44q7ql_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44riaF_sEeecE-N4uvmt0g" base_Property="_44q7rF_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44riaV_sEeecE-N4uvmt0g" base_Class="_44q7r1_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44rial_sEeecE-N4uvmt0g" base_Property="_44q7sV_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44ria1_sEeecE-N4uvmt0g" base_Class="_44q7uV_sEeecE-N4uvmt0g"/>
+  <Ecore:EReference xmi:id="_44ribF_sEeecE-N4uvmt0g" base_Property="_44q7u1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44ribV_sEeecE-N4uvmt0g" base_Class="_44q7wV_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44ribl_sEeecE-N4uvmt0g" base_Class="_44q7xF_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44rib1_sEeecE-N4uvmt0g" base_Class="_44q7x1_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44ricF_sEeecE-N4uvmt0g" base_Class="_44q7yl_sEeecE-N4uvmt0g"/>
+  <Ecore:EClass xmi:id="_44ricV_sEeecE-N4uvmt0g" base_Class="_44q7zF_sEeecE-N4uvmt0g"/>
+</xmi:XMI>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.properties b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.properties
new file mode 100644
index 0000000..15ff81a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.properties
@@ -0,0 +1,16 @@
+* Copyright (c) 2017 CEA LIST.
+# 
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License 2.0
+#  which accompanies this distribution, and is available at
+#  https://www.eclipse.org/legal/epl-2.0/
+#
+#  SPDX-License-Identifier: EPL-2.0
+#  
+#  Contributors:
+#  Maged Elaasar - Initial API and implementation
+#  
+# 
+
+pluginName = Architecture Model (CDO Version)
+providerName=Eclipse Modeling Project
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.xml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.xml
new file mode 100644
index 0000000..017a4a6
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/plugin.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+* Copyright (c) 2020 CEA LIST.
+ 
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License 2.0
+  which accompanies this distribution, and is available at
+  https://www.eclipse.org/legal/epl-2.0/
+
+  SPDX-License-Identifier: EPL-2.0
+  
+  Contributors:
+  Eike Stepper - Initial API and implementation
+  
+ 
+-->
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.factory_override">
+    <factory
+        uri="http://www.eclipse.org/papyrus/infra/core/architecture"
+        class="org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureFactoryImpl"
+        predecessor="org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureFactoryImpl" />
+    </extension>
+
+</plugin>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/pom.xml b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/pom.xml
new file mode 100644
index 0000000..c3fa630
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/pom.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus.cdo</groupId>
+		<artifactId>org.eclipse.papyrus.cdo-bundles</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.infra.core.architecture.cdo</artifactId>
+	<version>2.1.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+</project>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java
new file mode 100644
index 0000000..5da1c11
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ADElementImpl.java
@@ -0,0 +1,329 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.papyrus.infra.core.architecture.ADElement;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>AD Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ADElementImpl#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ADElementImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ADElementImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ADElementImpl#getQualifiedName <em>Qualified Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ADElementImpl#getIcon <em>Icon</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ADElementImpl extends CDOObjectImpl implements ADElement {
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getQualifiedName() <em>Qualified Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getQualifiedName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String QUALIFIED_NAME_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getIcon() <em>Icon</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getIcon()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ICON_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ADElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.AD_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getId() {
+		return (String) eDynamicGet(ArchitecturePackage.AD_ELEMENT__ID, ArchitecturePackage.Literals.AD_ELEMENT__ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setId(String newId) {
+		eDynamicSet(ArchitecturePackage.AD_ELEMENT__ID, ArchitecturePackage.Literals.AD_ELEMENT__ID, newId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return (String) eDynamicGet(ArchitecturePackage.AD_ELEMENT__NAME, ArchitecturePackage.Literals.AD_ELEMENT__NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		eDynamicSet(ArchitecturePackage.AD_ELEMENT__NAME, ArchitecturePackage.Literals.AD_ELEMENT__NAME, newName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return (String) eDynamicGet(ArchitecturePackage.AD_ELEMENT__DESCRIPTION, ArchitecturePackage.Literals.AD_ELEMENT__DESCRIPTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		eDynamicSet(ArchitecturePackage.AD_ELEMENT__DESCRIPTION, ArchitecturePackage.Literals.AD_ELEMENT__DESCRIPTION, newDescription);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String getQualifiedName() {
+		String qualifiedName = getName();
+		ADElement parent = (ADElement) eContainer();
+		while (parent != null) {
+			qualifiedName = parent.getName() + "::" + qualifiedName;
+			parent = (ADElement) parent.eContainer();
+		}
+		return qualifiedName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getIcon() {
+		return (String) eDynamicGet(ArchitecturePackage.AD_ELEMENT__ICON, ArchitecturePackage.Literals.AD_ELEMENT__ICON, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setIcon(String newIcon) {
+		eDynamicSet(ArchitecturePackage.AD_ELEMENT__ICON, ArchitecturePackage.Literals.AD_ELEMENT__ICON, newIcon);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ArchitecturePackage.AD_ELEMENT__ID:
+			return getId();
+		case ArchitecturePackage.AD_ELEMENT__NAME:
+			return getName();
+		case ArchitecturePackage.AD_ELEMENT__DESCRIPTION:
+			return getDescription();
+		case ArchitecturePackage.AD_ELEMENT__QUALIFIED_NAME:
+			return getQualifiedName();
+		case ArchitecturePackage.AD_ELEMENT__ICON:
+			return getIcon();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ArchitecturePackage.AD_ELEMENT__ID:
+			setId((String) newValue);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__NAME:
+			setName((String) newValue);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__ICON:
+			setIcon((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ArchitecturePackage.AD_ELEMENT__ID:
+			setId(ID_EDEFAULT);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case ArchitecturePackage.AD_ELEMENT__ICON:
+			setIcon(ICON_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ArchitecturePackage.AD_ELEMENT__ID:
+			return ID_EDEFAULT == null ? getId() != null : !ID_EDEFAULT.equals(getId());
+		case ArchitecturePackage.AD_ELEMENT__NAME:
+			return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+		case ArchitecturePackage.AD_ELEMENT__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
+		case ArchitecturePackage.AD_ELEMENT__QUALIFIED_NAME:
+			return QUALIFIED_NAME_EDEFAULT == null ? getQualifiedName() != null : !QUALIFIED_NAME_EDEFAULT.equals(getQualifiedName());
+		case ArchitecturePackage.AD_ELEMENT__ICON:
+			return ICON_EDEFAULT == null ? getIcon() != null : !ICON_EDEFAULT.equals(getIcon());
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // ADElementImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java
new file mode 100644
index 0000000..6d8d58e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureContextImpl.java
@@ -0,0 +1,546 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureContext;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureViewpoint;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+import org.eclipse.papyrus.infra.core.architecture.util.ArchitectureValidator;
+import org.eclipse.papyrus.infra.types.ElementTypeSetConfiguration;
+import org.osgi.framework.Bundle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Context</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getViewpoints <em>Viewpoints</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getDefaultViewpoints <em>Default Viewpoints</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getElementTypes <em>Element Types</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getDomain <em>Domain</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getExtensionPrefix <em>Extension Prefix</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getCreationCommandClass <em>Creation Command Class</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureContextImpl#getConversionCommandClass <em>Conversion Command Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ArchitectureContextImpl extends ADElementImpl implements ArchitectureContext {
+	/**
+	 * The default value of the '{@link #getExtensionPrefix() <em>Extension Prefix</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExtensionPrefix()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXTENSION_PREFIX_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getCreationCommandClass() <em>Creation Command Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getCreationCommandClass()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CREATION_COMMAND_CLASS_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getConversionCommandClass() <em>Conversion Command Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getConversionCommandClass()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONVERSION_COMMAND_CLASS_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ArchitectureContextImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ArchitectureViewpoint> getViewpoints() {
+		return (EList<ArchitectureViewpoint>) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__VIEWPOINTS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ArchitectureViewpoint> getDefaultViewpoints() {
+		return (EList<ArchitectureViewpoint>) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ElementTypeSetConfiguration> getElementTypes() {
+		return (EList<ElementTypeSetConfiguration>) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__ELEMENT_TYPES, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getExtensionPrefix() {
+		return (String) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setExtensionPrefix(String newExtensionPrefix) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX, newExtensionPrefix);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getCreationCommandClass() {
+		return (String) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setCreationCommandClass(String newCreationCommandClass) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS, newCreationCommandClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getConversionCommandClass() {
+		return (String) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setConversionCommandClass(String newConversionCommandClass) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS, newConversionCommandClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean ceationCommandClassExists(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		String creationCommandClass = getCreationCommandClass();
+		if (creationCommandClass != null) {
+			boolean exists = false;
+
+			URI uri = eResource().getURI();
+			if (uri.isPlatformPlugin()) {
+				String bundleName = uri.segment(1);
+				Bundle bundle = Platform.getBundle(bundleName);
+				try {
+					exists = bundle.loadClass(creationCommandClass) != null;
+				} catch (ClassNotFoundException e) {
+					/* ignore */
+				}
+			} else if (uri.isPlatformResource()) {
+				String projectName = uri.segment(1);
+				IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+				IJavaProject javaProject = JavaCore.create(project);
+				try {
+					exists = javaProject.findType(creationCommandClass) != null;
+				} catch (JavaModelException e) {
+					/* ignore */
+				}
+			}
+
+			if (!exists) {
+				if (diagnostics != null) {
+					diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR,
+							ArchitectureValidator.DIAGNOSTIC_SOURCE,
+							ArchitectureValidator.ARCHITECTURE_CONTEXT__CEATION_COMMAND_CLASS_EXISTS,
+							EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "ceationCommandClassExists", EObjectValidator.getObjectLabel(this, context) }), //$NON-NLS-1$ //$NON-NLS-2$
+							new Object[] { this }));
+				}
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean conversionCommandClassExists(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		String conversionCommandClass = getConversionCommandClass();
+		if (conversionCommandClass != null) {
+			boolean exists = false;
+
+			URI uri = eResource().getURI();
+			if (uri.isPlatformPlugin()) {
+				String bundleName = uri.segment(1);
+				Bundle bundle = Platform.getBundle(bundleName);
+				try {
+					exists = bundle.loadClass(conversionCommandClass) != null;
+				} catch (ClassNotFoundException e) {
+					/* ignore */
+				}
+			} else if (uri.isPlatformResource()) {
+				String projectName = uri.segment(1);
+				IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+				IJavaProject javaProject = JavaCore.create(project);
+				try {
+					exists = javaProject.findType(conversionCommandClass) != null;
+				} catch (JavaModelException e) {
+					/* ignore */
+				}
+			}
+
+			if (!exists) {
+				if (diagnostics != null) {
+					diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR,
+							ArchitectureValidator.DIAGNOSTIC_SOURCE,
+							ArchitectureValidator.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS_EXISTS,
+							EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "conversionCommandClassExists", EObjectValidator.getObjectLabel(this, context) }), //$NON-NLS-1$ //$NON-NLS-2$
+							new Object[] { this }));
+				}
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDomain getDomain() {
+		return (ArchitectureDomain) eDynamicGet(ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__DOMAIN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetDomain(ArchitectureDomain newDomain, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newDomain, ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDomain(ArchitectureDomain newDomain) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN, ArchitecturePackage.Literals.ARCHITECTURE_CONTEXT__DOMAIN, newDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getViewpoints()).basicAdd(otherEnd, msgs);
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			return basicSetDomain((ArchitectureDomain) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			return ((InternalEList<?>) getViewpoints()).basicRemove(otherEnd, msgs);
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			return basicSetDomain(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			return eInternalContainer().eInverseRemove(this, ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS, ArchitectureDomain.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			return getViewpoints();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS:
+			return getDefaultViewpoints();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES:
+			return getElementTypes();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			return getDomain();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX:
+			return getExtensionPrefix();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS:
+			return getCreationCommandClass();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
+			return getConversionCommandClass();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			getViewpoints().clear();
+			getViewpoints().addAll((Collection<? extends ArchitectureViewpoint>) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS:
+			getDefaultViewpoints().clear();
+			getDefaultViewpoints().addAll((Collection<? extends ArchitectureViewpoint>) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES:
+			getElementTypes().clear();
+			getElementTypes().addAll((Collection<? extends ElementTypeSetConfiguration>) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			setDomain((ArchitectureDomain) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX:
+			setExtensionPrefix((String) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS:
+			setCreationCommandClass((String) newValue);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
+			setConversionCommandClass((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			getViewpoints().clear();
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS:
+			getDefaultViewpoints().clear();
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES:
+			getElementTypes().clear();
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			setDomain((ArchitectureDomain) null);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX:
+			setExtensionPrefix(EXTENSION_PREFIX_EDEFAULT);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS:
+			setCreationCommandClass(CREATION_COMMAND_CLASS_EDEFAULT);
+			return;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
+			setConversionCommandClass(CONVERSION_COMMAND_CLASS_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS:
+			return !getViewpoints().isEmpty();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DEFAULT_VIEWPOINTS:
+			return !getDefaultViewpoints().isEmpty();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__ELEMENT_TYPES:
+			return !getElementTypes().isEmpty();
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__DOMAIN:
+			return getDomain() != null;
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__EXTENSION_PREFIX:
+			return EXTENSION_PREFIX_EDEFAULT == null ? getExtensionPrefix() != null : !EXTENSION_PREFIX_EDEFAULT.equals(getExtensionPrefix());
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CREATION_COMMAND_CLASS:
+			return CREATION_COMMAND_CLASS_EDEFAULT == null ? getCreationCommandClass() != null : !CREATION_COMMAND_CLASS_EDEFAULT.equals(getCreationCommandClass());
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT__CONVERSION_COMMAND_CLASS:
+			return CONVERSION_COMMAND_CLASS_EDEFAULT == null ? getConversionCommandClass() != null : !CONVERSION_COMMAND_CLASS_EDEFAULT.equals(getConversionCommandClass());
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT___CEATION_COMMAND_CLASS_EXISTS__DIAGNOSTICCHAIN_MAP:
+			return ceationCommandClassExists((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
+		case ArchitecturePackage.ARCHITECTURE_CONTEXT___CONVERSION_COMMAND_CLASS_EXISTS__DIAGNOSTICCHAIN_MAP:
+			return conversionCommandClassExists((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // ArchitectureContextImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionImpl.java
new file mode 100644
index 0000000..fad428a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionImpl.java
@@ -0,0 +1,154 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescription;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Description</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDescriptionImpl#getContextId <em>Context Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArchitectureDescriptionImpl extends CDOObjectImpl implements ArchitectureDescription {
+	/**
+	 * The default value of the '{@link #getContextId() <em>Context Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContextId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTEXT_ID_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureDescriptionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getContextId() {
+		return (String)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION__CONTEXT_ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setContextId(String newContextId) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION__CONTEXT_ID, newContextId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID:
+				return getContextId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID:
+				setContextId((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID:
+				setContextId(CONTEXT_ID_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION__CONTEXT_ID:
+				return CONTEXT_ID_EDEFAULT == null ? getContextId() != null : !CONTEXT_ID_EDEFAULT.equals(getContextId());
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArchitectureDescriptionImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java
new file mode 100644
index 0000000..c4d7f9c
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionLanguageImpl.java
@@ -0,0 +1,231 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescriptionLanguage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
+import org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Description Language</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDescriptionLanguageImpl#getRepresentationKinds <em>Representation Kinds</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDescriptionLanguageImpl#getMetamodel <em>Metamodel</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDescriptionLanguageImpl#getProfiles <em>Profiles</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArchitectureDescriptionLanguageImpl extends ArchitectureContextImpl implements ArchitectureDescriptionLanguage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureDescriptionLanguageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<RepresentationKind> getRepresentationKinds() {
+		return (EList<RepresentationKind>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EPackage getMetamodel() {
+		return (EPackage)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EPackage basicGetMetamodel() {
+		return (EPackage)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMetamodel(EPackage newMetamodel) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL, newMetamodel);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<EPackage> getProfiles() {
+		return (EList<EPackage>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getRepresentationKinds()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				return ((InternalEList<?>)getRepresentationKinds()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				return getRepresentationKinds();
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
+				if (resolve) {
+					return getMetamodel();
+				}
+				return basicGetMetamodel();
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
+				return getProfiles();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				getRepresentationKinds().clear();
+				getRepresentationKinds().addAll((Collection<? extends RepresentationKind>)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
+				setMetamodel((EPackage)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
+				getProfiles().clear();
+				getProfiles().addAll((Collection<? extends EPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				getRepresentationKinds().clear();
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
+				setMetamodel((EPackage)null);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
+				getProfiles().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS:
+				return !getRepresentationKinds().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__METAMODEL:
+				return basicGetMetamodel() != null;
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__PROFILES:
+				return !getProfiles().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArchitectureDescriptionLanguageImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionPreferencesImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionPreferencesImpl.java
new file mode 100644
index 0000000..b66902f
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDescriptionPreferencesImpl.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescriptionPreferences;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Description Preferences</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDescriptionPreferencesImpl#getViewpointIds <em>Viewpoint Ids</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArchitectureDescriptionPreferencesImpl extends CDOObjectImpl implements ArchitectureDescriptionPreferences {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureDescriptionPreferencesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_PREFERENCES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<String> getViewpointIds() {
+		return (EList<String>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS, ArchitecturePackage.Literals.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS:
+				return getViewpointIds();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS:
+				getViewpointIds().clear();
+				getViewpointIds().addAll((Collection<? extends String>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS:
+				getViewpointIds().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES__VIEWPOINT_IDS:
+				return !getViewpointIds().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArchitectureDescriptionPreferencesImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDomainImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDomainImpl.java
new file mode 100644
index 0000000..d382779
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureDomainImpl.java
@@ -0,0 +1,221 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureContext;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.Stakeholder;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Domain</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDomainImpl#getStakeholders <em>Stakeholders</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDomainImpl#getConcerns <em>Concerns</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureDomainImpl#getContexts <em>Contexts</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArchitectureDomainImpl extends ADElementImpl implements ArchitectureDomain {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureDomainImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_DOMAIN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Stakeholder> getStakeholders() {
+		return (EList<Stakeholder>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS, ArchitecturePackage.Literals.ARCHITECTURE_DOMAIN__STAKEHOLDERS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Concern> getConcerns() {
+		return (EList<Concern>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS, ArchitecturePackage.Literals.ARCHITECTURE_DOMAIN__CONCERNS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ArchitectureContext> getContexts() {
+		return (EList<ArchitectureContext>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS, ArchitecturePackage.Literals.ARCHITECTURE_DOMAIN__CONTEXTS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getStakeholders()).basicAdd(otherEnd, msgs);
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getConcerns()).basicAdd(otherEnd, msgs);
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getContexts()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				return ((InternalEList<?>)getStakeholders()).basicRemove(otherEnd, msgs);
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				return ((InternalEList<?>)getConcerns()).basicRemove(otherEnd, msgs);
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				return ((InternalEList<?>)getContexts()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				return getStakeholders();
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				return getConcerns();
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				return getContexts();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				getStakeholders().clear();
+				getStakeholders().addAll((Collection<? extends Stakeholder>)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				getConcerns().clear();
+				getConcerns().addAll((Collection<? extends Concern>)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				getContexts().clear();
+				getContexts().addAll((Collection<? extends ArchitectureContext>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				getStakeholders().clear();
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				getConcerns().clear();
+				return;
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				getContexts().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS:
+				return !getStakeholders().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS:
+				return !getConcerns().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_DOMAIN__CONTEXTS:
+				return !getContexts().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArchitectureDomainImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFactoryImpl.java
new file mode 100644
index 0000000..a26b15a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFactoryImpl.java
@@ -0,0 +1,221 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescription;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescriptionLanguage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescriptionPreferences;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureFactory;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureFramework;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureViewpoint;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.Stakeholder;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class ArchitectureFactoryImpl extends EFactoryImpl implements ArchitectureFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static ArchitectureFactory init() {
+		try {
+			ArchitectureFactory theArchitectureFactory = (ArchitectureFactory) EPackage.Registry.INSTANCE.getEFactory(ArchitecturePackage.eNS_URI);
+			if (theArchitectureFactory != null) {
+				return theArchitectureFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ArchitectureFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public ArchitectureFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case ArchitecturePackage.ARCHITECTURE_DOMAIN:
+			return createArchitectureDomain();
+		case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE:
+			return createArchitectureDescriptionLanguage();
+		case ArchitecturePackage.STAKEHOLDER:
+			return createStakeholder();
+		case ArchitecturePackage.CONCERN:
+			return createConcern();
+		case ArchitecturePackage.ARCHITECTURE_VIEWPOINT:
+			return createArchitectureViewpoint();
+		case ArchitecturePackage.ARCHITECTURE_FRAMEWORK:
+			return createArchitectureFramework();
+		case ArchitecturePackage.ARCHITECTURE_DESCRIPTION:
+			return createArchitectureDescription();
+		case ArchitecturePackage.ARCHITECTURE_DESCRIPTION_PREFERENCES:
+			return createArchitectureDescriptionPreferences();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDomain createArchitectureDomain() {
+		ArchitectureDomainImpl architectureDomain = new ArchitectureDomainImpl();
+		return architectureDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDescriptionLanguage createArchitectureDescriptionLanguage() {
+		ArchitectureDescriptionLanguageImpl architectureDescriptionLanguage = new ArchitectureDescriptionLanguageImpl();
+		return architectureDescriptionLanguage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Stakeholder createStakeholder() {
+		StakeholderImpl stakeholder = new StakeholderImpl();
+		return stakeholder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Concern createConcern() {
+		ConcernImpl concern = new ConcernImpl();
+		return concern;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureViewpoint createArchitectureViewpoint() {
+		ArchitectureViewpointImpl architectureViewpoint = new ArchitectureViewpointImpl();
+		return architectureViewpoint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureFramework createArchitectureFramework() {
+		ArchitectureFrameworkImpl architectureFramework = new ArchitectureFrameworkImpl();
+		return architectureFramework;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDescription createArchitectureDescription() {
+		ArchitectureDescriptionImpl architectureDescription = new ArchitectureDescriptionImpl();
+		return architectureDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDescriptionPreferences createArchitectureDescriptionPreferences() {
+		ArchitectureDescriptionPreferencesImpl architectureDescriptionPreferences = new ArchitectureDescriptionPreferencesImpl();
+		return architectureDescriptionPreferences;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ArchitecturePackage getArchitecturePackage() {
+		return (ArchitecturePackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ArchitecturePackage getPackage() {
+		return ArchitecturePackage.eINSTANCE;
+	}
+
+} // ArchitectureFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFrameworkImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFrameworkImpl.java
new file mode 100644
index 0000000..80bf5fe
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureFrameworkImpl.java
@@ -0,0 +1,50 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *  
+ * 
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureFramework;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.impl.ArchitectureContextImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Framework</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ArchitectureFrameworkImpl extends ArchitectureContextImpl implements ArchitectureFramework {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureFrameworkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_FRAMEWORK;
+	}
+
+} //ArchitectureFrameworkImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java
new file mode 100644
index 0000000..78cac92
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ArchitectureViewpointImpl.java
@@ -0,0 +1,245 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureContext;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureViewpoint;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Viewpoint</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureViewpointImpl#getConcerns <em>Concerns</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureViewpointImpl#getRepresentationKinds <em>Representation Kinds</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ArchitectureViewpointImpl#getContext <em>Context</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArchitectureViewpointImpl extends ADElementImpl implements ArchitectureViewpoint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchitectureViewpointImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.ARCHITECTURE_VIEWPOINT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Concern> getConcerns() {
+		return (EList<Concern>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS, ArchitecturePackage.Literals.ARCHITECTURE_VIEWPOINT__CONCERNS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<RepresentationKind> getRepresentationKinds() {
+		return (EList<RepresentationKind>)eDynamicGet(ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS, ArchitecturePackage.Literals.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ArchitectureContext getContext() {
+		return (ArchitectureContext)eDynamicGet(ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT, ArchitecturePackage.Literals.ARCHITECTURE_VIEWPOINT__CONTEXT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetContext(ArchitectureContext newContext, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newContext, ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setContext(ArchitectureContext newContext) {
+		eDynamicSet(ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT, ArchitecturePackage.Literals.ARCHITECTURE_VIEWPOINT__CONTEXT, newContext);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				if (eInternalContainer() != null) {
+					msgs = eBasicRemoveFromContainer(msgs);
+				}
+				return basicSetContext((ArchitectureContext)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				return basicSetContext(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				return eInternalContainer().eInverseRemove(this, ArchitecturePackage.ARCHITECTURE_CONTEXT__VIEWPOINTS, ArchitectureContext.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS:
+				return getConcerns();
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS:
+				return getRepresentationKinds();
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				return getContext();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS:
+				getConcerns().clear();
+				getConcerns().addAll((Collection<? extends Concern>)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS:
+				getRepresentationKinds().clear();
+				getRepresentationKinds().addAll((Collection<? extends RepresentationKind>)newValue);
+				return;
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				setContext((ArchitectureContext)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS:
+				getConcerns().clear();
+				return;
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS:
+				getRepresentationKinds().clear();
+				return;
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				setContext((ArchitectureContext)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONCERNS:
+				return !getConcerns().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__REPRESENTATION_KINDS:
+				return !getRepresentationKinds().isEmpty();
+			case ArchitecturePackage.ARCHITECTURE_VIEWPOINT__CONTEXT:
+				return getContext() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArchitectureViewpointImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java
new file mode 100644
index 0000000..4d24b15
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/ConcernImpl.java
@@ -0,0 +1,193 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Concern</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.ConcernImpl#getDomain <em>Domain</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ConcernImpl extends ADElementImpl implements Concern {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConcernImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.CONCERN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDomain getDomain() {
+		return (ArchitectureDomain)eDynamicGet(ArchitecturePackage.CONCERN__DOMAIN, ArchitecturePackage.Literals.CONCERN__DOMAIN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDomain(ArchitectureDomain newDomain, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newDomain, ArchitecturePackage.CONCERN__DOMAIN, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDomain(ArchitectureDomain newDomain) {
+		eDynamicSet(ArchitecturePackage.CONCERN__DOMAIN, ArchitecturePackage.Literals.CONCERN__DOMAIN, newDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				if (eInternalContainer() != null) {
+					msgs = eBasicRemoveFromContainer(msgs);
+				}
+				return basicSetDomain((ArchitectureDomain)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				return basicSetDomain(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				return eInternalContainer().eInverseRemove(this, ArchitecturePackage.ARCHITECTURE_DOMAIN__CONCERNS, ArchitectureDomain.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				return getDomain();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				setDomain((ArchitectureDomain)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				setDomain((ArchitectureDomain)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.CONCERN__DOMAIN:
+				return getDomain() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ConcernImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java
new file mode 100644
index 0000000..0cc7fb8
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/RepresentationKindImpl.java
@@ -0,0 +1,261 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDescriptionLanguage;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Representation Kind</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.RepresentationKindImpl#getLanguage <em>Language</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.RepresentationKindImpl#getConcerns <em>Concerns</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.RepresentationKindImpl#getGrayedIcon <em>Grayed Icon</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class RepresentationKindImpl extends ADElementImpl implements RepresentationKind {
+	/**
+	 * The default value of the '{@link #getGrayedIcon() <em>Grayed Icon</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGrayedIcon()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String GRAYED_ICON_EDEFAULT = null;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepresentationKindImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.REPRESENTATION_KIND;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Concern> getConcerns() {
+		return (EList<Concern>)eDynamicGet(ArchitecturePackage.REPRESENTATION_KIND__CONCERNS, ArchitecturePackage.Literals.REPRESENTATION_KIND__CONCERNS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getGrayedIcon() {
+		return (String)eDynamicGet(ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON, ArchitecturePackage.Literals.REPRESENTATION_KIND__GRAYED_ICON, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setGrayedIcon(String newGrayedIcon) {
+		eDynamicSet(ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON, ArchitecturePackage.Literals.REPRESENTATION_KIND__GRAYED_ICON, newGrayedIcon);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDescriptionLanguage getLanguage() {
+		return (ArchitectureDescriptionLanguage)eDynamicGet(ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE, ArchitecturePackage.Literals.REPRESENTATION_KIND__LANGUAGE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLanguage(ArchitectureDescriptionLanguage newLanguage, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newLanguage, ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLanguage(ArchitectureDescriptionLanguage newLanguage) {
+		eDynamicSet(ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE, ArchitecturePackage.Literals.REPRESENTATION_KIND__LANGUAGE, newLanguage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				if (eInternalContainer() != null) {
+					msgs = eBasicRemoveFromContainer(msgs);
+				}
+				return basicSetLanguage((ArchitectureDescriptionLanguage)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				return basicSetLanguage(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				return eInternalContainer().eInverseRemove(this, ArchitecturePackage.ARCHITECTURE_DESCRIPTION_LANGUAGE__REPRESENTATION_KINDS, ArchitectureDescriptionLanguage.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				return getLanguage();
+			case ArchitecturePackage.REPRESENTATION_KIND__CONCERNS:
+				return getConcerns();
+			case ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON:
+				return getGrayedIcon();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				setLanguage((ArchitectureDescriptionLanguage)newValue);
+				return;
+			case ArchitecturePackage.REPRESENTATION_KIND__CONCERNS:
+				getConcerns().clear();
+				getConcerns().addAll((Collection<? extends Concern>)newValue);
+				return;
+			case ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON:
+				setGrayedIcon((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				setLanguage((ArchitectureDescriptionLanguage)null);
+				return;
+			case ArchitecturePackage.REPRESENTATION_KIND__CONCERNS:
+				getConcerns().clear();
+				return;
+			case ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON:
+				setGrayedIcon(GRAYED_ICON_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.REPRESENTATION_KIND__LANGUAGE:
+				return getLanguage() != null;
+			case ArchitecturePackage.REPRESENTATION_KIND__CONCERNS:
+				return !getConcerns().isEmpty();
+			case ArchitecturePackage.REPRESENTATION_KIND__GRAYED_ICON:
+				return GRAYED_ICON_EDEFAULT == null ? getGrayedIcon() != null : !GRAYED_ICON_EDEFAULT.equals(getGrayedIcon());
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //RepresentationKindImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java
new file mode 100644
index 0000000..fc8fce1
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.core.architecture.cdo/src/org/eclipse/papyrus/infra/core/architecture/cdo/StakeholderImpl.java
@@ -0,0 +1,221 @@
+/**
+* Copyright (c) 2017 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Maged Elaasar - Initial API and implementation
+ *
+ *
+ */
+package org.eclipse.papyrus.infra.core.architecture.cdo;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.core.architecture.ArchitectureDomain;
+import org.eclipse.papyrus.infra.core.architecture.ArchitecturePackage;
+import org.eclipse.papyrus.infra.core.architecture.Concern;
+import org.eclipse.papyrus.infra.core.architecture.Stakeholder;
+import org.eclipse.papyrus.infra.core.architecture.impl.ADElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stakeholder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.StakeholderImpl#getConcerns <em>Concerns</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.core.architecture.cdo.StakeholderImpl#getDomain <em>Domain</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StakeholderImpl extends ADElementImpl implements Stakeholder {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StakeholderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ArchitecturePackage.Literals.STAKEHOLDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Concern> getConcerns() {
+		return (EList<Concern>)eDynamicGet(ArchitecturePackage.STAKEHOLDER__CONCERNS, ArchitecturePackage.Literals.STAKEHOLDER__CONCERNS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ArchitectureDomain getDomain() {
+		return (ArchitectureDomain)eDynamicGet(ArchitecturePackage.STAKEHOLDER__DOMAIN, ArchitecturePackage.Literals.STAKEHOLDER__DOMAIN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDomain(ArchitectureDomain newDomain, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newDomain, ArchitecturePackage.STAKEHOLDER__DOMAIN, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDomain(ArchitectureDomain newDomain) {
+		eDynamicSet(ArchitecturePackage.STAKEHOLDER__DOMAIN, ArchitecturePackage.Literals.STAKEHOLDER__DOMAIN, newDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				if (eInternalContainer() != null) {
+					msgs = eBasicRemoveFromContainer(msgs);
+				}
+				return basicSetDomain((ArchitectureDomain)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				return basicSetDomain(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				return eInternalContainer().eInverseRemove(this, ArchitecturePackage.ARCHITECTURE_DOMAIN__STAKEHOLDERS, ArchitectureDomain.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__CONCERNS:
+				return getConcerns();
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				return getDomain();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__CONCERNS:
+				getConcerns().clear();
+				getConcerns().addAll((Collection<? extends Concern>)newValue);
+				return;
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				setDomain((ArchitectureDomain)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__CONCERNS:
+				getConcerns().clear();
+				return;
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				setDomain((ArchitectureDomain)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ArchitecturePackage.STAKEHOLDER__CONCERNS:
+				return !getConcerns().isEmpty();
+			case ArchitecturePackage.STAKEHOLDER__DOMAIN:
+				return getDomain() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //StakeholderImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.classpath b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.project b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.project
new file mode 100644
index 0000000..f997d05
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.project
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.infra.nattable.model.cdo</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>
+		<buildCommand>
+			<name>org.eclipse.oomph.version.VersionBuilder</name>
+			<arguments>
+				<dictionary>
+					<key>check.maven.pom</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>ignore.lower.bound.dependency.ranges</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>release.path</key>
+					<value>/org.eclipse.papyrus.releng.main.release/release.xml</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.oomph.version.VersionNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+	</natures>
+</projectDescription>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.resources.prefs b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..896a9a5
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
\ No newline at end of file
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.runtime.prefs b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.core.prefs b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..e622598
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,297 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.6
+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_lambda_body=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=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+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=260
+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=do not 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_after_type_annotation=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_lambda_arrow=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_lambda_arrow=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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=260
+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=5
+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/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.ui.prefs b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..ba7542e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=false
+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=true
+cleanup.remove_redundant_type_arguments=true
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+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\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\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 * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n *\n * Contributors\:\n *   CEA LIST - Initial API and implementation\n *   \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\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 *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\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\="true" 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\n${exception_var}.printStackTrace();</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=true
+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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_type_arguments=true
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.pde.api.tools.prefs b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..b2260f8
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,104 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+changed_execution_env=Warning
+eclipse.preferences.version=1
+incompatible_api_component_version=Warning
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Error
+incompatible_api_component_version_report_minor_without_api_change=Error
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/META-INF/MANIFEST.MF b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a8d997f
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.12.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
+ org.eclipse.papyrus.infra.types;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.papyrus.infra.emf.expressions;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
+ org.eclipse.papyrus.emf;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.cdo.ecore;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.infra.nattable.model;bundle-version="[4.2.0,5.0.0)"
+Export-Package: org.eclipse.papyrus.infra.nattable.model.cdo,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl,
+ org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 4.2.0.qualifier
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.infra.nattable.model.cdo.Activator
+Bundle-ManifestVersion: 2
+Bundle-Description: %pluginDescription
+Bundle-SymbolicName: org.eclipse.papyrus.infra.nattable.model.cdo;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.papyrus.infra.nattable.model.cdo
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/about.html b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/about.html
new file mode 100644
index 0000000..ef2872f
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/about.html
@@ -0,0 +1,28 @@
+<!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>November 30, 2017</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 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</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/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/build.properties b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/build.properties
new file mode 100644
index 0000000..7663594
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/build.properties
@@ -0,0 +1,23 @@
+# Copyright (c) 2013 CEA LIST.
+# 
+# 
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+# 
+# Contributors:
+# 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.html
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecore b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecore
new file mode 100644
index 0000000..9e60e12
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecore
@@ -0,0 +1,1098 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="nattable" nsURI="http://www.eclipse.org/papyrus/nattable/model"
+    nsPrefix="nattable">
+  <eAnnotations source="http://www.eclipse.org/OCL/Import">
+    <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore#/"/>
+  </eAnnotations>
+  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="Table" eSuperTypes="#//nattableconfiguration/TableNamedElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="constraints" value="currentRowAxisInHistory currentColumnAxisInHistory currentAxisProvidersTypes"/>
+    </eAnnotations>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+      <details key="currentRowAxisInHistory" value="rowAxisProvidersHistory->includes(currentRowAxisProvider)"/>
+      <details key="currentColumnAxisInHistory" value="columnAxisProvidersHistory->includes(currentColumnAxisProvider)"/>
+      <details key="currentAxisProvidersTypes" value="not (currentRowAxisProvider.oclIsKindOf(nattableaxisprovider::ISlaveAxisProvider) and currentColumnAxisProvider.oclIsKindOf(nattableaxisprovider::ISlaveAxisProvider))"/>
+    </eAnnotations>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This object represents the table. It is used to save the interesting informations of the graphical table.&#xD;&#xA;&#xD;&#xA;The currentAxisProviders can be : Master/Master, Master/Slave, Slave/Master and never Slave/Slave."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" lowerBound="1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The context is used for two things : &#xD;&#xA;&lt;ul> &lt;li>&quot;virtual&quot; parent to display the table in the Papyrus Model Explorer &lt;/li>&#xD;&#xA;&lt;li>container of the objects created in the table&lt;/li>&#xD;&#xA;&lt;/ul> &#xD;&#xA;The context can't be null;"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="prototype" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="tableConfiguration" lowerBound="1"
+        eType="#//nattableconfiguration/TableConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Reference the configuration used by the table. This field can't be null."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="invertAxis" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If true, the axis will be inverted on the screen. When the user inverts the axis, &#xD;&#xA;only this boolean is changed. We must not invert the currentRowAxis and the currentColumnAxis neither the histories or the AxisConfiguration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="columnAxisProvidersHistory"
+        lowerBound="1" upperBound="-1" eType="#//nattableaxisprovider/AbstractAxisProvider"
+        containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This list contains all the columns configurations already used by the user and saved in this list by him."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rowAxisProvidersHistory"
+        lowerBound="1" upperBound="-1" eType="#//nattableaxisprovider/AbstractAxisProvider"
+        containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This list contains all the rowsconfigurations already used by the user and saved in this list by him."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="localRowHeaderAxisConfiguration"
+        eType="#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration" containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This field contains the row headerAxisConfiguration. It could be null. &#xD;&#xA;In this case we use the row TableHeaderAxisConfiguration stored in the TableConfiguration of this table."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="localColumnHeaderAxisConfiguration"
+        eType="#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration" containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This field contains the columnheaderAxisConfiguration. It could be null. &#xD;&#xA;In this case we use the column TableHeaderAxisConfiguration stored in the TableConfiguration of this table."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="currentRowAxisProvider"
+        lowerBound="1" eType="#//nattableaxisprovider/AbstractAxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="References the current row AxisProvider used in the table.&#xD;&#xA;The value must be owned by rowAxisProviderHistory"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="currentColumnAxisProvider"
+        lowerBound="1" eType="#//nattableaxisprovider/AbstractAxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="References the current column AxisProvider used in the table.&#xD;&#xA;The value must be owned by column AxisProviderHistory"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cells" upperBound="-1"
+        eType="#//nattablecell/Cell" containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Cells of the table. They are used when the value to display can't be deduced of&#xD;&#xA;the intersection of the row and the column."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedCellEditorConfigurations"
+        eType="#//nattablecelleditor/ICellEditorConfiguration" containment="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="In some case (Matrix Table for example), the table can have celleditor configuration."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tableKindId" lowerBound="1"
+        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+  </eClassifiers>
+  <eSubpackages name="nattableconfiguration" nsURI="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration"
+      nsPrefix="nattableconfiguration">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+    </eAnnotations>
+    <eClassifiers xsi:type="ecore:EClass" name="TableNamedElement" abstract="true"
+        eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract Element used in this metamodel for named element which have a description."/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="constraints" value="nonEmptyName"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="nonEmptyName" value="not (name.oclIsUndefined() or name = '')"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The description of the named element."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The name of the named element."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TableConfiguration" eSuperTypes="#//nattableconfiguration/TableNamedElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="constraints" value="defaultRowAxisProviderExistsInCollection defaultColumnAxisProviderExistsInCollection defaultAxisProvidersTypes typeNonNullNonEmpty iconPath"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="defaultRowAxisProviderExistsInCollection" value="rowAxisProviders->includes(defaultRowAxisProvider)"/>
+        <details key="defaultColumnAxisProviderExistsInCollection" value="columnAxisProviders->includes(defaultColumnAxisProvider)"/>
+        <details key="typeNonNullNonEmpty" value="not (type.oclIsUndefined() or type = '')"/>
+        <details key="iconPath" value="not (iconPath.oclIsUndefined() or iconPath = '')"/>
+        <details key="defaultAxisProvidersTypes" value="not (defaultRowAxisProvider.oclIsKindOf(nattableaxisprovider::ISlaveAxisProvider) and defaultColumnAxisProvider.oclIsKindOf(nattableaxisprovider::ISlaveAxisProvider))"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This object is used to configure a table. To create a new type of table, you must create &#xD;&#xA;a new file *.nattableConfiguration and register it using the extension point org.eclipse.papyrus.infra.nattable.configuration&#xD;&#xA;&#xD;&#xA;the defaultAxisProviders can be : Master/Master, Master/Slave, Slave/Master and never Slave/Slave."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The type of the table. This value is used to be able to open/close easily the table editor in Papyrus. &#xD;&#xA;Moreover it allows to distinghuish easily the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconPath" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The path of the icon to use for the table which references this TableConfiguration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="creationTester" eType="#//nattabletester/AbstractTableTester"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value could be null. The tester is used to know if this tableConfiguration can be used&#xD;&#xA;to create a new table using as context the selected element."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellEditorDeclaration"
+          lowerBound="1" eType="#//nattableconfiguration/CellEditorDeclaration" defaultValueLiteral="COLUMN">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. Indicates how the CellEditor must be declared. &#xD;&#xA;In the common table, we display features as columns and objects as line. &#xD;&#xA;In this case the cell editors are specific to features, so the cell editor must be declared on the columns."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="rowHeaderAxisConfiguration"
+          lowerBound="1" eType="#//nattableaxisconfiguration/TableHeaderAxisConfiguration"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. Gives the initial row configuration of the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="columnHeaderAxisConfiguration"
+          lowerBound="1" eType="#//nattableaxisconfiguration/TableHeaderAxisConfiguration"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. Gives the initial column configuration of the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="columnAxisProviders"
+          lowerBound="1" upperBound="-1" eType="#//nattableaxisprovider/AbstractAxisProvider"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This list can't be empty. Contains list of possible column AxisProvider for the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="rowAxisProviders" lowerBound="1"
+          upperBound="-1" eType="#//nattableaxisprovider/AbstractAxisProvider" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This list can't be empty. Contains a list of possible row AxisProvider for the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="defaultRowAxisProvider"
+          lowerBound="1" eType="#//nattableaxisprovider/AbstractAxisProvider">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. References the Axis Provider to use by default for rows."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="defaultColumnAxisProvider"
+          lowerBound="1" eType="#//nattableaxisprovider/AbstractAxisProvider">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. References the Axis Provider to use by default for columns."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedCellEditorConfigurations"
+          eType="#//nattablecelleditor/ICellEditorConfiguration" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="In some case (Matrix Table for example), the table can have celleditor configuration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="CellEditorDeclaration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Indicates how the CellEditor must be declared. &#xD;&#xA;In the common table, we display features as columns and objects as line. &#xD;&#xA;In this case the cell editors are specific to features, so the cell editor must be declared on the columns."/>
+      </eAnnotations>
+      <eLiterals name="COLUMN"/>
+      <eLiterals name="ROW" value="1"/>
+      <eLiterals name="CELL" value="2"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattableaxisprovider" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider"
+      nsPrefix="nattableaxisprovider">
+    <eClassifiers xsi:type="ecore:EClass" name="AbstractAxisProvider" abstract="true"
+        eSuperTypes="#//nattableconfiguration/TableNamedElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract Element for the AxisProvider. This one only provides a method getAxis()."/>
+      </eAnnotations>
+      <eOperations name="getAxis" upperBound="-1" eType="#//nattableaxis/IAxis">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This method must returns the IAxis owned by the AxisProvider.&#xD;&#xA;Warning, in case of syncrhonized table, the list often will be empty. This method&#xD;&#xA;only returns the IAxis serialized in the model. Displayed elements are not necessary serialized.&#xD;&#xA;"/>
+        </eAnnotations>
+      </eOperations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IMasterAxisProvider" abstract="true"
+        interface="true" eSuperTypes="#//nattableaxisprovider/AxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Interface used to distinghuish master axis provider from slave axis provider. &#xD;&#xA;The master are able to disconnect the slave."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="disconnectSlave" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="if true, the slave won't be updated when the elements owned by the master will be changed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="sources" upperBound="-1"
+          eType="#//nattablewrapper/IWrapper" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field is used by Matrix Table. it replaces the context of the table as provider for the axis."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ISlaveAxisProvider" abstract="true"
+        interface="true" eSuperTypes="#//nattableaxisprovider/AxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Interface used to distinghuish the master from the slave axis provider."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AxisProvider" abstract="true" eSuperTypes="#//nattableaxisprovider/AbstractAxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="AbstractAxisProvider. This one owns IAxis"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axis" upperBound="-1"
+          eType="#//nattableaxis/IAxis" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="IAxis owned by the AxisProvider. The list can be empty in case of synchronized table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="SlaveObjectAxisProvider" eSuperTypes="#//nattableaxisprovider/ISlaveAxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Concret implementation of ISlaveAxisProvider"/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="MasterObjectAxisProvider" eSuperTypes="#//nattableaxisprovider/IMasterAxisProvider">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Concret implementation of IMasterAxisProvider"/>
+      </eAnnotations>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattablelabelprovider" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider"
+      nsPrefix="nattablelabelprovider">
+    <eClassifiers xsi:type="ecore:EClass" name="ILabelProviderConfiguration" abstract="true"
+        interface="true" eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common Interface for LabelProviderConfiguration"/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureLabelProviderConfiguration"
+        eSuperTypes="#//nattablelabelprovider/ObjectLabelProviderConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="LabelProviderConfiguration for Feature. In case of Feature. we have two display options : &#xD;&#xA;&lt;ul>&lt;li>display the icon of the feature &lt;/li> &#xD;&#xA;&lt;li>display the label of the feature &lt;/li>&#xD;&#xA;&lt;li>display the multiplicity of the feature &lt;/li>&#xD;&#xA;&lt;li>display the type of the feature &lt;/li>&#xD;&#xA;&lt;li>display the '/' for isDerived of the feature &lt;/li>&#xD;&#xA;&lt;li>display the name of the feature &lt;/li>&#xD;&#xA; &lt;/ul>"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayIsDerived" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the '/' for isDerived"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayType" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the typeof the feature"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayMultiplicity"
+          lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the multiplicity of the feature"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the name of the feature"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ObjectLabelProviderConfiguration"
+        eSuperTypes="#//nattablelabelprovider/ILabelProviderConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="LabelProviderConfiguration for Object. In case of Object we have two display options : &#xD;&#xA;&lt;ul>&lt;li>display the icon of the object&lt;/li> &#xD;&#xA;&lt;li>display the label of the object&lt;/li> &lt;/ul>"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayIcon" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the icon of the object"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayLabel" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, we will display the label of the object"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="OperationLabelProviderConfiguration"
+        eSuperTypes="#//nattablelabelprovider/ObjectLabelProviderConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="LabelProviderConfiguration for Operation. In case of Operation, we have four display options : &#xD;&#xA;&lt;ul>&lt;li>display the icon of the Operation&lt;/li> &#xD;&#xA;&lt;li>display the label of the Operation&lt;/li>&#xD;&#xA;&lt;li>display the multiplicity of the Operation&lt;/li>&#xD;&#xA;&lt;li>display the type of the Operation&lt;/li>&#xD;&#xA;&lt;li>display the '/' for isDerived of the feature &lt;/li>&#xD;&#xA;&lt;li>display the name of the feature &lt;/li>&#xD;&#xA; &lt;/ul>"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayType" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayMultiplicity"
+          lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattableaxisconfiguration" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration"
+      nsPrefix="nattableaxisconfiguration">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
+    </eAnnotations>
+    <eClassifiers xsi:type="ecore:EClass" name="AbstractHeaderAxisConfiguration" abstract="true"
+        eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract Class for the HeaderAxisConfiguration. This class provides : &#xD;&#xA;&lt;ul>&lt;li>informations on the appearance of the header&lt;/li>&#xD;&#xA;&lt;li> a list of label configuration which can be used by the header&lt;/li>&#xD;&#xA;&lt;li> a list of axisConfiguration. These axis configuration are used to provide the contents of the axis&lt;/li>&#xD;&#xA;&lt;/ul>"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="indexStyle" lowerBound="1"
+          eType="#//nattableaxisconfiguration/AxisIndexStyle">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. Indicates how to display the index of the Axis : using letter or using number."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayLabel" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, the label header will be displayed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayFilter" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="false">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true AND if the axisConfiguration is used as column, the row filter will be displayed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayIndex" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, the index header will be displayed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedLabelConfigurations"
+          upperBound="-1" eType="#//nattablelabelprovider/ILabelProviderConfiguration"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The list of the possible label configuration, referenced by the axis configuration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAxisConfigurations"
+          upperBound="-1" eType="#//nattableaxisconfiguration/IAxisConfiguration"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The list of the owned axis configuration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AxisManagerRepresentation" eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This class is used to represents in the model the java Axis Manager."/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="constraints" value="nonEmptyAxisManager"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="nonEmptyAxisManager" value="not (axisManagerId.oclIsUndefined() or axisManagerId = '')"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="axisManagerId" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This id allows to find the Java Axis Manager represented by this element.&#xD;&#xA;To find it you must use AxisManagerFactory.INSTANCE.getAxisManager(AxisManagerRepresentation)&#xD;&#xA;To register a Java Axis Manager,you must use the extension point  : org.eclipse.papyrus.infra.nattable.axismanager"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="labelProviderContext"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The context on which the label provider to use for this AxisManagerRepresentation are declared.&#xD;&#xA;(see the Papyrus Label Provider Service for further informations)"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="headerLabelConfiguration"
+          lowerBound="1" eType="#//nattablelabelprovider/ILabelProviderConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The label provider configuration to use for the header of the axis provided by the represented AxisManager"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="specificAxisConfigurations"
+          upperBound="-1" eType="#//nattableaxisconfiguration/IAxisConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="A list of specific configurations to use for this axis."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AxisManagerConfiguration" eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This object allows to define and configure a Java AxisManager"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="localHeaderLabelConfiguration"
+          eType="#//nattablelabelprovider/ILabelProviderConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Reference the local header label configuration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axisManager" lowerBound="1"
+          eType="#//nattableaxisconfiguration/AxisManagerRepresentation">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This value can't be null. the axis manager representation"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="localSpecificConfigurations"
+          upperBound="-1" eType="#//nattableaxisconfiguration/IAxisConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="specific configurations for the axis manager."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TableHeaderAxisConfiguration" eSuperTypes="#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+        <details key="constraints" value="axisManagersIdUnique"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="axisManagersIdUnique" value="axisManagers->forAll(am1 : AxisManagerRepresentation | ( (axisManagers->excluding (am1))->forAll(am2 : AxisManagerRepresentation | am1.axisManagerId&lt;>am2.axisManagerId) ))"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Defines the configuration of the axis in the TableConfiguration"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axisManagers" lowerBound="1"
+          upperBound="-1" eType="#//nattableaxisconfiguration/AxisManagerRepresentation"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This list can't be empty. The list of the AxisManager used to fill the axis."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LocalTableHeaderAxisConfiguration"
+        eSuperTypes="#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Define the configuration of the axis (rows or columns) in the table."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axisManagerConfigurations"
+          upperBound="-1" eType="#//nattableaxisconfiguration/AxisManagerConfiguration"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This list contains the configuration of the axis managers used in the table."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IAxisConfiguration" abstract="true"
+        interface="true" eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Comon Interface for axis configuration."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureAxisConfiguration" eSuperTypes="#//nattableaxisconfiguration/IAxisConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Configuration to use for Axis representing features"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="showOnlyCommonFeature"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, only the common features will be displayed on the axis."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IFillingConfiguration" abstract="true"
+        interface="true" eSuperTypes="#//nattableaxisconfiguration/IAxisConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Comon Interface for filling configurations."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeatureValueFillingConfiguration"
+        eSuperTypes="#//nattableaxisconfiguration/IFillingConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Configuration used to fill the table listening a feature of the context of the table"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="listenFeature" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field can't be null. References the feature of the context of the table to listen.&#xD;&#xA;It is possible that the context doesn't have this feature."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IPasteConfiguration" eSuperTypes="#//nattableaxisconfiguration/IAxisConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common Interface for the paste configuration."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="postActions" upperBound="-1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field references post actions, using a string to do during the paste, after the creation of the element. "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="detachedMode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="If true, the created elements will be added at the end of the paste and the set values&#xD;&#xA;won't be do using the service edit"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="PasteEObjectConfiguration" eSuperTypes="#//nattableaxisconfiguration/IPasteConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Configuration to use to paste EObject in the table."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="pastedElementId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The String representing the EClass of the elements to create (see papyrus services types for further information)"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="pasteElementContainementFeature"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field references the feature of the context of the table in which the created element will be added."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axisIdentifier" eType="#//nattableaxis/IAxis"
+          containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="AxisIndexStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Enumeration used to describe the possible style of the index of the headers."/>
+      </eAnnotations>
+      <eLiterals name="ALPHABETIC" value="1">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Index Headers count will be : A-B-C-...Y-Z-AA-AB-..."/>
+        </eAnnotations>
+      </eLiterals>
+      <eLiterals name="NUMERIC">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Index Headers count will be : 1-2-3-..."/>
+        </eAnnotations>
+      </eLiterals>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TreeFillingConfiguration" eSuperTypes="#//nattableaxisconfiguration/IFillingConfiguration">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="axisUsedAsAxisProvider"
+          lowerBound="1" eType="#//nattableaxis/IAxis" containment="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="pasteConfiguration" eType="#//nattableaxisconfiguration/PasteEObjectConfiguration"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depth" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="labelProvider" lowerBound="1"
+          eType="#//nattablelabelprovider/ILabelProviderConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="le label provider used to display string and image for this level in the tree"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="labelProviderContext"
+          lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="filterRule" eType="ecore:EClass ../../org.eclipse.papyrus.infra.emf.expressions/model/expressions.ecore#//booleanexpressions/IBooleanEObjectExpression"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field is used to filter the elements to show for this depth. &#xD;&#xA;Only element matching the filter will be returned."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattabletester" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattabletester"
+      nsPrefix="nattabletester">
+    <eClassifiers xsi:type="ecore:EClass" name="AbstractTableTester" abstract="true"
+        eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract class for the tester."/>
+      </eAnnotations>
+      <eOperations name="getTester" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Returns an object representing the tester"/>
+        </eAnnotations>
+      </eOperations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="JavaTableTester" eSuperTypes="#//nattabletester/AbstractTableTester">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This class allows to references a JavaTableTester. The Java class is declared with an id, using the extension point org.eclipse.papyrus.infra.nattable.tester.&#xD;&#xA;The field tester must be the id declared in this extension point."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="tester" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The id of the java tester declared using the extension point org.eclispe.papyrus.infra.nattable.tester"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattableaxis" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis"
+      nsPrefix="nattableaxis">
+    <eClassifiers xsi:type="ecore:EClass" name="IAxis" abstract="true" interface="true"
+        eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common interface for the axis of the table. (An axis is a specific row or a specific column)"/>
+      </eAnnotations>
+      <eOperations name="getElement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Returns the elements represented by the IAxis"/>
+        </eAnnotations>
+      </eOperations>
+      <eOperations name="getLocalLabelConfiguration" eType="#//nattablelabelprovider/ILabelProviderConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Returns the local label configuration to use for this IAxis. This configuration&#xD;&#xA;will override the label configuration defined in the AxisManagerConfiguration."/>
+        </eAnnotations>
+      </eOperations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//nattableaxisconfiguration/AxisManagerRepresentation">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field can't be null. Reference the axis manager providing this IAxis."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="An element can be displayed using an alias instead of its real name."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ITreeItemAxis" abstract="true" interface="true"
+        eSuperTypes="#//nattableaxis/IAxis">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//nattableaxis/ITreeItemAxis"
+          eOpposite="#//nattableaxis/ITreeItemAxis/children"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="expanded" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          transient="true" defaultValueLiteral="false"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+          eType="#//nattableaxis/ITreeItemAxis" derived="true" eOpposite="#//nattableaxis/ITreeItemAxis/parent"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IdAxis" abstract="true" eSuperTypes="#//nattableaxis/IAxis">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="element" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This obejct allows to reference an element using a string instead of referencing it directly."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IdTreeItemAxis" eSuperTypes="#//nattableaxis/IdAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectAxis" eSuperTypes="#//nattableaxis/ObjectAxis">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="element" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This IAxis allows to reference an EObject."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectTreeItemAxis" eSuperTypes="#//nattableaxis/EObjectAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureAxis" abstract="true" eSuperTypes="#//nattableaxis/IAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract class used to reference features."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="localLabelConfiguration"
+          eType="#//nattablelabelprovider/FeatureLabelProviderConfiguration" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Returns the local label configuration to use for this IAxis. This configuration&#xD;&#xA;will override the label configuration defined in the AxisManagerConfiguration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="OperationAxis" abstract="true" eSuperTypes="#//nattableaxis/IAxis">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="localLabelConfiguration"
+          eType="#//nattablelabelprovider/OperationLabelProviderConfiguration" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureTreeItemAxis" abstract="true"
+        eSuperTypes="#//nattableaxis/FeatureAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="OperationTreeItemAxis" abstract="true"
+        eSuperTypes="#//nattableaxis/OperationAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ObjectAxis" abstract="true" eSuperTypes="#//nattableaxis/IAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abstract class used to reference object"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="localLabelConfiguration"
+          eType="#//nattablelabelprovider/ObjectLabelProviderConfiguration" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Returns the local label configuration to use for this IAxis. This configuration&#xD;&#xA;will override the label configuration defined in the AxisManagerConfiguration."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ObjectTreeItemAxis" abstract="true"
+        eSuperTypes="#//nattableaxis/ObjectAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureIdAxis" eSuperTypes="#//nattableaxis/IdAxis #//nattableaxis/FeatureAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="IAxis used to represent feature using a string."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="FeatureIdTreeItemAxis" eSuperTypes="#//nattableaxis/FeatureIdAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeatureAxis" eSuperTypes="#//nattableaxis/FeatureAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="IAxis used to reference EMF EStructuralFeature."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="element" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStructuralFeature">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The represented EStructuralFeature."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EOperationAxis" eSuperTypes="#//nattableaxis/OperationAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="IAxis used to reference EMF EOperation."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="element" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EOperation"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeatureTreeItemAxis" eSuperTypes="#//nattableaxis/EStructuralFeatureAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="EOperationTreeItemAxis" eSuperTypes="#//nattableaxis/EOperationAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ObjectIdAxis" eSuperTypes="#//nattableaxis/IdAxis #//nattableaxis/ObjectAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="IAxis used to represent object using a string."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ObjectIdTreeItemAxis" eSuperTypes="#//nattableaxis/ObjectIdAxis #//nattableaxis/ITreeItemAxis"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AxisGroup" eSuperTypes="#//nattableaxis/IAxis">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="groupedAxis" upperBound="-1"
+          eType="#//nattableaxis/IAxis"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="OperationIdAxis" eSuperTypes="#//nattableaxis/IdAxis #//nattableaxis/OperationAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="IAxis used to represent operation using a string."/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="OperationIdTreeItemAxis" eSuperTypes="#//nattableaxis/ITreeItemAxis #//nattableaxis/OperationIdAxis">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="ITreeItemAxis used to represent operation using a string."/>
+      </eAnnotations>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattablecell" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattablecell"
+      nsPrefix="nattablecell">
+    <eClassifiers xsi:type="ecore:EClass" name="Cell" eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Cell elements used to store specific information which can't be stored in the edited model"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="columnWrapper" lowerBound="1"
+          eType="#//nattablecell/ICellAxisWrapper" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The column element on which this cell must be displayed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="rowWrapper" lowerBound="1"
+          eType="#//nattablecell/ICellAxisWrapper" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The row element on which this cell must be displayed."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="problems" upperBound="-1"
+          eType="#//nattableproblem/Problem" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="a list of problem founds on this cell"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ICellAxisWrapper" abstract="true"
+        interface="true" eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This class encapsulates the real axis object."/>
+      </eAnnotations>
+      <eOperations name="getElement" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="Return the wrapped object"/>
+        </eAnnotations>
+      </eOperations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectAxisWrapper" eSuperTypes="#//nattablecell/ICellAxisWrapper">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Wrapper for EObject"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="element" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The wrapped element"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IdAxisWrapper" eSuperTypes="#//nattablecell/ICellAxisWrapper">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Wrapper for Id"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="element" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The id used to identifies an element."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattableproblem" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattableproblem"
+      nsPrefix="nattableproblem">
+    <eClassifiers xsi:type="ecore:EClass" name="Problem" eSuperTypes="#//nattableconfiguration/TableNamedElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A problem"/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="StringResolutionProblem" eSuperTypes="#//nattableproblem/Problem">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This kind of problem is used when the user set a value as a text in a Cell and the system can't convert this string value into the correct type"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueAsString" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The text which is the source of the problem"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="unresolvedString" lowerBound="1"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="the text or a substring of it, which is the source of the problem"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattablestyle" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattablestyle"
+      nsPrefix="nattablestyle">
+    <eClassifiers xsi:type="ecore:EClass" name="Style" abstract="true" interface="true"
+        eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Style from which all substyles originate"/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="NamedStyle" eSuperTypes="#//nattablestyle/Style">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="used to represent character and paragraph styles"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="CellTextAlignment">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Alignment of the text inside its cell"/>
+      </eAnnotations>
+      <eLiterals name="TOP_LEFT" value="1" literal="TOP_LEFT"/>
+      <eLiterals name="TOP_CENTER" value="2" literal="TOP_CENTER"/>
+      <eLiterals name="TOP_RIGHT" value="3" literal="TOP_RIGHT"/>
+      <eLiterals name="MIDDLE_LEFT" value="4" literal="MIDDLE_LEFT"/>
+      <eLiterals name="MIDDLE_CENTER" value="5" literal="MIDDLE_CENTER"/>
+      <eLiterals name="MIDDLE_RIGHT" value="6" literal="MIDDLE_RIGHT"/>
+      <eLiterals name="BOTTOM_LEFT" value="7" literal="BOTTOM_LEFT"/>
+      <eLiterals name="BOTTOM_CENTER" value="8" literal="BOTTOM_CENTER"/>
+      <eLiterals name="BOTTOM_RIGHT" value="9" literal="BOTTOM_RIGHT"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="FontStyle" eSuperTypes="#//nattablestyle/Style">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Font style of the cell's text"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+          defaultValueLiteral="0"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+          defaultValueLiteral="Tahoma"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontHeight" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+          defaultValueLiteral="9"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bold" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="false"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="italic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="false"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="underline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="false"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="strikeThrough" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+          defaultValueLiteral="false"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CellTextStyle" eSuperTypes="#//nattablestyle/Style">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Text representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alignment" eType="#//nattablestyle/CellTextAlignment"
+          defaultValueLiteral="MIDDLE_LEFT"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IntValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Int representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="intValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IntListValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Int lists representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="intListValue" unique="false"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BooleanValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Boolean representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BooleanListValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Boolean lists representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanListValue" unique="false"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="DoubleValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Double representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="DoubleListValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Double lists representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleListValue" unique="false"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="StringValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="String representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="StringListValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="String lists representation"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringListValue" unique="false"
+          upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="StyledElement" abstract="true" eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+      <eOperations name="getNamedStyle" eType="#//nattablestyle/NamedStyle">
+        <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+        <eParameters name="name" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+      </eOperations>
+      <eOperations name="getStyle" eType="#//nattablestyle/Style">
+        <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+      </eOperations>
+      <eOperations name="createStyle" eType="#//nattablestyle/Style">
+        <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+      </eOperations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="styles" upperBound="-1"
+          eType="#//nattablestyle/Style" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TableDisplayStyle" eSuperTypes="#//nattablestyle/Style">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayStyle" lowerBound="1"
+          eType="#//nattablestyle/DisplayStyle" defaultValueLiteral="NORMAL"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="DisplayStyle">
+      <eLiterals name="NORMAL" literal="NORMAL"/>
+      <eLiterals name="HIERARCHIC_SINGLE_TREE_COLUMN" value="1" literal="HIERARCHIC_SINGLE_TREE_COLUMN"/>
+      <eLiterals name="HIERARCHIC_MULTI_TREE_COLUMN" value="2" literal="HIERARCHIC_MULTI_TREE_COLUMN"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectValue" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectListValueStyle" eSuperTypes="#//nattablestyle/NamedStyle">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectValue" upperBound="-1"
+          eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattablecelleditor" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattablecelleditor"
+      nsPrefix="nattablecelleditor">
+    <eClassifiers xsi:type="ecore:EClass" name="ICellEditorConfiguration" abstract="true"
+        interface="true" eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common interface for all cell editor configuration."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="cellEditorId" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+          iD="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The id of the celleditor."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GenericRelationshipMatrixCellEditorConfiguration"
+        eSuperTypes="#//nattablecelleditor/IMatrixCellEditorConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Concret implementation of IMatrixRelationshipCellEditorConfiguration"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//nattablecelleditor/MatrixRelationShipDirection"
+          defaultValueLiteral="FROM_ROW_TO_COLUMN"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="cellContentsFilter" eType="ecore:EClass ../../org.eclipse.papyrus.infra.emf.expressions/model/expressions.ecore#//booleanexpressions/IBooleanEObjectExpression"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field allows to the user to filter the contents of the cells."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="editedElement" eType="ecore:EClass ../../org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.ecore#//ElementTypeConfiguration">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field allows to define the kind of element to edit in the cell."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="relationshipOwnerStrategy"
+          lowerBound="1" eType="#//nattablecelleditor/MatrixRelationShipOwnerStrategy"
+          defaultValueLiteral="DEFAULT">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field is used to define the owner of relationships created editing the matrix."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="relationshipOwner" eType="#//nattablewrapper/IWrapper"
+          containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field is used only when the relationshipOwnerStrategy is set to Other."/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="relationshipOwnerFeature"
+          eType="#//nattableaxis/IAxis" containment="true">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This field is used only when the relationshipOwnerStrategy is set to Other.&#xD;&#xA;It will be used, if required, to define the feature in the relationshipOwner which will owns the created relationship"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="MatrixRelationShipDirection">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This Enumeration is used to define the direction of the relationship to display in the cell. &#xD;&#xA;In case of directed relationship and NONE selected, the cell won't be editable.&#xD;&#xA;In case of non directed relationship and a direction selected, we will use get(0) and get(1) to define a fake orientation."/>
+      </eAnnotations>
+      <eLiterals name="NONE" literal="NONE"/>
+      <eLiterals name="FROM_ROW_TO_COLUMN" value="1" literal="FROM_ROW_TO_COLUMN"/>
+      <eLiterals name="FROM_COLUMN_TO_ROW" value="2" literal="FROM_COLUMN_TO_ROW"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="MatrixRelationShipOwnerStrategy">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This Enumeration is used to define the owner of relationships created editing the matrix."/>
+      </eAnnotations>
+      <eLiterals name="DEFAULT" literal="DEFAULT"/>
+      <eLiterals name="TABLE_CONTEXT" value="1" literal="TABLE_CONTEXT"/>
+      <eLiterals name="ROW_OWNER" value="2" literal="ROW_OWNER"/>
+      <eLiterals name="ROW_AS_OWNER" value="3" literal="ROW_AS_OWNER"/>
+      <eLiterals name="COLUMN_OWNER" value="4" literal="COLUMN_OWNER"/>
+      <eLiterals name="COLUMN_AS_OWNER" value="5" literal="COLUMN_AS_OWNER"/>
+      <eLiterals name="OTHER" value="6" literal="OTHER"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IMatrixCellEditorConfiguration" abstract="true"
+        interface="true" eSuperTypes="#//nattablecelleditor/ICellEditorConfiguration">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common interface for all Matrix cell editor."/>
+      </eAnnotations>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="nattablewrapper" nsURI="http://www.eclipse.org/papyrus/nattable/model/table/nattablewrapper"
+      nsPrefix="nattablewrapper">
+    <eClassifiers xsi:type="ecore:EClass" name="IWrapper" abstract="true" interface="true"
+        eSuperTypes="#//nattablestyle/StyledElement">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Common interface for all wrapped. The wrapper is used to be able to reference an&#xD;&#xA;object which is not necessary an EObject. In this case, it could be referenced by as string."/>
+      </eAnnotations>
+      <eOperations name="getElement" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="This method returns the wrapped element, but without solving it."/>
+        </eAnnotations>
+      </eOperations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObjectWrapper" eSuperTypes="#//nattablewrapper/IWrapper">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This class allows to wrap EObject."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="element" lowerBound="1"
+          eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IdWrapper" eSuperTypes="#//nattablewrapper/IWrapper">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This class allows to reference an object identified by a string."/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="element" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="The wrapped element is referenced by a String"/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecorediag b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecorediag
new file mode 100644
index 0000000..24a6bd5
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.ecorediag
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_UypeIJewEeKr0Yypv4rfLA" type="EcoreTools" name="nattable.ecorediag" measurementUnit="Pixel">
+  <children xmi:type="notation:Node" xmi:id="_EfChwKHtEeKNUa7kbzEWsw" type="1005">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA4KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA4aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMSwKHtEeKNUa7kbzEWsw" type="4010"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMSwaHtEeKNUa7kbzEWsw" type="5008">
+      <children xmi:type="notation:Node" xmi:id="_hJG1UqH0EeKNUa7kbzEWsw" type="2006">
+        <element xmi:type="ecore:EEnumLiteral" href="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle/ALPHABETIC"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hJG1U6H0EeKNUa7kbzEWsw"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_hJG1UKH0EeKNUa7kbzEWsw" type="2006">
+        <element xmi:type="ecore:EEnumLiteral" href="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle/NUMERIC"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hJG1UaH0EeKNUa7kbzEWsw"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMSwqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMSw6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMSxKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfChwaHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EEnum" href="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfChwqHtEeKNUa7kbzEWsw" x="10" y="910"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMSxaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA4qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA46HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMSyKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMSyaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMSyqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMSy6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMSzKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfMSzaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMSzqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMSz6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMS0KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMSxqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/EStructuralFeatureAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMSx6HtEeKNUa7kbzEWsw" x="1010" y="1430" width="183"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMS3aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA5qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA56HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMS4KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMS4aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMS4qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMS46HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMS5KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfMS5aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMS5qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMS56HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMS6KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMS3qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/IAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMS36HtEeKNUa7kbzEWsw" x="1400" y="1255"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMS6aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA6KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA6aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMS7KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMS7aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMS7qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMS76HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMS8KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfMS8aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMS8qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMS86HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMS9KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMS6qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/AbstractAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMS66HtEeKNUa7kbzEWsw" x="2085" y="590" width="298" height="143"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMTDaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA7qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA76HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMTEKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMTEaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMTEqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMTE6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMTFKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfMTFaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMTFqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMTF6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMTGKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMTDqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/TableHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMTD6HtEeKNUa7kbzEWsw" x="1890" y="160"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMTGaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA8KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA8aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfMTHKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfMTHaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMTHqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMTH6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMTIKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfMTIaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfMTIqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfMTI6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfMTJKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMTGqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMTG6HtEeKNUa7kbzEWsw" x="295" y="1255"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfMTJaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA8qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA86HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVcsKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVcsaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVcsqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVcs6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVctKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVctaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVctqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVct6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVcuKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfMTJqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattablelabelprovider/ObjectLabelProviderConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfMTJ6HtEeKNUa7kbzEWsw" x="415" y="925"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVcuaHtEeKNUa7kbzEWsw" type="1005">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA9KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA9aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVcvKHtEeKNUa7kbzEWsw" type="4010"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVcvaHtEeKNUa7kbzEWsw" type="5008">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVcvqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVcv6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVcwKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVcuqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EEnum" href="nattable.ecore#//nattableconfiguration/CellEditorDeclaration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVcu6HtEeKNUa7kbzEWsw" x="15" y="750"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVczaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA-KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA-aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVc0KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVc0aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc0qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc06HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc1KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVc1aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc1qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc16HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc2KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVczqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVcz6HtEeKNUa7kbzEWsw" x="1315" y="395"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVc2aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA-qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA-6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVc3KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVc3aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc3qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc36HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc4KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVc4aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc4qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc46HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc5KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVc2qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/EObjectAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVc26HtEeKNUa7kbzEWsw" x="1595" y="1595"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVc5aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA_KHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA_aHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVc6KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVc6aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc6qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc66HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc7KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVc7aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc7qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc76HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc8KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVc5qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattabletester/JavaTableTester"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVc56HtEeKNUa7kbzEWsw" x="2400" y="465"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVc8aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGA_qHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGA_6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVc9KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVc9aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc9qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc96HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc-KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVc-aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVc-qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVc-6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVc_KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVc8qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVc86HtEeKNUa7kbzEWsw" x="850" y="400" width="228" height="88"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVc_aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBAKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBAaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVdAKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVdAaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVdAqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVdA6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVdBKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVdBaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVdBqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVdB6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVdCKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVc_qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/ObjectAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVc_6HtEeKNUa7kbzEWsw" x="1605" y="1435"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVdCaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBAqHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBA6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EfVdDKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EfVdDaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVdDqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVdD6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVdEKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EfVdEaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EfVdEqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EfVdE6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EfVdFKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVdCqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVdC6HtEeKNUa7kbzEWsw" x="1425" y="610"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EfVdLaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBCKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBCaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffNsKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffNsaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffNsqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffNs6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffNtKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffNtaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffNtqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffNt6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffNuKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EfVdLqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/IAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfVdL6HtEeKNUa7kbzEWsw" x="80" y="355" height="93"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffNxaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBDKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBDaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffNyKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffNyaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffNyqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffNy6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffNzKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffNzaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffNzqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffNz6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN0KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffNxqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/FeatureIdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffNx6HtEeKNUa7kbzEWsw" x="1255" y="1595"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffN3aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBEKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBEaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffN4KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffN4aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN4qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN46HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN5KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffN5aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN5qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN56HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN6KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffN3qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/ObjectIdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffN36HtEeKNUa7kbzEWsw" x="1425" y="1595"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffN6aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBEqHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBE6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffN7KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffN7aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN7qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN76HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN8KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffN8aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN8qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN86HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN9KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffN6qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/FeatureAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffN66HtEeKNUa7kbzEWsw" x="1245" y="1435"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffN9aHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBFKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBFaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffN-KHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffN-aHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN-qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN-6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffN_KHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffN_aHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffN_qHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffN_6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOAKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffN9qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/IdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffN96HtEeKNUa7kbzEWsw" x="1415" y="1435"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffOAaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBFqHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBF6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffOBKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffOBaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOBqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOB6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOCKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffOCaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOCqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOC6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffODKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffOAqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/FeatureAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffOA6HtEeKNUa7kbzEWsw" x="55" y="560"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffODaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBGKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBGaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffOEKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffOEaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOEqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOE6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOFKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffOFaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOFqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOF6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOGKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffODqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattabletester/AbstractTableTester"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffOD6HtEeKNUa7kbzEWsw" x="2415" y="300" width="208"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffOJaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBHKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBHaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffOKKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffOKaHtEeKNUa7kbzEWsw" type="5001">
+      <children xmi:type="notation:Node" xmi:id="_hJZwTqH0EeKNUa7kbzEWsw" type="2001">
+        <element xmi:type="ecore:EAttribute" href="nattable.ecore#//nattableconfiguration/TableNamedElement/description"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hJZwT6H0EeKNUa7kbzEWsw"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_hJZwTKH0EeKNUa7kbzEWsw" type="2001">
+        <element xmi:type="ecore:EAttribute" href="nattable.ecore#//nattableconfiguration/TableNamedElement/name"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hJZwTaH0EeKNUa7kbzEWsw"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOKqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOK6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOLKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffOLaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOLqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOL6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOMKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffOJqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableconfiguration/TableNamedElement"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffOJ6HtEeKNUa7kbzEWsw" x="2550" y="140"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffOMaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBHqHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBH6HtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffONKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffONaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffONqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffON6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOOKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffOOaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOOqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOO6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOPKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffOMqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/AxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffOM6HtEeKNUa7kbzEWsw" x="1455" y="765"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_EffOPaHtEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EkGBIKHtEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EkGBIaHtEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_EffOQKHtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_EffOQaHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffOQqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOQ6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffORKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EffORaHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_EffORqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_EffOR6HtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_EffOSKHtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_EffOPqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableconfiguration/TableConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EffOP6HtEeKNUa7kbzEWsw" x="2585" y="565" height="187"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_Ek_YwKHtEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_Ek_Yw6HtEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_Ek_YxKHtEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_Ek_YxaHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_Ek_YxqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_Ek_Yx6HtEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Ek_YyKHtEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_Ek_YyaHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_Ek_YyqHtEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_Ek_Yy6HtEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_Ek_YwaHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//Table"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ek_YwqHtEeKNUa7kbzEWsw" x="2535" y="1080" height="146"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_rlVcQKH3EeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rlyIMKH3EeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rlyIMaH3EeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_rlVcQ6H3EeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_rlVcRKH3EeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_rlVcRaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_rlVcRqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_rlVcR6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_rlVcSKH3EeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_rlVcSaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_rlVcSqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_rlVcS6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_rlVcQaH3EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rlVcQqH3EeKNUa7kbzEWsw" x="785" y="1080"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_xjigEKH3EeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xklB4KH3EeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xklB4aH3EeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_xjigE6H3EeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_xjigFKH3EeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjigFaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjigFqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjigF6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_xjigGKH3EeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjigGaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjigGqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjigG6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_xjigEaH3EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/MasterObjectAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xjigEqH3EeKNUa7kbzEWsw" x="1510" y="1170"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_xjigHKH3EeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xklB4qH3EeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xklB46H3EeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_xjigH6H3EeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_xjigIKH3EeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjigIaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjigIqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjigI6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_xjigJKH3EeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjigJaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjigJqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjigJ6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_xjigHaH3EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/SlaveObjectAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xjigHqH3EeKNUa7kbzEWsw" x="1730" y="1170"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_xjrqDKH3EeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xklB6KH3EeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xklB6aH3EeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_xjrqD6H3EeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_xjrqEKH3EeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjrqEaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjrqEqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjrqE6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_xjrqFKH3EeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjrqFaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjrqFqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjrqF6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_xjrqDaH3EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/IMasterAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xjrqDqH3EeKNUa7kbzEWsw" x="1505" y="965"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_xjrqJKH3EeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xklB7KH3EeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xklB7aH3EeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_xjrqJ6H3EeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_xjrqKKH3EeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjrqKaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjrqKqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjrqK6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_xjrqLKH3EeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_xjrqLaH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_xjrqLqH3EeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_xjrqL6H3EeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_xjrqJaH3EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/ISlaveAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xjrqJqH3EeKNUa7kbzEWsw" x="1735" y="965"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_UypeIZewEeKr0Yypv4rfLA"/>
+  <element xmi:type="ecore:EPackage" href="nattable.ecore#/"/>
+  <edges xmi:type="notation:Edge" xmi:id="_EghvgKHtEeKNUa7kbzEWsw" type="3003" source="_EfMSxaHtEeKNUa7kbzEWsw" target="_EffN6aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EghvgaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EghvgqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eghvg6HtEeKNUa7kbzEWsw" points="[4, 9, -119, -33]$[92, 9, -31, -33]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8EqHtEeKNUa7kbzEWsw" id="(0.9731543624161074,0.36666666666666664)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8E6HtEeKNUa7kbzEWsw" id="(0.2882882882882883,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrghKHtEeKNUa7kbzEWsw" type="3002" source="_EffOMaHtEeKNUa7kbzEWsw" target="_EfMS3aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EgrgiKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EgrgiaHtEeKNUa7kbzEWsw" x="8" y="53"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EgrgiqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Egrgi6HtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrghaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrghqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisprovider/AxisProvider/axis"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgh6HtEeKNUa7kbzEWsw" points="[4, 58, -32, -432]$[36, 490, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGDaHtEeKNUa7kbzEWsw" id="(0.18633540372670807,0.9666666666666667)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGDqHtEeKNUa7kbzEWsw" id="(0.22849462365591397,0.08602150537634409)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgjKHtEeKNUa7kbzEWsw" type="3003" source="_EffN9aHtEeKNUa7kbzEWsw" target="_EfMS3aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgjaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgjqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgj6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 94]$[0, -94, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGCaHtEeKNUa7kbzEWsw" id="(0.49612403100775193,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGCqHtEeKNUa7kbzEWsw" id="(0.21739130434782608,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgkKHtEeKNUa7kbzEWsw" type="3003" source="_EffN6aHtEeKNUa7kbzEWsw" target="_EfMS3aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgkaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgkqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgk6HtEeKNUa7kbzEWsw" points="[0, 0, -112, 94]$[0, -30, -112, 64]$[112, -30, 0, 64]$[112, -94, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8BKHtEeKNUa7kbzEWsw" id="(0.7477477477477478,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8BaHtEeKNUa7kbzEWsw" id="(0.10869565217391304,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrglKHtEeKNUa7kbzEWsw" type="3003" source="_EfVc_aHtEeKNUa7kbzEWsw" target="_EfMS3aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrglaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrglqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgl6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 94]$[0, -94, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8FKHtEeKNUa7kbzEWsw" id="(0.4954954954954955,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8FaHtEeKNUa7kbzEWsw" id="(0.7065217391304348,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgmKHtEeKNUa7kbzEWsw" type="3003" source="_EfMS6aHtEeKNUa7kbzEWsw" target="_EffOJaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgmaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgmqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgm6HtEeKNUa7kbzEWsw" points="[1, 0, -282, 442]$[1, -483, -282, -41]$[243, -483, -40, -41]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8CqHtEeKNUa7kbzEWsw" id="(0.7515527950310559,0.014705882352941176)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8C6HtEeKNUa7kbzEWsw" id="(0.2469879518072289,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgnKHtEeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EgrgoKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EgrgoaHtEeKNUa7kbzEWsw" x="-93" y="24"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EgrgoqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Egrgo6HtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgnaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgnqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/columnAxisProviders"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgn6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 111]$[0, -111, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8IKHtEeKNUa7kbzEWsw" id="(0.021052631578947368,0.29411764705882354)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8IaHtEeKNUa7kbzEWsw" id="(0.9295302013422819,0.14685314685314685)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgpKHtEeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EgrgqKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EgrgqaHtEeKNUa7kbzEWsw" x="-93" y="15"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EgrgqqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Egrgq6HtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgpaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgpqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/rowAxisProviders"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgp6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 111]$[0, -111, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8FqHtEeKNUa7kbzEWsw" id="(0.017543859649122806,0.42780748663101603)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8F6HtEeKNUa7kbzEWsw" id="(0.9362416107382551,0.3776223776223776)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgrKHtEeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EgrgsKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EgrgsaHtEeKNUa7kbzEWsw" x="-56" y="-20"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EgrgsqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Egrgs6HtEeKNUa7kbzEWsw" x="23" y="-20"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgraHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgrqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/defaultRowAxisProvider"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgr6HtEeKNUa7kbzEWsw" points="[-3, -19, 71, 510]$[-73, -523, 1, 6]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8GqHtEeKNUa7kbzEWsw" id="(0.04912280701754386,0.7549019607843137)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8G6HtEeKNUa7kbzEWsw" id="(0.9832214765100671,0.7972027972027972)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EgrgtKHtEeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EgrguKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EgrguaHtEeKNUa7kbzEWsw" x="-81" y="12"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EgrguqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Egrgu6HtEeKNUa7kbzEWsw" x="7" y="12"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EgrgtaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EgrgtqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/defaultColumnAxisProvider"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Egrgt6HtEeKNUa7kbzEWsw" points="[0, -3, 27, 510]$[-27, -507, 0, 6]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8HKHtEeKNUa7kbzEWsw" id="(0.0,0.6203208556149733)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8HaHtEeKNUa7kbzEWsw" id="(0.9563758389261745,0.6363636363636364)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Eg0qcKHtEeKNUa7kbzEWsw" type="3003" source="_EffOMaHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eg0qcaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Eg0qcqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eg0qc6HtEeKNUa7kbzEWsw" points="[0, 0, 31, 155]$[0, -69, 31, 86]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGD6HtEeKNUa7kbzEWsw" id="(0.6645962732919255,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGEKHtEeKNUa7kbzEWsw" id="(0.10067114093959731,0.3916083916083916)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Eg0qjKHtEeKNUa7kbzEWsw" type="3003" source="_EfMTDaHtEeKNUa7kbzEWsw" target="_EfVdCaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eg0qjaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Eg0qjqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eg0qj6HtEeKNUa7kbzEWsw" points="[13, 8, 198, -412]$[13, 130, 198, -290]$[-161, 130, 24, -290]$[-161, 405, 24, -15]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGA6HtEeKNUa7kbzEWsw" id="(0.36180904522613067,0.8666666666666667)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGBKHtEeKNUa7kbzEWsw" id="(0.7115384615384616,0.13445378151260504)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Eg-bfKHtEeKNUa7kbzEWsw" type="3003" source="_EfMTGaHtEeKNUa7kbzEWsw" target="_EfMTJaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eg-bfaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Eg-bfqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eg-bf6HtEeKNUa7kbzEWsw" points="[-53, 0, -81, 264]$[-53, -288, -81, -24]$[9, -288, -19, -24]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzF96HtEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzF-KHtEeKNUa7kbzEWsw" id="(0.091324200913242,0.8)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Eg-bgKHtEeKNUa7kbzEWsw" type="3002" source="_EffN6aHtEeKNUa7kbzEWsw" target="_EfMTGaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_Eg-bhKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Eg-bhaHtEeKNUa7kbzEWsw" x="-12" y="-83"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Eg-bhqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Eg-bh6HtEeKNUa7kbzEWsw" x="-32" y="-37"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eg-bgaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Eg-bgqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/FeatureAxis/localLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eg-bg6HtEeKNUa7kbzEWsw" points="[-9, 58, 813, 121]$[-9, 95, 813, 158]$[-822, 95, 0, 158]$[-822, -63, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8BqHtEeKNUa7kbzEWsw" id="(0.4954954954954955,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8B6HtEeKNUa7kbzEWsw" id="(0.8214285714285714,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Eg-bjKHtEeKNUa7kbzEWsw" type="3002" source="_EfVc_aHtEeKNUa7kbzEWsw" target="_EfMTJaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_Eg-bkKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Eg-bkaHtEeKNUa7kbzEWsw" x="84" y="84"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Eg-bkqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Eg-bk6HtEeKNUa7kbzEWsw" x="44" y="15"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eg-bjaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Eg-bjqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/ObjectAxis/localLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eg-bj6HtEeKNUa7kbzEWsw" points="[0, 0, 1127, 427]$[0, -45, 1127, 382]$[-1136, -45, -9, 382]$[-1136, -427, -9, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGGaHtEeKNUa7kbzEWsw" id="(0.7477477477477478,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGGqHtEeKNUa7kbzEWsw" id="(0.6666666666666666,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhHlYKHtEeKNUa7kbzEWsw" type="3002" source="_EfVczaHtEeKNUa7kbzEWsw" target="_EfVc8aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EhHlZKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EhHlZaHtEeKNUa7kbzEWsw" x="-42" y="-89"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EhHlZqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EhHlZ6HtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhHlYaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhHlYqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration/axisManagerConfigurations"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhHlY6HtEeKNUa7kbzEWsw" points="[-12, 1, 286, -14]$[-261, 13, 37, -2]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8AKHtEeKNUa7kbzEWsw" id="(0.056768558951965066,0.8)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8AaHtEeKNUa7kbzEWsw" id="(0.8947368421052632,0.5568181818181818)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhHlaKHtEeKNUa7kbzEWsw" type="3003" source="_EfVczaHtEeKNUa7kbzEWsw" target="_EfVdCaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhHlaaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhHlaqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhHla6HtEeKNUa7kbzEWsw" points="[0, 0, -255, 239]$[0, -209, -255, 30]$[255, -209, 0, 30]$[255, -239, 0, 0]"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGHKHtEeKNUa7kbzEWsw" id="(0.3317307692307692,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhHlbKHtEeKNUa7kbzEWsw" type="3003" source="_EfVc2aHtEeKNUa7kbzEWsw" target="_EfVc_aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhHlbaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhHlbqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhHlb6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 102]$[0, -102, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzF9aHtEeKNUa7kbzEWsw" id="(0.4954954954954955,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzF9qHtEeKNUa7kbzEWsw" id="(0.4144144144144144,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhHlcKHtEeKNUa7kbzEWsw" type="3003" source="_EfVc5aHtEeKNUa7kbzEWsw" target="_EffODaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhHlcaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhHlcqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhHlc6HtEeKNUa7kbzEWsw" points="[0, 0, 254, 111]$[0, -30, 254, 81]$[-254, -30, 0, 81]$[-254, -111, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGAaHtEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGAqHtEeKNUa7kbzEWsw" id="(0.25,0.9264705882352942)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhRWeKHtEeKNUa7kbzEWsw" type="3003" source="_EffN3aHtEeKNUa7kbzEWsw" target="_EfVc_aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhRWeaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhRWeqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhRWe6HtEeKNUa7kbzEWsw" points="[0, 0, -120, 102]$[0, -30, -120, 72]$[120, -30, 0, 72]$[120, -102, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGE6HtEeKNUa7kbzEWsw" id="(0.7477477477477478,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGFKHtEeKNUa7kbzEWsw" id="(0.2072072072072072,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhbHdKHtEeKNUa7kbzEWsw" type="3003" source="_EffOAaHtEeKNUa7kbzEWsw" target="_EfVdLaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhbHdaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhbHdqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhbHd6HtEeKNUa7kbzEWsw" points="[-3, 0, 19, 114]$[-3, -114, 19, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGB6HtEeKNUa7kbzEWsw" id="(0.2931726907630522,0.014705882352941176)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGCKHtEeKNUa7kbzEWsw" id="(0.25,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhkRUKHtEeKNUa7kbzEWsw" type="3003" source="_EffNxaHtEeKNUa7kbzEWsw" target="_EffN9aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhkRUaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhkRUqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhkRU6HtEeKNUa7kbzEWsw" points="[0, 0, -111, 94]$[0, -30, -111, 64]$[111, -30, 0, 64]$[111, -94, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8DKHtEeKNUa7kbzEWsw" id="(0.7477477477477478,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8DaHtEeKNUa7kbzEWsw" id="(0.24806201550387597,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhkRVKHtEeKNUa7kbzEWsw" type="3003" source="_EffNxaHtEeKNUa7kbzEWsw" target="_EffN6aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhkRVaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhkRVqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhkRV6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 102]$[0, -102, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8DqHtEeKNUa7kbzEWsw" id="(0.4954954954954955,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8D6HtEeKNUa7kbzEWsw" id="(0.5765765765765766,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhkRWKHtEeKNUa7kbzEWsw" type="3003" source="_EffN3aHtEeKNUa7kbzEWsw" target="_EffN9aHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhkRWaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhkRWqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhkRW6HtEeKNUa7kbzEWsw" points="[0, 0, 0, 94]$[0, -94, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGEaHtEeKNUa7kbzEWsw" id="(0.4954954954954955,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGEqHtEeKNUa7kbzEWsw" id="(0.49612403100775193,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhuCUKHtEeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EffODaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_EhuCVKHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EhuCVaHtEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_EhuCVqHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EhuCV6HtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhuCUaHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhuCUqHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/creationTester"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhuCU6HtEeKNUa7kbzEWsw" points="[0, 0, 89, 284]$[-89, -284, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8IqHtEeKNUa7kbzEWsw" id="(0.05964912280701754,0.0427807486631016)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ejp8I6HtEeKNUa7kbzEWsw" id="(0.8920454545454546,0.9705882352941176)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_EhuCWKHtEeKNUa7kbzEWsw" type="3003" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EffOJaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EhuCWaHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_EhuCWqHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EhuCW6HtEeKNUa7kbzEWsw" points="[-169, 0, 1, 431]$[-169, -427, 1, 4]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGIaHtEeKNUa7kbzEWsw" id="(0.9403508771929825,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EjzGIqHtEeKNUa7kbzEWsw" id="(0.8012048192771084,0.9529411764705882)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Ek_YzqHtEeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EffOPaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y0qHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y06HtEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y1KHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y1aHtEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Ek_Yz6HtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Ek_Y0KHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/tableConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ek_Y0aHtEeKNUa7kbzEWsw" points="[9, -10, 0, 336]$[9, -340, 0, 6]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ir5h8KHtEeKNUa7kbzEWsw" id="(0.8552631578947368,0.07534246575342465)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kbepMKHtEeKNUa7kbzEWsw" id="(0.3087719298245614,0.9411764705882353)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Ek_Y1qHtEeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y2qHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y26HtEeKNUa7kbzEWsw" x="-335" y="102"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y3KHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y3aHtEeKNUa7kbzEWsw" x="-325" y="20"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Ek_Y16HtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Ek_Y2KHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/columnAxisProvidersHistory"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ek_Y2aHtEeKNUa7kbzEWsw" points="[-146, 0, 271, 460]$[-411, 0, 6, 460]$[-411, -453, 6, 7]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7tvZUKHuEeKNUa7kbzEWsw" id="(0.9736842105263158,0.726027397260274)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6fePYKHuEeKNUa7kbzEWsw" id="(0.6073825503355704,0.8970588235294118)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_Ek_Y3qHtEeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y4qHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y46HtEeKNUa7kbzEWsw" x="-356" y="129"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_Ek_Y5KHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Ek_Y5aHtEeKNUa7kbzEWsw" x="-356" y="37"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Ek_Y36HtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_Ek_Y4KHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/rowAxisProvidersHistory"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ek_Y4aHtEeKNUa7kbzEWsw" points="[-145, 0, 308, 485]$[-445, 0, 8, 485]$[-445, -480, 8, 5]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8EDnkKHuEeKNUa7kbzEWsw" id="(0.9671052631578947,0.910958904109589)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__1i8MKHuEeKNUa7kbzEWsw" id="(0.4798657718120805,0.9264705882352942)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_ElJJ0KHtEeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_ElJJ1KHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ElJJ1aHtEeKNUa7kbzEWsw" x="-309" y="104"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_ElJJ1qHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ElJJ16HtEeKNUa7kbzEWsw" x="-308" y="19"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_ElJJ0aHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_ElJJ0qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/currentRowAxisProvider"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ElJJ06HtEeKNUa7kbzEWsw" points="[-137, 0, 235, 423]$[-372, 0, 0, 423]$[-372, -420, 0, 3]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3ETwEKHuEeKNUa7kbzEWsw" id="(0.9144736842105263,0.4931506849315068)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AyW7AKH1EeKNUa7kbzEWsw" id="(0.7281879194630873,0.9558823529411765)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_ElJJ2KHtEeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfMS6aHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_ElJJ3KHtEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ElJJ3aHtEeKNUa7kbzEWsw" x="-235" y="120"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_ElJJ3qHtEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ElJJ36HtEeKNUa7kbzEWsw" x="-230" y="31"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_ElJJ2aHtEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_ElJJ2qHtEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/currentColumnAxisProvider"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ElJJ26HtEeKNUa7kbzEWsw" points="[-90, 0, 197, 386]$[-287, 0, 0, 386]$[-287, -384, 0, 2]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0FtQ8KHuEeKNUa7kbzEWsw" id="(0.6052631578947368,0.2465753424657534)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vXzXYKHuEeKNUa7kbzEWsw" id="(0.8557046979865772,0.9705882352941176)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_ElJJ4KHtEeKNUa7kbzEWsw" type="3003" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EffOJaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_ElJJ4aHtEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_ElJJ4qHtEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ElJJ46HtEeKNUa7kbzEWsw" points="[5, 40, -4, 1013]$[315, 40, 306, 1013]$[315, -931, 306, 42]$[34, -931, 25, 42]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zdYFoKHuEeKNUa7kbzEWsw" id="(0.9671052631578947,0.2328767123287671)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a_dasKHtEeKNUa7kbzEWsw" id="(0.8493975903614458,0.011764705882352941)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_FIJaHKH2EeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMTDaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_FIJaIKH2EeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FIJaIaH2EeKNUa7kbzEWsw" x="-118" y="-19"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_FIJaIqH2EeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FIJaI6H2EeKNUa7kbzEWsw" x="-3" y="-24"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_FIJaHaH2EeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_FIJaHqH2EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/rowHeaderAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FIJaH6H2EeKNUa7kbzEWsw" points="[0, -7, 691, 404]$[0, -493, 691, -82]$[-682, -493, 9, -82]$[-682, -412, 9, -1]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JJrV0KH2EeKNUa7kbzEWsw" id="(0.5578947368421052,0.0427807486631016)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a5to8KH2EeKNUa7kbzEWsw" id="(0.8190954773869347,0.03333333333333333)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_FIJaJKH2EeKNUa7kbzEWsw" type="3002" source="_EffOPaHtEeKNUa7kbzEWsw" target="_EfMTDaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_FIJaKKH2EeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FIJaKaH2EeKNUa7kbzEWsw" x="-31" y="28"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_FITLEKH2EeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FITLEaH2EeKNUa7kbzEWsw" x="79" y="13"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_FIJaJaH2EeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_FIJaJqH2EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableconfiguration/TableConfiguration/columnHeaderAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FIJaJ6H2EeKNUa7kbzEWsw" points="[-7, -8, 798, 384]$[-7, -518, 798, -126]$[-805, -518, 0, -126]$[-805, -413, 0, -21]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PMCg4KH2EeKNUa7kbzEWsw" id="(0.9438596491228071,0.0481283422459893)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OSd0kKH2EeKNUa7kbzEWsw" id="(0.7989949748743719,0.36666666666666664)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_hoQknKH2EeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfVczaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_hoQkoKH2EeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hoQkoaH2EeKNUa7kbzEWsw" x="-955" y="189"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hoQkoqH2EeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hoQko6H2EeKNUa7kbzEWsw" x="-949" y="65"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_hoQknaH2EeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_hoQknqH2EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/localRowHeaderAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hoQkn6H2EeKNUa7kbzEWsw" points="[7, 5, 915, 798]$[7, 211, 915, 1004]$[-598, 211, 310, 1004]$[-608, -793, 300, 0]$[-906, -793, 2, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NyG_cKJ4EeKNUa7kbzEWsw" id="(0.7894736842105263,0.9657534246575342)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Uz2j4KJ4EeKNUa7kbzEWsw" id="(0.9912663755458515,0.45)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_hoQkpKH2EeKNUa7kbzEWsw" type="3002" source="_Ek_YwKHtEeKNUa7kbzEWsw" target="_EfVczaHtEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_hoQkqKH2EeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hoQkqaH2EeKNUa7kbzEWsw" x="-394" y="-888"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hoQkqqH2EeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hoQkq6H2EeKNUa7kbzEWsw" x="-246" y="-893"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_hoQkpaH2EeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_hoQkpqH2EeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//Table/localColumnHeaderAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hoQkp6H2EeKNUa7kbzEWsw" points="[1, 6, 843, 815]$[1, 131, 843, 940]$[-480, 131, 362, 940]$[-480, -803, 362, 6]$[-838, -803, 4, 6]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NTAooKJ4EeKNUa7kbzEWsw" id="(0.3355263157894737,0.958904109589041)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m2_6UKH2EeKNUa7kbzEWsw" id="(0.982532751091703,0.16666666666666666)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_xj1bAqH3EeKNUa7kbzEWsw" type="3003" source="_xjigEKH3EeKNUa7kbzEWsw" target="_xjrqDKH3EeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_xj1bA6H3EeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_xj1bBKH3EeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xj1bBaH3EeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xkbQ4KH3EeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xkbQ4aH3EeKNUa7kbzEWsw" id="(0.4968944099378882,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_xj_MAKH3EeKNUa7kbzEWsw" type="3003" source="_xjigHKH3EeKNUa7kbzEWsw" target="_xjrqJKH3EeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_xj_MAaH3EeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_xj_MAqH3EeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xj_MA6H3EeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xkbQ4qH3EeKNUa7kbzEWsw" id="(0.4968944099378882,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xkbQ46H3EeKNUa7kbzEWsw" id="(0.4968944099378882,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_xj_MGKH3EeKNUa7kbzEWsw" type="3003" source="_xjrqDKH3EeKNUa7kbzEWsw" target="_EffOMaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_xj_MGaH3EeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_xj_MGqH3EeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xj_MG6H3EeKNUa7kbzEWsw" points="[1, 0, -1734, -700]$[1663, 671, -72, -29]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_xkIV-KH3EeKNUa7kbzEWsw" type="3003" source="_xjrqJKH3EeKNUa7kbzEWsw" target="_EffOMaHtEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_xkIV-aH3EeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_xkIV-qH3EeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xkIV-6H3EeKNUa7kbzEWsw" points="[1, 0, -1734, -700]$[1663, 671, -72, -29]"/>
+  </edges>
+</notation:Diagram>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.genmodel b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.genmodel
new file mode 100644
index 0000000..5c8ebe9
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattable.genmodel
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2013 CEA LIST.&#xA;&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License 2.0&#xA; which accompanies this distribution, and is available at&#xA; https://www.eclipse.org/legal/epl-2.0/&#xA;&#xA; SPDX-License-Identifier: EPL-2.0&#xA;&#xA; Contributors:&#xA; Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation"
+    modelDirectory="/org.eclipse.papyrus.infra.nattable.model/src-gen" creationIcons="false"
+    editDirectory="/org.eclipse.papyrus.infra.nattable.model.edit/src-gen" editorDirectory="/org.eclipse.papyrus.infra.nattable.model.editor/src-gen"
+    modelPluginID="org.eclipse.papyrus.infra.nattable.model" modelName="Nattable"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl"
+    testsDirectory="" importerID="org.eclipse.emf.importer.ecore" featureDelegation="Dynamic"
+    complianceLevel="5.0" copyrightFields="false" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel#//types ../../org.eclipse.papyrus.infra.emf.expressions/model/expressions.genmodel#//expressions"
+    operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>nattable.ecore</foreignModel>
+  <genPackages prefix="Nattable" basePackage="org.eclipse.papyrus.infra.nattable.model"
+      disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+      ecorePackage="nattable.ecore#/">
+    <genClasses ecoreClass="nattable.ecore#//Table">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/context"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/owner"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/prototype"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/tableConfiguration"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//Table/invertAxis"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/columnAxisProvidersHistory"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/rowAxisProvidersHistory"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/localRowHeaderAxisConfiguration"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/localColumnHeaderAxisConfiguration"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/currentRowAxisProvider"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/currentColumnAxisProvider"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/cells"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//Table/ownedCellEditorConfigurations"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//Table/tableKindId"/>
+    </genClasses>
+    <nestedGenPackages prefix="Nattableconfiguration" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" ecorePackage="nattable.ecore#//nattableconfiguration">
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattableconfiguration/CellEditorDeclaration">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattableconfiguration/CellEditorDeclaration/COLUMN"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattableconfiguration/CellEditorDeclaration/ROW"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattableconfiguration/CellEditorDeclaration/CELL"/>
+      </genEnums>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableconfiguration/TableNamedElement">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableconfiguration/TableNamedElement/description"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableconfiguration/TableNamedElement/name"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableconfiguration/TableConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableconfiguration/TableConfiguration/type"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableconfiguration/TableConfiguration/iconPath"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/creationTester"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableconfiguration/TableConfiguration/cellEditorDeclaration"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/rowHeaderAxisConfiguration"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/columnHeaderAxisConfiguration"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/columnAxisProviders"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/rowAxisProviders"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/defaultRowAxisProvider"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/defaultColumnAxisProvider"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableconfiguration/TableConfiguration/ownedCellEditorConfigurations"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattableaxisprovider" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattableaxisprovider">
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisprovider/AbstractAxisProvider">
+        <genOperations ecoreOperation="nattable.ecore#//nattableaxisprovider/AbstractAxisProvider/getAxis"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisprovider/IMasterAxisProvider">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisprovider/IMasterAxisProvider/disconnectSlave"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisprovider/IMasterAxisProvider/sources"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisprovider/ISlaveAxisProvider"/>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisprovider/AxisProvider">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisprovider/AxisProvider/axis"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisprovider/SlaveObjectAxisProvider"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisprovider/MasterObjectAxisProvider"/>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattablelabelprovider" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattablelabelprovider">
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablelabelprovider/ILabelProviderConfiguration"/>
+      <genClasses ecoreClass="nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration/displayIsDerived"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration/displayType"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration/displayMultiplicity"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration/displayName"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablelabelprovider/ObjectLabelProviderConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/ObjectLabelProviderConfiguration/displayIcon"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/ObjectLabelProviderConfiguration/displayLabel"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablelabelprovider/OperationLabelProviderConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/OperationLabelProviderConfiguration/displayType"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/OperationLabelProviderConfiguration/displayMultiplicity"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablelabelprovider/OperationLabelProviderConfiguration/displayName"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattableaxisconfiguration" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="nattable.ecore#//nattableaxisconfiguration">
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle/ALPHABETIC"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle/NUMERIC"/>
+      </genEnums>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/indexStyle"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/displayLabel"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/displayFilter"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/displayIndex"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/ownedLabelConfigurations"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/ownedAxisConfigurations"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/AxisManagerRepresentation">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AxisManagerRepresentation/axisManagerId"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/AxisManagerRepresentation/labelProviderContext"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AxisManagerRepresentation/headerLabelConfiguration"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AxisManagerRepresentation/specificAxisConfigurations"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/localHeaderLabelConfiguration"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/axisManager"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/localSpecificConfigurations"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/TableHeaderAxisConfiguration">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/TableHeaderAxisConfiguration/axisManagers"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration/axisManagerConfigurations"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisconfiguration/IAxisConfiguration"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/FeatureAxisConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/FeatureAxisConfiguration/showOnlyCommonFeature"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxisconfiguration/IFillingConfiguration"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/EStructuralFeatureValueFillingConfiguration">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/EStructuralFeatureValueFillingConfiguration/listenFeature"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/IPasteConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/IPasteConfiguration/postActions"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/IPasteConfiguration/detachedMode"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/PasteEObjectConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/PasteEObjectConfiguration/pastedElementId"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/PasteEObjectConfiguration/pasteElementContainementFeature"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/PasteEObjectConfiguration/axisIdentifier"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/axisUsedAsAxisProvider"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/pasteConfiguration"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/depth"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/labelProvider"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/labelProviderContext"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxisconfiguration/TreeFillingConfiguration/filterRule"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattabletester" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattabletester">
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattabletester/AbstractTableTester">
+        <genOperations ecoreOperation="nattable.ecore#//nattabletester/AbstractTableTester/getTester"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattabletester/JavaTableTester">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattabletester/JavaTableTester/tester"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattableaxis" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattableaxis">
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/IAxis">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/IAxis/manager"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxis/IAxis/alias"/>
+        <genOperations ecoreOperation="nattable.ecore#//nattableaxis/IAxis/getElement"/>
+        <genOperations ecoreOperation="nattable.ecore#//nattableaxis/IAxis/getLocalLabelConfiguration"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/ITreeItemAxis">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/ITreeItemAxis/parent"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxis/ITreeItemAxis/expanded"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/ITreeItemAxis/children"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/IdAxis">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableaxis/IdAxis/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/IdTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EObjectAxis">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/EObjectAxis/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EObjectTreeItemAxis"/>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/FeatureAxis">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/FeatureAxis/localLabelConfiguration"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/OperationAxis">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/OperationAxis/localLabelConfiguration"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/FeatureTreeItemAxis"/>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/OperationTreeItemAxis"/>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/ObjectAxis">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/ObjectAxis/localLabelConfiguration"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattableaxis/ObjectTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/FeatureIdAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/FeatureIdTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EStructuralFeatureAxis">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/EStructuralFeatureAxis/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EOperationAxis">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/EOperationAxis/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EStructuralFeatureTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/EOperationTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/ObjectIdAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/ObjectIdTreeItemAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/AxisGroup">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattableaxis/AxisGroup/groupedAxis"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/OperationIdAxis"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableaxis/OperationIdTreeItemAxis"/>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattablecell" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattablecell">
+      <genClasses ecoreClass="nattable.ecore#//nattablecell/Cell">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablecell/Cell/columnWrapper"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablecell/Cell/rowWrapper"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablecell/Cell/problems"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablecell/ICellAxisWrapper">
+        <genOperations ecoreOperation="nattable.ecore#//nattablecell/ICellAxisWrapper/getElement"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablecell/EObjectAxisWrapper">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablecell/EObjectAxisWrapper/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablecell/IdAxisWrapper">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablecell/IdAxisWrapper/element"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattableproblem" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattableproblem">
+      <genClasses ecoreClass="nattable.ecore#//nattableproblem/Problem"/>
+      <genClasses ecoreClass="nattable.ecore#//nattableproblem/StringResolutionProblem">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableproblem/StringResolutionProblem/valueAsString"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattableproblem/StringResolutionProblem/unresolvedString"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattablestyle" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattablestyle">
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattablestyle/CellTextAlignment">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/TOP_LEFT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/TOP_CENTER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/TOP_RIGHT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/MIDDLE_LEFT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/MIDDLE_CENTER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/MIDDLE_RIGHT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/BOTTOM_LEFT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/BOTTOM_CENTER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/CellTextAlignment/BOTTOM_RIGHT"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattablestyle/DisplayStyle">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/DisplayStyle/NORMAL"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/DisplayStyle/HIERARCHIC_SINGLE_TREE_COLUMN"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablestyle/DisplayStyle/HIERARCHIC_MULTI_TREE_COLUMN"/>
+      </genEnums>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablestyle/Style"/>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/NamedStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/NamedStyle/name"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/FontStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/fontColor"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/fontName"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/fontHeight"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/bold"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/italic"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/underline"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/FontStyle/strikeThrough"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/CellTextStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/CellTextStyle/alignment"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/IntValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/IntValueStyle/intValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/IntListValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/IntListValueStyle/intListValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/BooleanValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/BooleanValueStyle/booleanValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/BooleanListValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/BooleanListValueStyle/booleanListValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/DoubleValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/DoubleValueStyle/doubleValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/DoubleListValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/DoubleListValueStyle/doubleListValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/StringValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/StringValueStyle/stringValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/StringListValueStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/StringListValueStyle/stringListValue"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablestyle/StyledElement">
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablestyle/StyledElement/styles"/>
+        <genOperations ecoreOperation="nattable.ecore#//nattablestyle/StyledElement/getNamedStyle">
+          <genParameters ecoreParameter="nattable.ecore#//nattablestyle/StyledElement/getNamedStyle/eClass"/>
+          <genParameters ecoreParameter="nattable.ecore#//nattablestyle/StyledElement/getNamedStyle/name"/>
+        </genOperations>
+        <genOperations ecoreOperation="nattable.ecore#//nattablestyle/StyledElement/getStyle">
+          <genParameters ecoreParameter="nattable.ecore#//nattablestyle/StyledElement/getStyle/eClass"/>
+        </genOperations>
+        <genOperations ecoreOperation="nattable.ecore#//nattablestyle/StyledElement/createStyle">
+          <genParameters ecoreParameter="nattable.ecore#//nattablestyle/StyledElement/createStyle/eClass"/>
+        </genOperations>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/TableDisplayStyle">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablestyle/TableDisplayStyle/displayStyle"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/EObjectValueStyle">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablestyle/EObjectValueStyle/eObjectValue"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablestyle/EObjectListValueStyle">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablestyle/EObjectListValueStyle/eObjectValue"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattablecelleditor" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="nattable.ecore#//nattablecelleditor">
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattablecelleditor/MatrixRelationShipDirection">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipDirection/NONE"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipDirection/FROM_ROW_TO_COLUMN"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipDirection/FROM_COLUMN_TO_ROW"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy">
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/DEFAULT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/TABLE_CONTEXT"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/ROW_OWNER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/ROW_AS_OWNER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/COLUMN_OWNER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/COLUMN_AS_OWNER"/>
+        <genEnumLiterals ecoreEnumLiteral="nattable.ecore#//nattablecelleditor/MatrixRelationShipOwnerStrategy/OTHER"/>
+      </genEnums>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablecelleditor/ICellEditorConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablecelleditor/ICellEditorConfiguration/cellEditorId"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/direction"/>
+        <genFeatures children="true" createChild="true" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/cellContentsFilter"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/editedElement"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/relationshipOwnerStrategy"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/relationshipOwner"/>
+        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nattable.ecore#//nattablecelleditor/GenericRelationshipMatrixCellEditorConfiguration/relationshipOwnerFeature"/>
+      </genClasses>
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablecelleditor/IMatrixCellEditorConfiguration"/>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="Nattablewrapper" basePackage="org.eclipse.papyrus.infra.nattable.model.nattable"
+        disposableProviderFactory="true" multipleEditorPages="false" generateModelWizard="false"
+        ecorePackage="nattable.ecore#//nattablewrapper">
+      <genClasses image="false" ecoreClass="nattable.ecore#//nattablewrapper/IWrapper">
+        <genOperations ecoreOperation="nattable.ecore#//nattablewrapper/IWrapper/getElement"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablewrapper/EObjectWrapper">
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference nattable.ecore#//nattablewrapper/EObjectWrapper/element"/>
+      </genClasses>
+      <genClasses ecoreClass="nattable.ecore#//nattablewrapper/IdWrapper">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nattable.ecore#//nattablewrapper/IdWrapper/element"/>
+      </genClasses>
+    </nestedGenPackages>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxis.ecorediag b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxis.ecorediag
new file mode 100644
index 0000000..63cb5ea
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxis.ecorediag
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_UypeIJewEeKr0Yypv4rfLA" type="EcoreTools" name="nattableaxis.ecorediag" measurementUnit="Pixel">
+  <children xmi:type="notation:Node" xmi:id="_e_NAAKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAA6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NABKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NABaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NABqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAB6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NACKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NACaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NACqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAC6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NAAaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/FeatureIdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NAAqHoEeKNUa7kbzEWsw" x="755" y="525"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NADKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAD6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NAEKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAEaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAEqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAE6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NAFKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAFaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAFqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAF6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NADaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/ObjectIdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NADqHoEeKNUa7kbzEWsw" x="590" y="525"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NAGKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAG6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NAHKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAHaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAHqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAH6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NAIKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAIaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAIqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAI6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NAGaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/ObjectAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NAGqHoEeKNUa7kbzEWsw" x="500" y="350"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NAJKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAJ6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NAKKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAKaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAKqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAK6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NALKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NALaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NALqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAL6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NAJaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/FeatureAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NAJqHoEeKNUa7kbzEWsw" x="850" y="350"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NAMKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAM6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NANKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NANaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NANqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAN6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NAOKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAOaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAOqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAO6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NAMaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/IdAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NAMqHoEeKNUa7kbzEWsw" x="665" y="350"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NAPKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAP6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NAQKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAQaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAQqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAQ6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NARKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NARaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NARqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAR6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NAPaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/IAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NAPqHoEeKNUa7kbzEWsw" x="455" y="220"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_NASKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_NAS6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_NATKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NATaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NATqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAT6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_NAUKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_NAUaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_NAUqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_NAU6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_NASaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/EStructuralFeatureAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_NASqHoEeKNUa7kbzEWsw" x="920" y="525"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_e_WxAKHoEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_e_WxA6HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_e_WxBKHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_WxBaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_WxBqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_WxB6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_e_WxCKHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_e_WxCaHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_e_WxCqHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_e_WxC6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_e_WxAaHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/EObjectAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_WxAqHoEeKNUa7kbzEWsw" x="430" y="460"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_hgnz4KHoEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhEf0KHoEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhEf0aHoEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_hgnz46HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_hgnz5KHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_hgnz5aHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_hgnz5qHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_hgnz56HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hgnz6KHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_hgnz6aHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_hgnz6qHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_hgnz66HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_hgnz4aHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hgnz4qHoEeKNUa7kbzEWsw" x="880" y="700"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_kA2U8KHoEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kBTA4KHoEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kBTA4aHoEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_kA2U86HoEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_kA2U9KHoEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_kA2U9aHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_kA2U9qHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_kA2U96HoEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_kA2U-KHoEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_kA2U-aHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_kA2U-qHoEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_kA2U-6HoEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_kA2U8aHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kA2U8qHoEeKNUa7kbzEWsw" x="250" y="625"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_g0n0EKHpEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g06vAKHpEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g06vAaHpEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_g0n0E6HpEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_g0n0FKHpEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_g0n0FaHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_g0n0FqHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_g0n0F6HpEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_g0n0GKHpEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_g0n0GaHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_g0n0GqHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_g0n0G6HpEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_g0n0EaHpEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattablelabelprovider/FeatureLabelProviderConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g0n0EqHpEeKNUa7kbzEWsw" x="825" y="-15"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_hPGwoKHpEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hPZrkKHpEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hPZrkaHpEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_hPGwo6HpEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_hPGwpKHpEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_hPGwpaHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_hPGwpqHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_hPGwp6HpEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hPGwqKHpEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_hPGwqaHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_hPGwqqHpEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_hPGwq6HpEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_hPGwoaHpEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattablelabelprovider/ObjectLabelProviderConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hPGwoqHpEeKNUa7kbzEWsw" x="75" y="-15"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_UypeIZewEeKr0Yypv4rfLA"/>
+  <element xmi:type="ecore:EPackage" href="nattable.ecore#//nattableaxis"/>
+  <edges xmi:type="notation:Edge" xmi:id="_e_f68KHoEeKNUa7kbzEWsw" type="3003" source="_e_NAAKHoEeKNUa7kbzEWsw" target="_e_NAMKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_f68aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_f68qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_f686HoEeKNUa7kbzEWsw" points="[0, 0, 41, 60]$[0, -30, 41, 30]$[-41, -30, 0, 30]$[-41, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX6KHoEeKNUa7kbzEWsw" id="(0.3333333333333333,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX6aHoEeKNUa7kbzEWsw" id="(0.6666666666666666,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_f69KHoEeKNUa7kbzEWsw" type="3003" source="_e_NAAKHoEeKNUa7kbzEWsw" target="_e_NAJKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_f69aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_f69qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_f696HoEeKNUa7kbzEWsw" points="[0, 0, -62, 68]$[0, -30, -62, 38]$[62, -30, 0, 38]$[62, -68, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX6qHoEeKNUa7kbzEWsw" id="(0.6666666666666666,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX66HoEeKNUa7kbzEWsw" id="(0.3333333333333333,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_pr8KHoEeKNUa7kbzEWsw" type="3003" source="_e_NADKHoEeKNUa7kbzEWsw" target="_e_NAMKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_pr8aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_pr8qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_pr86HoEeKNUa7kbzEWsw" points="[0, 0, -44, 60]$[0, -30, -44, 30]$[44, -30, 0, 30]$[44, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX5KHoEeKNUa7kbzEWsw" id="(0.6666666666666666,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX5aHoEeKNUa7kbzEWsw" id="(0.3333333333333333,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_pr9KHoEeKNUa7kbzEWsw" type="3003" source="_e_NADKHoEeKNUa7kbzEWsw" target="_e_NAGKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_pr9aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_pr9qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_pr96HoEeKNUa7kbzEWsw" points="[0, 0, 59, 68]$[0, -30, 59, 38]$[-59, -30, 0, 38]$[-59, -68, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX5qHoEeKNUa7kbzEWsw" id="(0.3333333333333333,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX56HoEeKNUa7kbzEWsw" id="(0.6666666666666666,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_pr-KHoEeKNUa7kbzEWsw" type="3003" source="_e_NAGKHoEeKNUa7kbzEWsw" target="_e_NAPKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_pr-aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_pr-qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_pr-6HoEeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX7KHoEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX7aHoEeKNUa7kbzEWsw" id="(0.2608695652173913,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_pr_KHoEeKNUa7kbzEWsw" type="3003" source="_e_WxAKHoEeKNUa7kbzEWsw" target="_e_NAGKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_pr_aHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_pr_qHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_pr_6HoEeKNUa7kbzEWsw" points="[0, 0, -52, 68]$[0, -30, -52, 38]$[52, -30, 0, 38]$[52, -68, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX4KHoEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX4aHoEeKNUa7kbzEWsw" id="(0.3333333333333333,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_psAKHoEeKNUa7kbzEWsw" type="3003" source="_e_NASKHoEeKNUa7kbzEWsw" target="_e_NAJKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_psAaHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_psAqHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_psA6HoEeKNUa7kbzEWsw" points="[0, 0, 54, 68]$[0, -30, 54, 38]$[-54, -30, 0, 38]$[-54, -68, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX7qHoEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX76HoEeKNUa7kbzEWsw" id="(0.6666666666666666,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_e_psBKHoEeKNUa7kbzEWsw" type="3003" source="_e_NAMKHoEeKNUa7kbzEWsw" target="_e_NAPKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_e_psBaHoEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_e_psBqHoEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_psB6HoEeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX4qHoEeKNUa7kbzEWsw" id="(0.49612403100775193,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fAGX46HoEeKNUa7kbzEWsw" id="(0.7364130434782609,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_hg6u0KHoEeKNUa7kbzEWsw" type="3002" source="_e_NASKHoEeKNUa7kbzEWsw" target="_hgnz4KHoEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_hg6u1KHoEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hg6u1aHoEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hg6u1qHoEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hg6u16HoEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_hg6u0aHoEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_hg6u0qHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/EStructuralFeatureAxis/element"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hg6u06HoEeKNUa7kbzEWsw" points="[-42, -20, 934, 461]$[-975, -481, 1, 0]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_kBJ28KHoEeKNUa7kbzEWsw" type="3002" source="_e_WxAKHoEeKNUa7kbzEWsw" target="_kA2U8KHoEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_kBJ29KHoEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kBJ29aHoEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_kBJ29qHoEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_kBJ296HoEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_kBJ28aHoEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_kBJ28qHoEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/EObjectAxis/element"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kBJ286HoEeKNUa7kbzEWsw" points="[-21, -20, 460, 461]$[-480, -480, 1, 1]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_AtBlgKHpEeKNUa7kbzEWsw" type="3003" source="_e_NAJKHoEeKNUa7kbzEWsw" target="_e_NAPKHoEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_AtBlgaHpEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_AtBlgqHpEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtBlg6HpEeKNUa7kbzEWsw" points="[39, -12, 85, 76]$[39, -97, 85, -9]$[-40, -97, 6, -9]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBlhKHpEeKNUa7kbzEWsw" id="(0.11764705882352941,0.3023255813953488)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Td64sKHpEeKNUa7kbzEWsw" id="(0.9836956521739131,0.8235294117647058)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_g0w-AqHpEeKNUa7kbzEWsw" type="3002" source="_e_NAJKHoEeKNUa7kbzEWsw" target="_g0n0EKHpEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_g0w-BqHpEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_g0w-B6HpEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_g0w-CKHpEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_g0w-CaHpEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_g0w-A6HpEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_g0w-BKHpEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/FeatureAxis/localLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g0w-BaHpEeKNUa7kbzEWsw" points="[-50, -21, 851, 350]$[-900, -371, 1, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jnSwAKHpEeKNUa7kbzEWsw" id="(0.9117647058823529,0.11627906976744186)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_hPP6kKHpEeKNUa7kbzEWsw" type="3002" source="_e_NAGKHoEeKNUa7kbzEWsw" target="_hPGwoKHpEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_hPP6lKHpEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hPP6laHpEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_hPP6lqHpEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_hPP6l6HpEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_hPP6kaHpEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_hPP6kqHpEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxis/ObjectAxis/localLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hPP6k6HpEeKNUa7kbzEWsw" points="[-50, 0, 317, 344]$[-367, 0, 0, 344]$[-367, -302, 0, 42]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_hPP6mKHpEeKNUa7kbzEWsw" type="3003" source="_g0n0EKHpEeKNUa7kbzEWsw" target="_hPGwoKHpEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_hPP6maHpEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_hPP6mqHpEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hPP6m6HpEeKNUa7kbzEWsw" points="[-111, -39, 1091, 387]$[-1201, -426, 1, 0]"/>
+  </edges>
+</notation:Diagram>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxisprovider.ecorediag b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxisprovider.ecorediag
new file mode 100644
index 0000000..1fc01ed
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableaxisprovider.ecorediag
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_UypeIJewEeKr0Yypv4rfLA" type="EcoreTools" name="nattable.ecorediag" measurementUnit="Pixel">
+  <children xmi:type="notation:Node" xmi:id="_0KgVkKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0KgVk6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KgVlKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVlaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVlqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVl6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KgVmKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVmaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVmqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVm6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KgVkaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/ISynchronizedAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KgVkqHnEeKNUa7kbzEWsw" x="345" y="335"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KgVnKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0KgVn6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KgVoKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVoaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVoqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVo6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KgVpKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVpaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVpqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVp6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KgVnaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/EStructuralFeatureValueAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KgVnqHnEeKNUa7kbzEWsw" x="320" y="585" width="373"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KgVqKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0KgVq6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KgVrKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVraHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVrqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVr6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KgVsKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVsaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVsqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVs6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KgVqaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/SlaveObjectAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KgVqqHnEeKNUa7kbzEWsw" x="135" y="440"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KgVwKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0KgVw6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KgVxKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVxaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVxqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVx6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KgVyKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgVyaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgVyqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgVy6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KgVwaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/MasterEObjectAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KgVwqHnEeKNUa7kbzEWsw" x="535" y="475"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KgVzKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0KgVz6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KgV0KHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KgV0aHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KgV0qHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0KgV06HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KpfgKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfgaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfgqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfg6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KgVzaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/AbstractAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KgVzqHnEeKNUa7kbzEWsw" x="465" y="120"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KpfhKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0Kpfh6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KpfiKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfiaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfiqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfi6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KpfjKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfjaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfjqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfj6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KpfhaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/AxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KpfhqHnEeKNUa7kbzEWsw" x="480" y="230"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KpfkKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0Kpfk6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KpflKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpflaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpflqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfl6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KpfmKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfmaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfmqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfm6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KpfkaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/ISlaveAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KpfkqHnEeKNUa7kbzEWsw" x="160" y="335"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_0KpfnKHnEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_0Kpfn6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_0KpfoKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfoaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfoqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfo6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_0KpfpKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_0KpfpaHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_0KpfpqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_0Kpfp6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_0KpfnaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/IMasterAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0KpfnqHnEeKNUa7kbzEWsw" x="570" y="335"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_9Ll7kKHnEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9L5dkqHnEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9L5dk6HnEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_9Ll7k6HnEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_9Ll7lKHnEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_9Ll7laHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_9Ll7lqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_9Ll7l6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_9Ll7mKHnEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_9Ll7maHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_9Ll7mqHnEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_9Ll7m6HnEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_9Ll7kaHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Ll7kqHnEeKNUa7kbzEWsw" x="965" y="495" height="210"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_lHzcUKHwEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lIGXSKHwEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lIGXSaHwEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_lH9NUKHwEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_lH9NUaHwEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_lH9NUqHwEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_lH9NU6HwEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_lH9NVKHwEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_lH9NVaHwEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_lH9NVqHwEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_lH9NV6HwEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_lH9NWKHwEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_lHzcUaHwEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxis/IAxis"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lHzcUqHwEeKNUa7kbzEWsw" x="40" y="100"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_atztMKHxEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_atztM6HxEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_atztNKHxEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_atztNaHxEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_atztNqHxEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_atztN6HxEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_atztOKHxEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_atztOaHxEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_atztOqHxEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_atztO6HxEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_atztMaHxEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisprovider/MasterObjectAxisProvider"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_atztMqHxEeKNUa7kbzEWsw" x="565" y="410"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_UypeIZewEeKr0Yypv4rfLA"/>
+  <element xmi:type="ecore:EPackage" href="nattable.ecore#//nattableaxisprovider"/>
+  <edges xmi:type="notation:Edge" xmi:id="_0K9BgKHnEeKNUa7kbzEWsw" type="3003" source="_0KgVkKHnEeKNUa7kbzEWsw" target="_0KpfhKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0K9BgaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0K9BgqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0K9Bg6HnEeKNUa7kbzEWsw" points="[0, 0, -91, 60]$[0, -30, -91, 30]$[91, -30, 0, 30]$[91, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3ZKHnEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3ZaHnEeKNUa7kbzEWsw" id="(0.39215686274509803,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0K9BhKHnEeKNUa7kbzEWsw" type="3003" source="_0KgVnKHnEeKNUa7kbzEWsw" target="_0KgVkKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0K9BhaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0K9BhqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0K9Bh6HnEeKNUa7kbzEWsw" points="[0, 0, 0, 171]$[0, -171, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0LsoYKHnEeKNUa7kbzEWsw" id="(0.289544235924933,0.13953488372093023)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0LsoYaHnEeKNUa7kbzEWsw" id="(0.5,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0K9BiKHnEeKNUa7kbzEWsw" type="3003" source="_0KgVnKHnEeKNUa7kbzEWsw" target="_0KgVwKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0K9BiaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0K9BiqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0K9Bi6HnEeKNUa7kbzEWsw" points="[10, -2, 77, 64]$[10, -63, 77, 3]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3cKHnEeKNUa7kbzEWsw" id="(0.8900804289544236,0.06976744186046512)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3caHnEeKNUa7kbzEWsw" id="(0.2737430167597765,0.9411764705882353)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0K9BjKHnEeKNUa7kbzEWsw" type="3003" source="_0KgVqKHnEeKNUa7kbzEWsw" target="_0KpfkKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0K9BjaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0K9BjqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0K9Bj6HnEeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3YqHnEeKNUa7kbzEWsw" id="(0.49760765550239233,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3Y6HnEeKNUa7kbzEWsw" id="(0.4959349593495935,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0LGLeKHnEeKNUa7kbzEWsw" type="3003" source="_0KgVwKHnEeKNUa7kbzEWsw" target="_atztMKHxEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0LGLeaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0LGLeqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0LGLe6HnEeKNUa7kbzEWsw" points="[-32, 0, 68, 59]$[-32, -24, 68, 35]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3bKHnEeKNUa7kbzEWsw" id="(0.7486033519553073,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3baHnEeKNUa7kbzEWsw" id="(0.01744186046511628,0.16279069767441862)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0LGLfKHnEeKNUa7kbzEWsw" type="3003" source="_0KpfhKHnEeKNUa7kbzEWsw" target="_0KgVzKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0LGLfaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0LGLfqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0LGLf6HnEeKNUa7kbzEWsw" points="[0, 0, 0, 60]$[0, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3ZqHnEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3Z6HnEeKNUa7kbzEWsw" id="(0.49635036496350365,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0LGLgKHnEeKNUa7kbzEWsw" type="3003" source="_0KpfnKHnEeKNUa7kbzEWsw" target="_0KpfhKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0LGLgaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0LGLgqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0LGLg6HnEeKNUa7kbzEWsw" points="[0, 0, 61, 70]$[0, -84, 61, -14]$[-56, -84, 5, -14]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3YKHnEeKNUa7kbzEWsw" id="(0.5,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3YaHnEeKNUa7kbzEWsw" id="(0.9509803921568627,0.8604651162790697)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_0LGLhKHnEeKNUa7kbzEWsw" type="3003" source="_0KpfkKHnEeKNUa7kbzEWsw" target="_0KpfhKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_0LGLhaHnEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_0LGLhqHnEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0LGLh6HnEeKNUa7kbzEWsw" points="[0, 0, -278, 60]$[0, -30, -278, 30]$[278, -30, 0, 30]$[278, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3aKHnEeKNUa7kbzEWsw" id="(0.4959349593495935,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Li3aaHnEeKNUa7kbzEWsw" id="(0.19607843137254902,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_9LvslqHnEeKNUa7kbzEWsw" type="3002" source="_0KgVnKHnEeKNUa7kbzEWsw" target="_9Ll7kKHnEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_9LvsmqHnEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_9Lvsm6HnEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_9LvsnKHnEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_9LvsnaHnEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_9Lvsl6HnEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_9LvsmKHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisprovider/EStructuralFeatureValueAxisProvider/listenFeature"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9LvsmaHnEeKNUa7kbzEWsw" points="[-15, -20, 416, 551]$[-430, -570, 1, 1]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_9LvsnqHnEeKNUa7kbzEWsw" type="3002" source="_0KgVwKHnEeKNUa7kbzEWsw" target="_9Ll7kKHnEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_9LvsoqHnEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_9Lvso6HnEeKNUa7kbzEWsw" x="-86" y="-20"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_9L5dkKHnEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_9L5dkaHnEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_9Lvsn6HnEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_9LvsoKHnEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisprovider/MasterEObjectAxisProvider/pastedElementContainmentFeature"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9LvsoaHnEeKNUa7kbzEWsw" points="[89, 21, -360, -86]$[342, 81, -107, -26]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lpCrsKHxEeKNUa7kbzEWsw" id="(0.9832402234636871,0.8627450980392157)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lRZAsKHxEeKNUa7kbzEWsw" id="(0.055299539170506916,0.08717948717948718)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_lIGXQKHwEeKNUa7kbzEWsw" type="3002" source="_0KpfhKHnEeKNUa7kbzEWsw" target="_lHzcUKHwEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_lIGXRKHwEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_lIGXRaHwEeKNUa7kbzEWsw" x="9" y="-47"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_lIGXRqHwEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_lIGXR6HwEeKNUa7kbzEWsw" x="9" y="31"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_lIGXQaHwEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_lIGXQqHwEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisprovider/AxisProvider/axis"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lIGXQ6HwEeKNUa7kbzEWsw" points="[-50, 0, 257, 109]$[-307, 0, 0, 109]$[-307, -67, 0, 42]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_dhhyAKHxEeKNUa7kbzEWsw" type="3003" source="_atztMKHxEeKNUa7kbzEWsw" target="_0KpfnKHnEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_dhhyAaHxEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_dhhyAqHxEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dhhyA6HxEeKNUa7kbzEWsw" points="[-19, -20, 36, 40]$[-53, -75, 2, -15]"/>
+  </edges>
+</notation:Diagram>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableonfiguration.ecorediag b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableonfiguration.ecorediag
new file mode 100644
index 0000000..48a147a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/model/nattableonfiguration.ecorediag
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_UypeIJewEeKr0Yypv4rfLA" type="EcoreTools" name="nattableaxisconfiguration" measurementUnit="Pixel">
+  <children xmi:type="notation:Node" xmi:id="_3EuuMKHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4fMKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fMaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fMqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fM6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fNKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4fNaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fNqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fN6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fOKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3EuuMaHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3EuuMqHrEeKNUa7kbzEWsw" x="565" y="225" height="68"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4fOaHrEeKNUa7kbzEWsw" type="1005">
+    <children xmi:type="notation:Node" xmi:id="_3E4fPKHrEeKNUa7kbzEWsw" type="4010"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fPaHrEeKNUa7kbzEWsw" type="5008">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fPqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fP6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fQKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4fOqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EEnum" href="nattable.ecore#//nattableaxisconfiguration/AxisIndexStyle"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4fO6HrEeKNUa7kbzEWsw" x="20" y="20"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4fQaHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4fRKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fRaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fRqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fR6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fSKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4fSaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fSqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fS6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fTKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4fQqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4fQ6HrEeKNUa7kbzEWsw" x="1050" y="345"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4fWaHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4fXKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fXaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fXqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fX6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fYKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4fYaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fYqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fY6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fZKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4fWqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/FeatureAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4fW6HrEeKNUa7kbzEWsw" x="95" y="550" width="198" height="78"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4fZaHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4faKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4faaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4faqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fa6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fbKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4fbaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fbqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fb6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fcKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4fZqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4fZ6HrEeKNUa7kbzEWsw" x="855" y="235"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4fcaHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4fdKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fdaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fdqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fd6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4feKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4feaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4feqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fe6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4ffKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4fcqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/IAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4fc6HrEeKNUa7kbzEWsw" x="115" y="395"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3E4ffaHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3E4fgKHrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3E4fgaHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fgqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fg6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fhKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3E4fhaHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3E4fhqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3E4fh6HrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3E4fiKHrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3E4ffqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/AxisManager"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3E4ff6HrEeKNUa7kbzEWsw" x="575" y="105"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_3FCQMKHrEeKNUa7kbzEWsw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_3FCQM6HrEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_3FCQNKHrEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3FCQNaHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3FCQNqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3FCQN6HrEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FCQOKHrEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_3FCQOaHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3FCQOqHrEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3FCQO6HrEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_3FCQMaHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattableaxisconfiguration/TableHeaderAxisConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3FCQMqHrEeKNUa7kbzEWsw" x="865" y="125" width="283"/>
+  </children>
+  <children xmi:type="notation:Node" xmi:id="_VWNvsKHsEeKNUa7kbzEWsw" type="1001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VWgqoKHsEeKNUa7kbzEWsw" source="Shortcut">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VWgqoaHsEeKNUa7kbzEWsw" key="modelID" value="EcoreTools"/>
+    </eAnnotations>
+    <children xmi:type="notation:Node" xmi:id="_VWNvs6HsEeKNUa7kbzEWsw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_VWNvtKHsEeKNUa7kbzEWsw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_VWNvtaHsEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_VWNvtqHsEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_VWNvt6HsEeKNUa7kbzEWsw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_VWNvuKHsEeKNUa7kbzEWsw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_VWNvuaHsEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_VWNvuqHsEeKNUa7kbzEWsw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_VWNvu6HsEeKNUa7kbzEWsw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_VWNvsaHsEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="nattable.ecore#//nattablelabelprovider/AbstractLabelConfiguration"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VWNvsqHsEeKNUa7kbzEWsw" x="260" y="265" width="208" height="103"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_UypeIZewEeKr0Yypv4rfLA"/>
+  <element xmi:type="ecore:EPackage" href="nattable.ecore#//nattableaxisconfiguration"/>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLIKHrEeKNUa7kbzEWsw" type="3002" source="_3EuuMKHrEeKNUa7kbzEWsw" target="_3E4ffaHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FVLJKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLJaHrEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FVLJqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLJ6HrEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLIaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLIqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/axisManager"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLI6HrEeKNUa7kbzEWsw" points="[0, 0, 0, 111]$[0, -111, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BBKHrEeKNUa7kbzEWsw" id="(0.4971751412429379,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BBaHrEeKNUa7kbzEWsw" id="(0.49645390070921985,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLKKHrEeKNUa7kbzEWsw" type="3002" source="_3EuuMKHrEeKNUa7kbzEWsw" target="_3E4fcaHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FVLLKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLLaHrEeKNUa7kbzEWsw" x="-19" y="32"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FVLLqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLL6HrEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLKaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLKqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/localSpecificConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLK6HrEeKNUa7kbzEWsw" points="[0, 21, 426, -149]$[0, 170, 426, 0]$[-412, 170, 14, 0]"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BEaHrEeKNUa7kbzEWsw" id="(0.889763779527559,0.5116279069767442)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLMKHrEeKNUa7kbzEWsw" type="3002" source="_3E4fZaHrEeKNUa7kbzEWsw" target="_3EuuMKHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FVLNKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLNaHrEeKNUa7kbzEWsw" x="-98" y="39"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FVLNqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLN6HrEeKNUa7kbzEWsw" x="-2" y="14"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLMaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLMqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/LocalTableHeaderAxisConfiguration/axisManagerConfigurations"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLM6HrEeKNUa7kbzEWsw" points="[0, 0, -420, 60]$[420, -60, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BDKHrEeKNUa7kbzEWsw" id="(0.7467248908296943,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BDaHrEeKNUa7kbzEWsw" id="(0.903954802259887,0.45588235294117646)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLOKHrEeKNUa7kbzEWsw" type="3002" source="_3E4fQaHrEeKNUa7kbzEWsw" target="_3E4fcaHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FVLPKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLPaHrEeKNUa7kbzEWsw" x="-4" y="-52"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FVLPqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FVLP6HrEeKNUa7kbzEWsw" x="3" y="-27"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLOaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLOqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/ownedAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLO6HrEeKNUa7kbzEWsw" points="[0, 9, 915, -4]$[-650, 9, 265, -4]$[-810, 9, 105, -4]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BBqHrEeKNUa7kbzEWsw" id="(0.0,0.7843137254901961)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BB6HrEeKNUa7kbzEWsw" id="(0.16535433070866143,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLQKHrEeKNUa7kbzEWsw" type="3003" source="_3FCQMKHrEeKNUa7kbzEWsw" target="_3E4fQaHrEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLQaHrEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLQqHrEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLQ6HrEeKNUa7kbzEWsw" points="[6, 5, -109, -279]$[6, 184, -109, -100]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BCqHrEeKNUa7kbzEWsw" id="(0.7985865724381626,0.8837209302325582)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BC6HrEeKNUa7kbzEWsw" id="(0.75,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FVLRKHrEeKNUa7kbzEWsw" type="3003" source="_3E4fZaHrEeKNUa7kbzEWsw" target="_3E4fQaHrEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FVLRaHrEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FVLRqHrEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FVLR6HrEeKNUa7kbzEWsw" points="[0, 0, 0, 163]$[0, -163, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BDqHrEeKNUa7kbzEWsw" id="(0.4978165938864629,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BD6HrEeKNUa7kbzEWsw" id="(0.038461538461538464,0.6372549019607843)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FeVEKHrEeKNUa7kbzEWsw" type="3003" source="_3E4fWaHrEeKNUa7kbzEWsw" target="_3E4fcaHrEeKNUa7kbzEWsw">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FeVEaHrEeKNUa7kbzEWsw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FeVEqHrEeKNUa7kbzEWsw" fontName="Segoe UI"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FeVE6HrEeKNUa7kbzEWsw" points="[-10, -38, 6, 122]$[-10, -152, 6, 8]"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BAaHrEeKNUa7kbzEWsw" id="(0.49606299212598426,0.813953488372093)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FeVFKHrEeKNUa7kbzEWsw" type="3002" source="_3E4ffaHrEeKNUa7kbzEWsw" target="_3E4fcaHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FeVGKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FeVGaHrEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FeVGqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FeVG6HrEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FeVFaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FeVFqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AxisManager/specificAxisConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FeVF6HrEeKNUa7kbzEWsw" points="[-69, 0, 398, -331]$[-467, 0, 0, -331]$[-467, 290, 0, -41]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BAqHrEeKNUa7kbzEWsw" id="(0.49645390070921985,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BA6HrEeKNUa7kbzEWsw" id="(0.49606299212598426,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_3FeVHKHrEeKNUa7kbzEWsw" type="3002" source="_3FCQMKHrEeKNUa7kbzEWsw" target="_3E4ffaHrEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_3FeVIKHrEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FeVIaHrEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_3FeVIqHrEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_3FeVI6HrEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_3FeVHaHrEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_3FeVHqHrEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/TableHeaderAxisConfiguration/axisManagers"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3FeVH6HrEeKNUa7kbzEWsw" points="[0, 0, -180, 111]$[129, -61, -51, 50]$[180, -111, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BCKHrEeKNUa7kbzEWsw" id="(0.6633165829145728,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F7BCaHrEeKNUa7kbzEWsw" id="(0.9290780141843972,0.6666666666666666)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_VWXgsKHsEeKNUa7kbzEWsw" type="3002" source="_3E4fQaHrEeKNUa7kbzEWsw" target="_VWNvsKHsEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_VWXgtKHsEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgtaHsEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_VWXgtqHsEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgt6HsEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_VWXgsaHsEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_VWXgsqHsEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AbstractHeaderAxisConfiguration/ownedLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VWXgs6HsEeKNUa7kbzEWsw" points="[-103, -44, 856, 362]$[-958, -406, 1, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ivJfsKHsEeKNUa7kbzEWsw" id="(0.04807692307692308,0.14705882352941177)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jcYZIKHsEeKNUa7kbzEWsw" id="(0.9615384615384616,0.8640776699029126)"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_VWXguKHsEeKNUa7kbzEWsw" type="3002" source="_3E4ffaHrEeKNUa7kbzEWsw" target="_VWNvsKHsEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_VWXgvKHsEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgvaHsEeKNUa7kbzEWsw" x="-10" y="-10"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_VWXgvqHsEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgv6HsEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_VWXguaHsEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_VWXguqHsEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AxisManager/headerLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VWXgu6HsEeKNUa7kbzEWsw" points="[-69, 0, 212, -186]$[-281, 0, 0, -186]$[-281, 136, 0, -50]"/>
+  </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_VWXgwKHsEeKNUa7kbzEWsw" type="3002" source="_3EuuMKHrEeKNUa7kbzEWsw" target="_VWNvsKHsEeKNUa7kbzEWsw">
+    <children xmi:type="notation:Node" xmi:id="_VWXgxKHsEeKNUa7kbzEWsw" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgxaHsEeKNUa7kbzEWsw" x="-116" y="-41"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_VWXgxqHsEeKNUa7kbzEWsw" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VWXgx6HsEeKNUa7kbzEWsw" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_VWXgwaHsEeKNUa7kbzEWsw" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_VWXgwqHsEeKNUa7kbzEWsw" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="nattable.ecore#//nattableaxisconfiguration/AxisManagerConfiguration/localHeaderLabelConfiguration"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VWXgw6HsEeKNUa7kbzEWsw" points="[-37, -20, 421, 236]$[-457, -256, 1, 0]"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lvqqYKHsEeKNUa7kbzEWsw" id="(0.9423076923076923,0.0970873786407767)"/>
+  </edges>
+</notation:Diagram>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.properties b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.properties
new file mode 100644
index 0000000..5c5fdbe
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.properties
@@ -0,0 +1,17 @@
+# Copyright (c) 2020 CEA LIST.
+# 
+# 
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+# 
+# Contributors:
+# 	Eike Stepper - Initial API and implementation
+
+pluginName = Papyrus Nattable Model (CDO Version)
+providerName = Eclipse Modeling Project
+
+pluginDescription=This plugin provides the metamodel used by the nattable editor.
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.xml b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.xml
new file mode 100644
index 0000000..7121b3b
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/plugin.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2020 CEA LIST.
+ 
+ 
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+ 
+ Contributors:
+ 	Eike Stepper - Initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.NattableFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.impl.NattableFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.NattableconfigurationFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.impl.NattableconfigurationFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl.NattableaxisproviderFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.impl.NattableaxisproviderFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattablecontentprovider"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.NattablelabelproviderFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.impl.NattablelabelproviderFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.NattableaxisconfigurationFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.impl.NattableaxisconfigurationFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattabletester"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl.NattabletesterFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.impl.NattabletesterFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.NattableaxisFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.impl.NattableaxisFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattablecell"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.NattablecellFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.impl.NattablecellFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattableproblem"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl.NattableproblemFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.impl.NattableproblemFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattablestyle"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.NattablestyleFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.impl.NattablestyleFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattablecelleditor"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.NattablecelleditorFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.impl.NattablecelleditorFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            uri="http://www.eclipse.org/papyrus/nattable/model/table/nattablewrapper"
+            class="org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl.NattablewrapperFactoryImpl"
+            predecessor="org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.impl.NattablewrapperFactoryImpl"/>
+   </extension>
+
+</plugin>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/pom.xml b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/pom.xml
new file mode 100644
index 0000000..de4f6ef
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>org.eclipse.papyrus.cdo-bundles</artifactId>
+		<groupId>org.eclipse.papyrus.cdo</groupId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.infra.nattable.model.cdo</artifactId>
+	<version>4.2.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+</project>
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/Activator.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/Activator.java
new file mode 100644
index 0000000..bef03be
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/Activator.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2013, 2016 CEA LIST, Christian W. Damus, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *  Christian W. Damus - bug 485220
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.nattable.model.cdo;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.infra.nattable.model.cdo"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	@Override
+	public void start(final BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	@Override
+	public void stop(final BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+}
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/NattableFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/NattableFactoryImpl.java
new file mode 100644
index 0000000..52d3298
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/NattableFactoryImpl.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.NattableFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.NattablePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class NattableFactoryImpl extends EFactoryImpl implements NattableFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static NattableFactory init() {
+		try {
+			NattableFactory theNattableFactory = (NattableFactory) EPackage.Registry.INSTANCE.getEFactory(NattablePackage.eNS_URI);
+			if (theNattableFactory != null) {
+				return theNattableFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NattableFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case NattablePackage.TABLE:
+			return createTable();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Table createTable() {
+		TableImpl table = new TableImpl();
+		return table;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NattablePackage getNattablePackage() {
+		return (NattablePackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablePackage getPackage() {
+		return NattablePackage.eINSTANCE;
+	}
+} // NattableFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/TableImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/TableImpl.java
new file mode 100644
index 0000000..d1a38f7
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/impl/TableImpl.java
@@ -0,0 +1,714 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableNamedElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.NattablePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.Table;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.LocalTableHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.AbstractAxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.Cell;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.ICellEditorConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.TableConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getContext <em>Context</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getOwner <em>Owner</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getPrototype <em>Prototype</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getTableConfiguration <em>Table Configuration</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#isInvertAxis <em>Invert Axis</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getColumnAxisProvidersHistory <em>Column Axis Providers History</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getRowAxisProvidersHistory <em>Row Axis Providers History</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getLocalRowHeaderAxisConfiguration <em>Local Row Header Axis Configuration</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getLocalColumnHeaderAxisConfiguration <em>Local Column Header Axis Configuration</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getCurrentRowAxisProvider <em>Current Row Axis Provider</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getCurrentColumnAxisProvider <em>Current Column Axis Provider</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getCells <em>Cells</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getOwnedCellEditorConfigurations <em>Owned Cell Editor Configurations</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.impl.TableImpl#getTableKindId <em>Table Kind Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableImpl extends TableNamedElementImpl implements Table {
+
+	/**
+	 * The default value of the '{@link #isInvertAxis() <em>Invert Axis</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isInvertAxis()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean INVERT_AXIS_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #getTableKindId() <em>Table Kind Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getTableKindId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TABLE_KIND_ID_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TableImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablePackage.Literals.TABLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject getContext() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__CONTEXT - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CONTEXT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObject basicGetContext() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__CONTEXT - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CONTEXT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setContext(EObject newContext) {
+		eDynamicSet(NattablePackage.TABLE__CONTEXT - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CONTEXT, newContext);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject getOwner() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__OWNER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__OWNER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObject basicGetOwner() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__OWNER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__OWNER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setOwner(EObject newOwner) {
+		eDynamicSet(NattablePackage.TABLE__OWNER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__OWNER, newOwner);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject getPrototype() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__PROTOTYPE - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__PROTOTYPE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObject basicGetPrototype() {
+		return (EObject) eDynamicGet(NattablePackage.TABLE__PROTOTYPE - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__PROTOTYPE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setPrototype(EObject newPrototype) {
+		eDynamicSet(NattablePackage.TABLE__PROTOTYPE - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__PROTOTYPE, newPrototype);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public TableConfiguration getTableConfiguration() {
+		return (TableConfiguration) eDynamicGet(NattablePackage.TABLE__TABLE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__TABLE_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TableConfiguration basicGetTableConfiguration() {
+		return (TableConfiguration) eDynamicGet(NattablePackage.TABLE__TABLE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__TABLE_CONFIGURATION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setTableConfiguration(TableConfiguration newTableConfiguration) {
+		eDynamicSet(NattablePackage.TABLE__TABLE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__TABLE_CONFIGURATION, newTableConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isInvertAxis() {
+		return (Boolean) eDynamicGet(NattablePackage.TABLE__INVERT_AXIS - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__INVERT_AXIS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setInvertAxis(boolean newInvertAxis) {
+		eDynamicSet(NattablePackage.TABLE__INVERT_AXIS - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__INVERT_AXIS, newInvertAxis);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AbstractAxisProvider> getColumnAxisProvidersHistory() {
+		return (EList<AbstractAxisProvider>) eDynamicGet(NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AbstractAxisProvider> getRowAxisProvidersHistory() {
+		return (EList<AbstractAxisProvider>) eDynamicGet(NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__ROW_AXIS_PROVIDERS_HISTORY, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public LocalTableHeaderAxisConfiguration getLocalRowHeaderAxisConfiguration() {
+		return (LocalTableHeaderAxisConfiguration) eDynamicGet(NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalRowHeaderAxisConfiguration(LocalTableHeaderAxisConfiguration newLocalRowHeaderAxisConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newLocalRowHeaderAxisConfiguration, NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setLocalRowHeaderAxisConfiguration(LocalTableHeaderAxisConfiguration newLocalRowHeaderAxisConfiguration) {
+		eDynamicSet(NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION, newLocalRowHeaderAxisConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public LocalTableHeaderAxisConfiguration getLocalColumnHeaderAxisConfiguration() {
+		return (LocalTableHeaderAxisConfiguration) eDynamicGet(NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalColumnHeaderAxisConfiguration(LocalTableHeaderAxisConfiguration newLocalColumnHeaderAxisConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newLocalColumnHeaderAxisConfiguration, NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setLocalColumnHeaderAxisConfiguration(LocalTableHeaderAxisConfiguration newLocalColumnHeaderAxisConfiguration) {
+		eDynamicSet(NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION, newLocalColumnHeaderAxisConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public AbstractAxisProvider getCurrentRowAxisProvider() {
+		return (AbstractAxisProvider) eDynamicGet(NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_ROW_AXIS_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AbstractAxisProvider basicGetCurrentRowAxisProvider() {
+		return (AbstractAxisProvider) eDynamicGet(NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_ROW_AXIS_PROVIDER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setCurrentRowAxisProvider(AbstractAxisProvider newCurrentRowAxisProvider) {
+		eDynamicSet(NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_ROW_AXIS_PROVIDER, newCurrentRowAxisProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public AbstractAxisProvider getCurrentColumnAxisProvider() {
+		return (AbstractAxisProvider) eDynamicGet(NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_COLUMN_AXIS_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AbstractAxisProvider basicGetCurrentColumnAxisProvider() {
+		return (AbstractAxisProvider) eDynamicGet(NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_COLUMN_AXIS_PROVIDER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setCurrentColumnAxisProvider(AbstractAxisProvider newCurrentColumnAxisProvider) {
+		eDynamicSet(NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CURRENT_COLUMN_AXIS_PROVIDER, newCurrentColumnAxisProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Cell> getCells() {
+		return (EList<Cell>) eDynamicGet(NattablePackage.TABLE__CELLS - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__CELLS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ICellEditorConfiguration getOwnedCellEditorConfigurations() {
+		return (ICellEditorConfiguration) eDynamicGet(NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetOwnedCellEditorConfigurations(ICellEditorConfiguration newOwnedCellEditorConfigurations, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newOwnedCellEditorConfigurations, NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setOwnedCellEditorConfigurations(ICellEditorConfiguration newOwnedCellEditorConfigurations) {
+		eDynamicSet(NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS, newOwnedCellEditorConfigurations);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getTableKindId() {
+		return (String) eDynamicGet(NattablePackage.TABLE__TABLE_KIND_ID - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__TABLE_KIND_ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setTableKindId(String newTableKindId) {
+		eDynamicSet(NattablePackage.TABLE__TABLE_KIND_ID - ESTATIC_FEATURE_COUNT, NattablePackage.Literals.TABLE__TABLE_KIND_ID, newTableKindId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY:
+			return ((InternalEList<?>) getColumnAxisProvidersHistory()).basicRemove(otherEnd, msgs);
+		case NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY:
+			return ((InternalEList<?>) getRowAxisProvidersHistory()).basicRemove(otherEnd, msgs);
+		case NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION:
+			return basicSetLocalRowHeaderAxisConfiguration(null, msgs);
+		case NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION:
+			return basicSetLocalColumnHeaderAxisConfiguration(null, msgs);
+		case NattablePackage.TABLE__CELLS:
+			return ((InternalEList<?>) getCells()).basicRemove(otherEnd, msgs);
+		case NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS:
+			return basicSetOwnedCellEditorConfigurations(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablePackage.TABLE__CONTEXT:
+			if (resolve) {
+				return getContext();
+			}
+			return basicGetContext();
+		case NattablePackage.TABLE__OWNER:
+			if (resolve) {
+				return getOwner();
+			}
+			return basicGetOwner();
+		case NattablePackage.TABLE__PROTOTYPE:
+			if (resolve) {
+				return getPrototype();
+			}
+			return basicGetPrototype();
+		case NattablePackage.TABLE__TABLE_CONFIGURATION:
+			if (resolve) {
+				return getTableConfiguration();
+			}
+			return basicGetTableConfiguration();
+		case NattablePackage.TABLE__INVERT_AXIS:
+			return isInvertAxis();
+		case NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY:
+			return getColumnAxisProvidersHistory();
+		case NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY:
+			return getRowAxisProvidersHistory();
+		case NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION:
+			return getLocalRowHeaderAxisConfiguration();
+		case NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION:
+			return getLocalColumnHeaderAxisConfiguration();
+		case NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER:
+			if (resolve) {
+				return getCurrentRowAxisProvider();
+			}
+			return basicGetCurrentRowAxisProvider();
+		case NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER:
+			if (resolve) {
+				return getCurrentColumnAxisProvider();
+			}
+			return basicGetCurrentColumnAxisProvider();
+		case NattablePackage.TABLE__CELLS:
+			return getCells();
+		case NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS:
+			return getOwnedCellEditorConfigurations();
+		case NattablePackage.TABLE__TABLE_KIND_ID:
+			return getTableKindId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablePackage.TABLE__CONTEXT:
+			setContext((EObject) newValue);
+			return;
+		case NattablePackage.TABLE__OWNER:
+			setOwner((EObject) newValue);
+			return;
+		case NattablePackage.TABLE__PROTOTYPE:
+			setPrototype((EObject) newValue);
+			return;
+		case NattablePackage.TABLE__TABLE_CONFIGURATION:
+			setTableConfiguration((TableConfiguration) newValue);
+			return;
+		case NattablePackage.TABLE__INVERT_AXIS:
+			setInvertAxis((Boolean) newValue);
+			return;
+		case NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY:
+			getColumnAxisProvidersHistory().clear();
+			getColumnAxisProvidersHistory().addAll((Collection<? extends AbstractAxisProvider>) newValue);
+			return;
+		case NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY:
+			getRowAxisProvidersHistory().clear();
+			getRowAxisProvidersHistory().addAll((Collection<? extends AbstractAxisProvider>) newValue);
+			return;
+		case NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION:
+			setLocalRowHeaderAxisConfiguration((LocalTableHeaderAxisConfiguration) newValue);
+			return;
+		case NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION:
+			setLocalColumnHeaderAxisConfiguration((LocalTableHeaderAxisConfiguration) newValue);
+			return;
+		case NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER:
+			setCurrentRowAxisProvider((AbstractAxisProvider) newValue);
+			return;
+		case NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER:
+			setCurrentColumnAxisProvider((AbstractAxisProvider) newValue);
+			return;
+		case NattablePackage.TABLE__CELLS:
+			getCells().clear();
+			getCells().addAll((Collection<? extends Cell>) newValue);
+			return;
+		case NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS:
+			setOwnedCellEditorConfigurations((ICellEditorConfiguration) newValue);
+			return;
+		case NattablePackage.TABLE__TABLE_KIND_ID:
+			setTableKindId((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablePackage.TABLE__CONTEXT:
+			setContext((EObject) null);
+			return;
+		case NattablePackage.TABLE__OWNER:
+			setOwner((EObject) null);
+			return;
+		case NattablePackage.TABLE__PROTOTYPE:
+			setPrototype((EObject) null);
+			return;
+		case NattablePackage.TABLE__TABLE_CONFIGURATION:
+			setTableConfiguration((TableConfiguration) null);
+			return;
+		case NattablePackage.TABLE__INVERT_AXIS:
+			setInvertAxis(INVERT_AXIS_EDEFAULT);
+			return;
+		case NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY:
+			getColumnAxisProvidersHistory().clear();
+			return;
+		case NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY:
+			getRowAxisProvidersHistory().clear();
+			return;
+		case NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION:
+			setLocalRowHeaderAxisConfiguration((LocalTableHeaderAxisConfiguration) null);
+			return;
+		case NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION:
+			setLocalColumnHeaderAxisConfiguration((LocalTableHeaderAxisConfiguration) null);
+			return;
+		case NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER:
+			setCurrentRowAxisProvider((AbstractAxisProvider) null);
+			return;
+		case NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER:
+			setCurrentColumnAxisProvider((AbstractAxisProvider) null);
+			return;
+		case NattablePackage.TABLE__CELLS:
+			getCells().clear();
+			return;
+		case NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS:
+			setOwnedCellEditorConfigurations((ICellEditorConfiguration) null);
+			return;
+		case NattablePackage.TABLE__TABLE_KIND_ID:
+			setTableKindId(TABLE_KIND_ID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablePackage.TABLE__CONTEXT:
+			return basicGetContext() != null;
+		case NattablePackage.TABLE__OWNER:
+			return basicGetOwner() != null;
+		case NattablePackage.TABLE__PROTOTYPE:
+			return basicGetPrototype() != null;
+		case NattablePackage.TABLE__TABLE_CONFIGURATION:
+			return basicGetTableConfiguration() != null;
+		case NattablePackage.TABLE__INVERT_AXIS:
+			return isInvertAxis() != INVERT_AXIS_EDEFAULT;
+		case NattablePackage.TABLE__COLUMN_AXIS_PROVIDERS_HISTORY:
+			return !getColumnAxisProvidersHistory().isEmpty();
+		case NattablePackage.TABLE__ROW_AXIS_PROVIDERS_HISTORY:
+			return !getRowAxisProvidersHistory().isEmpty();
+		case NattablePackage.TABLE__LOCAL_ROW_HEADER_AXIS_CONFIGURATION:
+			return getLocalRowHeaderAxisConfiguration() != null;
+		case NattablePackage.TABLE__LOCAL_COLUMN_HEADER_AXIS_CONFIGURATION:
+			return getLocalColumnHeaderAxisConfiguration() != null;
+		case NattablePackage.TABLE__CURRENT_ROW_AXIS_PROVIDER:
+			return basicGetCurrentRowAxisProvider() != null;
+		case NattablePackage.TABLE__CURRENT_COLUMN_AXIS_PROVIDER:
+			return basicGetCurrentColumnAxisProvider() != null;
+		case NattablePackage.TABLE__CELLS:
+			return !getCells().isEmpty();
+		case NattablePackage.TABLE__OWNED_CELL_EDITOR_CONFIGURATIONS:
+			return getOwnedCellEditorConfigurations() != null;
+		case NattablePackage.TABLE__TABLE_KIND_ID:
+			return TABLE_KIND_ID_EDEFAULT == null ? getTableKindId() != null : !TABLE_KIND_ID_EDEFAULT.equals(getTableKindId());
+		}
+		return super.eIsSet(featureID);
+	}
+} // TableImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/AxisGroupImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/AxisGroupImpl.java
new file mode 100644
index 0000000..fb84ad4
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/AxisGroupImpl.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.AxisGroup;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Axis Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.AxisGroupImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.AxisGroupImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.AxisGroupImpl#getGroupedAxis <em>Grouped Axis</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AxisGroupImpl extends StyledElementImpl implements AxisGroup {
+
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AxisGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.AXIS_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.AXIS_GROUP__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.AXIS_GROUP__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.AXIS_GROUP__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.AXIS_GROUP__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.AXIS_GROUP__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<IAxis> getGroupedAxis() {
+		return (EList<IAxis>)eDynamicGet(NattableaxisPackage.AXIS_GROUP__GROUPED_AXIS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.AXIS_GROUP__GROUPED_AXIS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getElement() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ILabelProviderConfiguration getLocalLabelConfiguration() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.AXIS_GROUP__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.AXIS_GROUP__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.AXIS_GROUP__GROUPED_AXIS:
+				return getGroupedAxis();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.AXIS_GROUP__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.AXIS_GROUP__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.AXIS_GROUP__GROUPED_AXIS:
+				getGroupedAxis().clear();
+				getGroupedAxis().addAll((Collection<? extends IAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.AXIS_GROUP__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.AXIS_GROUP__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.AXIS_GROUP__GROUPED_AXIS:
+				getGroupedAxis().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.AXIS_GROUP__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.AXIS_GROUP__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.AXIS_GROUP__GROUPED_AXIS:
+				return !getGroupedAxis().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisPackage.AXIS_GROUP___GET_ELEMENT:
+				return getElement();
+			case NattableaxisPackage.AXIS_GROUP___GET_LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // AxisGroupImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectAxisImpl.java
new file mode 100644
index 0000000..cf55583
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectAxisImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EObjectAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EObjectAxisImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectAxisImpl extends ObjectAxisImpl implements EObjectAxis {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObjectAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.EOBJECT_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject getElement() {
+		return (EObject)eDynamicGet(NattableaxisPackage.EOBJECT_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOBJECT_AXIS__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetElement() {
+		return (EObject)eDynamicGet(NattableaxisPackage.EOBJECT_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOBJECT_AXIS__ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElement(EObject newElement) {
+		eDynamicSet(NattableaxisPackage.EOBJECT_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOBJECT_AXIS__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_AXIS__ELEMENT:
+				if (resolve) return getElement();
+				return basicGetElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_AXIS__ELEMENT:
+				setElement((EObject)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_AXIS__ELEMENT:
+				setElement((EObject)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_AXIS__ELEMENT:
+				return basicGetElement() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // EObjectAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectTreeItemAxisImpl.java
new file mode 100644
index 0000000..eb573ec
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EObjectTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EObjectTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EObjectTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EObjectTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EObjectTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectTreeItemAxisImpl extends EObjectAxisImpl implements EObjectTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObjectTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.EOBJECT_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // EObjectTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationAxisImpl.java
new file mode 100644
index 0000000..c49ef0e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationAxisImpl.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EOperationAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EOperation Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EOperationAxisImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EOperationAxisImpl extends OperationAxisImpl implements EOperationAxis {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EOperationAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.EOPERATION_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getElement() {
+		return (EOperation)eDynamicGet(NattableaxisPackage.EOPERATION_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOPERATION_AXIS__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation basicGetElement() {
+		return (EOperation)eDynamicGet(NattableaxisPackage.EOPERATION_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOPERATION_AXIS__ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setElement(EOperation newElement) {
+		eDynamicSet(NattableaxisPackage.EOPERATION_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.EOPERATION_AXIS__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_AXIS__ELEMENT:
+				if (resolve) return getElement();
+				return basicGetElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_AXIS__ELEMENT:
+				setElement((EOperation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_AXIS__ELEMENT:
+				setElement((EOperation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_AXIS__ELEMENT:
+				return basicGetElement() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //EOperationAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationTreeItemAxisImpl.java
new file mode 100644
index 0000000..004e153
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EOperationTreeItemAxisImpl.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EOperationTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EOperation Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EOperationTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EOperationTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EOperationTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EOperationTreeItemAxisImpl extends EOperationAxisImpl implements EOperationTreeItemAxis {
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EOperationTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.EOPERATION_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} //EOperationTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureAxisImpl.java
new file mode 100644
index 0000000..81809b4
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureAxisImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EStructuralFeatureAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EStructural Feature Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EStructuralFeatureAxisImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EStructuralFeatureAxisImpl extends FeatureAxisImpl implements EStructuralFeatureAxis {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EStructuralFeatureAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.ESTRUCTURAL_FEATURE_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeature getElement() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ESTRUCTURAL_FEATURE_AXIS__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EStructuralFeature basicGetElement() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ESTRUCTURAL_FEATURE_AXIS__ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElement(EStructuralFeature newElement) {
+		eDynamicSet(NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ESTRUCTURAL_FEATURE_AXIS__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT:
+				if (resolve) return getElement();
+				return basicGetElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT:
+				setElement((EStructuralFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT:
+				setElement((EStructuralFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS__ELEMENT:
+				return basicGetElement() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // EStructuralFeatureAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureTreeItemAxisImpl.java
new file mode 100644
index 0000000..fa4cb11
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/EStructuralFeatureTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EStructuralFeatureTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EStructural Feature Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EStructuralFeatureTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EStructuralFeatureTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.EStructuralFeatureTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EStructuralFeatureTreeItemAxisImpl extends EStructuralFeatureAxisImpl implements EStructuralFeatureTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EStructuralFeatureTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // EStructuralFeatureTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureAxisImpl.java
new file mode 100644
index 0000000..046aecf
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureAxisImpl.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.FeatureLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureAxisImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureAxisImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class FeatureAxisImpl extends StyledElementImpl implements FeatureAxis {
+
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.FEATURE_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.FEATURE_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.FEATURE_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.FEATURE_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.FEATURE_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.FEATURE_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (FeatureLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(FeatureLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLocalLabelConfiguration(FeatureLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getElement() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_AXIS__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.FEATURE_AXIS__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_AXIS__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((FeatureLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.FEATURE_AXIS__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((FeatureLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_AXIS__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.FEATURE_AXIS__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisPackage.FEATURE_AXIS___GET_ELEMENT:
+				return getElement();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // FeatureAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdAxisImpl.java
new file mode 100644
index 0000000..478d8b1
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdAxisImpl.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.FeatureLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Id Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureIdAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FeatureIdAxisImpl extends IdAxisImpl implements FeatureIdAxis {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureIdAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.FEATURE_ID_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (FeatureLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(FeatureLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLocalLabelConfiguration(FeatureLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((FeatureLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((FeatureLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == FeatureAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == FeatureAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.FEATURE_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.FEATURE_ID_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // FeatureIdAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdTreeItemAxisImpl.java
new file mode 100644
index 0000000..834c894
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureIdTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureIdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Id Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureIdTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureIdTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureIdTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FeatureIdTreeItemAxisImpl extends FeatureIdAxisImpl implements FeatureIdTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureIdTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.FEATURE_ID_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // FeatureIdTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureTreeItemAxisImpl.java
new file mode 100644
index 0000000..59c86cf
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/FeatureTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.FeatureTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class FeatureTreeItemAxisImpl extends FeatureAxisImpl implements FeatureTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.FEATURE_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.FEATURE_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // FeatureTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdAxisImpl.java
new file mode 100644
index 0000000..d49d27b
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdAxisImpl.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Id Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdAxisImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdAxisImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdAxisImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class IdAxisImpl extends StyledElementImpl implements IdAxis {
+
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getElement() <em>Element</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ELEMENT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IdAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.ID_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.ID_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.ID_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.ID_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.ID_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.ID_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getElement() {
+		return (String)eDynamicGet(NattableaxisPackage.ID_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ID_AXIS__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElement(String newElement) {
+		eDynamicSet(NattableaxisPackage.ID_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ID_AXIS__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ILabelProviderConfiguration getLocalLabelConfiguration() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_AXIS__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.ID_AXIS__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.ID_AXIS__ELEMENT:
+				return getElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.ID_AXIS__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.ID_AXIS__ELEMENT:
+				setElement((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.ID_AXIS__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.ID_AXIS__ELEMENT:
+				setElement(ELEMENT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_AXIS__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.ID_AXIS__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.ID_AXIS__ELEMENT:
+				return ELEMENT_EDEFAULT == null ? getElement() != null : !ELEMENT_EDEFAULT.equals(getElement());
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisPackage.ID_AXIS___GET_LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // IdAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdTreeItemAxisImpl.java
new file mode 100644
index 0000000..b64113b
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/IdTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Id Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.IdTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IdTreeItemAxisImpl extends IdAxisImpl implements IdTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IdTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.ID_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ID_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ID_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ID_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // IdTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/NattableaxisFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/NattableaxisFactoryImpl.java
new file mode 100644
index 0000000..7e5dbb4
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/NattableaxisFactoryImpl.java
@@ -0,0 +1,273 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.AxisGroup;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EObjectAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EObjectTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EOperationAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EOperationTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EStructuralFeatureAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.EStructuralFeatureTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.FeatureIdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectIdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationIdTreeItemAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattableaxisFactoryImpl extends EFactoryImpl implements NattableaxisFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattableaxisFactory init() {
+		try {
+			NattableaxisFactory theNattableaxisFactory = (NattableaxisFactory)EPackage.Registry.INSTANCE.getEFactory(NattableaxisPackage.eNS_URI);
+			if (theNattableaxisFactory != null) {
+				return theNattableaxisFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableaxisFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattableaxisFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattableaxisPackage.ID_TREE_ITEM_AXIS: return createIdTreeItemAxis();
+			case NattableaxisPackage.EOBJECT_AXIS: return createEObjectAxis();
+			case NattableaxisPackage.EOBJECT_TREE_ITEM_AXIS: return createEObjectTreeItemAxis();
+			case NattableaxisPackage.FEATURE_ID_AXIS: return createFeatureIdAxis();
+			case NattableaxisPackage.FEATURE_ID_TREE_ITEM_AXIS: return createFeatureIdTreeItemAxis();
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_AXIS: return createEStructuralFeatureAxis();
+			case NattableaxisPackage.EOPERATION_AXIS: return createEOperationAxis();
+			case NattableaxisPackage.ESTRUCTURAL_FEATURE_TREE_ITEM_AXIS: return createEStructuralFeatureTreeItemAxis();
+			case NattableaxisPackage.EOPERATION_TREE_ITEM_AXIS: return createEOperationTreeItemAxis();
+			case NattableaxisPackage.OBJECT_ID_AXIS: return createObjectIdAxis();
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS: return createObjectIdTreeItemAxis();
+			case NattableaxisPackage.AXIS_GROUP: return createAxisGroup();
+			case NattableaxisPackage.OPERATION_ID_AXIS: return createOperationIdAxis();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS: return createOperationIdTreeItemAxis();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IdTreeItemAxis createIdTreeItemAxis() {
+		IdTreeItemAxisImpl idTreeItemAxis = new IdTreeItemAxisImpl();
+		return idTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObjectAxis createEObjectAxis() {
+		EObjectAxisImpl eObjectAxis = new EObjectAxisImpl();
+		return eObjectAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObjectTreeItemAxis createEObjectTreeItemAxis() {
+		EObjectTreeItemAxisImpl eObjectTreeItemAxis = new EObjectTreeItemAxisImpl();
+		return eObjectTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureIdAxis createFeatureIdAxis() {
+		FeatureIdAxisImpl featureIdAxis = new FeatureIdAxisImpl();
+		return featureIdAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureIdTreeItemAxis createFeatureIdTreeItemAxis() {
+		FeatureIdTreeItemAxisImpl featureIdTreeItemAxis = new FeatureIdTreeItemAxisImpl();
+		return featureIdTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeatureAxis createEStructuralFeatureAxis() {
+		EStructuralFeatureAxisImpl eStructuralFeatureAxis = new EStructuralFeatureAxisImpl();
+		return eStructuralFeatureAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperationAxis createEOperationAxis() {
+		EOperationAxisImpl eOperationAxis = new EOperationAxisImpl();
+		return eOperationAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeatureTreeItemAxis createEStructuralFeatureTreeItemAxis() {
+		EStructuralFeatureTreeItemAxisImpl eStructuralFeatureTreeItemAxis = new EStructuralFeatureTreeItemAxisImpl();
+		return eStructuralFeatureTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperationTreeItemAxis createEOperationTreeItemAxis() {
+		EOperationTreeItemAxisImpl eOperationTreeItemAxis = new EOperationTreeItemAxisImpl();
+		return eOperationTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ObjectIdAxis createObjectIdAxis() {
+		ObjectIdAxisImpl objectIdAxis = new ObjectIdAxisImpl();
+		return objectIdAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ObjectIdTreeItemAxis createObjectIdTreeItemAxis() {
+		ObjectIdTreeItemAxisImpl objectIdTreeItemAxis = new ObjectIdTreeItemAxisImpl();
+		return objectIdTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisGroup createAxisGroup() {
+		AxisGroupImpl axisGroup = new AxisGroupImpl();
+		return axisGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationIdAxis createOperationIdAxis() {
+		OperationIdAxisImpl operationIdAxis = new OperationIdAxisImpl();
+		return operationIdAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationIdTreeItemAxis createOperationIdTreeItemAxis() {
+		OperationIdTreeItemAxisImpl operationIdTreeItemAxis = new OperationIdTreeItemAxisImpl();
+		return operationIdTreeItemAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattableaxisPackage getNattableaxisPackage() {
+		return (NattableaxisPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattableaxisPackage getPackage() {
+		return NattableaxisPackage.eINSTANCE;
+	}
+} // NattableaxisFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectAxisImpl.java
new file mode 100644
index 0000000..cfc1dc3
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectAxisImpl.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ObjectLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectAxisImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectAxisImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ObjectAxisImpl extends StyledElementImpl implements ObjectAxis {
+
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OBJECT_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OBJECT_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OBJECT_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.OBJECT_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.OBJECT_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.OBJECT_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ObjectLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (ObjectLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(ObjectLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLocalLabelConfiguration(ObjectLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getElement() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_AXIS__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.OBJECT_AXIS__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_AXIS__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((ObjectLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.OBJECT_AXIS__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((ObjectLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_AXIS__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.OBJECT_AXIS__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisPackage.OBJECT_AXIS___GET_ELEMENT:
+				return getElement();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // ObjectAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdAxisImpl.java
new file mode 100644
index 0000000..c6b840d
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdAxisImpl.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ObjectLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object Id Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectIdAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ObjectIdAxisImpl extends IdAxisImpl implements ObjectIdAxis {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectIdAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OBJECT_ID_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ObjectLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (ObjectLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(ObjectLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLocalLabelConfiguration(ObjectLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((ObjectLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((ObjectLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ObjectAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ObjectAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.OBJECT_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OBJECT_ID_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // ObjectIdAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdTreeItemAxisImpl.java
new file mode 100644
index 0000000..ec00308
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectIdTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectIdTreeItemAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object Id Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectIdTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectIdTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectIdTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ObjectIdTreeItemAxisImpl extends ObjectIdAxisImpl implements ObjectIdTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectIdTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OBJECT_ID_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.OBJECT_ID_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // ObjectIdTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectTreeItemAxisImpl.java
new file mode 100644
index 0000000..7b63170
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/ObjectTreeItemAxisImpl.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ObjectTreeItemAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.ObjectTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ObjectTreeItemAxisImpl extends ObjectAxisImpl implements ObjectTreeItemAxis {
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OBJECT_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.OBJECT_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+} // ObjectTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationAxisImpl.java
new file mode 100644
index 0000000..ab0d4c8
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationAxisImpl.java
@@ -0,0 +1,265 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.OperationLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationAxisImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationAxisImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class OperationAxisImpl extends StyledElementImpl implements OperationAxis {
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OperationAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OPERATION_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OPERATION_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OPERATION_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.OPERATION_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.OPERATION_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.OPERATION_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (OperationLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object getElement() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_AXIS__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.OPERATION_AXIS__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_AXIS__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.OPERATION_AXIS__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_AXIS__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.OPERATION_AXIS__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisPackage.OPERATION_AXIS___GET_ELEMENT:
+				return getElement();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //OperationAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdAxisImpl.java
new file mode 100644
index 0000000..ec8a596
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdAxisImpl.java
@@ -0,0 +1,189 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.OperationLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Id Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OperationIdAxisImpl extends IdAxisImpl implements OperationIdAxis {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OperationIdAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OPERATION_ID_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (OperationLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == OperationAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == OperationAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OPERATION_ID_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} //OperationIdAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdTreeItemAxisImpl.java
new file mode 100644
index 0000000..546429a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationIdTreeItemAxisImpl.java
@@ -0,0 +1,472 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationIdAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationIdTreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.OperationLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Id Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getManager <em>Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getAlias <em>Alias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getElement <em>Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationIdTreeItemAxisImpl#getLocalLabelConfiguration <em>Local Label Configuration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OperationIdTreeItemAxisImpl extends StyledElementImpl implements OperationIdTreeItemAxis {
+	/**
+	 * The default value of the '{@link #getAlias() <em>Alias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALIAS_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #getElement() <em>Element</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ELEMENT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OperationIdTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OPERATION_ID_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation getManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setManager(AxisManagerRepresentation newManager) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__MANAGER, newManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAlias() {
+		return (String)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAlias(String newAlias) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.IAXIS__ALIAS, newAlias);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getElement() {
+		return (String)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ID_AXIS__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setElement(String newElement) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ID_AXIS__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationLabelProviderConfiguration getLocalLabelConfiguration() {
+		return (OperationLabelProviderConfiguration)eDynamicGet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newLocalLabelConfiguration, NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLocalLabelConfiguration(OperationLabelProviderConfiguration newLocalLabelConfiguration) {
+		eDynamicSet(NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION, newLocalLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return basicSetLocalLabelConfiguration(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER:
+				if (resolve) return getManager();
+				return basicGetManager();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS:
+				return getAlias();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT:
+				return getElement();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS:
+				setAlias((String)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT:
+				setElement((String)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER:
+				setManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS:
+				setAlias(ALIAS_EDEFAULT);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT:
+				setElement(ELEMENT_EDEFAULT);
+				return;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION:
+				setLocalLabelConfiguration((OperationLabelProviderConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__MANAGER:
+				return basicGetManager() != null;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ALIAS:
+				return ALIAS_EDEFAULT == null ? getAlias() != null : !ALIAS_EDEFAULT.equals(getAlias());
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT:
+				return ELEMENT_EDEFAULT == null ? getElement() != null : !ELEMENT_EDEFAULT.equals(getElement());
+			case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION:
+				return getLocalLabelConfiguration() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == IdAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT: return NattableaxisPackage.ID_AXIS__ELEMENT;
+				default: return -1;
+			}
+		}
+		if (baseClass == OperationAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		if (baseClass == OperationIdAxis.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == IdAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ID_AXIS__ELEMENT: return NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__ELEMENT;
+				default: return -1;
+			}
+		}
+		if (baseClass == OperationAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.OPERATION_AXIS__LOCAL_LABEL_CONFIGURATION: return NattableaxisPackage.OPERATION_ID_TREE_ITEM_AXIS__LOCAL_LABEL_CONFIGURATION;
+				default: return -1;
+			}
+		}
+		if (baseClass == OperationIdAxis.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} //OperationIdTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationTreeItemAxisImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationTreeItemAxisImpl.java
new file mode 100644
index 0000000..922b2a6
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxis/impl/OperationTreeItemAxisImpl.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.ITreeItemAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.NattableaxisPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.OperationTreeItemAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Tree Item Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationTreeItemAxisImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationTreeItemAxisImpl#isExpanded <em>Expanded</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxis.impl.OperationTreeItemAxisImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class OperationTreeItemAxisImpl extends OperationAxisImpl implements OperationTreeItemAxis {
+	/**
+	 * The default value of the '{@link #isExpanded() <em>Expanded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExpanded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXPANDED_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OperationTreeItemAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisPackage.Literals.OPERATION_TREE_ITEM_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis getParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ITreeItemAxis basicGetParent() {
+		return (ITreeItemAxis)eDynamicGet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(ITreeItemAxis newParent, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newParent, NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(ITreeItemAxis newParent) {
+		eDynamicSet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__PARENT, newParent);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExpanded() {
+		return (Boolean)eDynamicGet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpanded(boolean newExpanded) {
+		eDynamicSet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__EXPANDED, newExpanded);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<ITreeItemAxis> getChildren() {
+		return (EList<ITreeItemAxis>)eDynamicGet(NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN - ESTATIC_FEATURE_COUNT, NattableaxisPackage.Literals.ITREE_ITEM_AXIS__CHILDREN, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				ITreeItemAxis parent = basicGetParent();
+				if (parent != null)
+					msgs = ((InternalEObject)parent).eInverseRemove(this, NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN, ITreeItemAxis.class, msgs);
+				return basicSetParent((ITreeItemAxis)otherEnd, msgs);
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				return basicSetParent(null, msgs);
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded();
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return getChildren();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded((Boolean)newValue);
+				return;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				getChildren().addAll((Collection<? extends ITreeItemAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				setParent((ITreeItemAxis)null);
+				return;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED:
+				setExpanded(EXPANDED_EDEFAULT);
+				return;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				getChildren().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT:
+				return basicGetParent() != null;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED:
+				return isExpanded() != EXPANDED_EDEFAULT;
+			case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN:
+				return !getChildren().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (derivedFeatureID) {
+				case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT: return NattableaxisPackage.ITREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ITreeItemAxis.class) {
+			switch (baseFeatureID) {
+				case NattableaxisPackage.ITREE_ITEM_AXIS__PARENT: return NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__PARENT;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__EXPANDED: return NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__EXPANDED;
+				case NattableaxisPackage.ITREE_ITEM_AXIS__CHILDREN: return NattableaxisPackage.OPERATION_TREE_ITEM_AXIS__CHILDREN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+} //OperationTreeItemAxisImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AbstractHeaderAxisConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AbstractHeaderAxisConfigurationImpl.java
new file mode 100644
index 0000000..c06ad00
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AbstractHeaderAxisConfigurationImpl.java
@@ -0,0 +1,338 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AbstractHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisIndexStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.IAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Header Axis Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#getIndexStyle <em>Index Style</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#isDisplayLabel <em>Display Label</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#isDisplayFilter <em>Display Filter</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#isDisplayIndex <em>Display Index</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#getOwnedLabelConfigurations <em>Owned Label Configurations</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AbstractHeaderAxisConfigurationImpl#getOwnedAxisConfigurations <em>Owned Axis Configurations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AbstractHeaderAxisConfigurationImpl extends StyledElementImpl implements AbstractHeaderAxisConfiguration {
+
+	/**
+	 * The default value of the '{@link #getIndexStyle() <em>Index Style</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIndexStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final AxisIndexStyle INDEX_STYLE_EDEFAULT = AxisIndexStyle.ALPHABETIC;
+
+	/**
+	 * The default value of the '{@link #isDisplayLabel() <em>Display Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_LABEL_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayFilter() <em>Display Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_FILTER_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #isDisplayIndex() <em>Display Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayIndex()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_INDEX_EDEFAULT = true;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AbstractHeaderAxisConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisIndexStyle getIndexStyle() {
+		return (AxisIndexStyle)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIndexStyle(AxisIndexStyle newIndexStyle) {
+		eDynamicSet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE, newIndexStyle);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayLabel() {
+		return (Boolean)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayLabel(boolean newDisplayLabel) {
+		eDynamicSet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL, newDisplayLabel);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayFilter() {
+		return (Boolean)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayFilter(boolean newDisplayFilter) {
+		eDynamicSet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER, newDisplayFilter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayIndex() {
+		return (Boolean)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayIndex(boolean newDisplayIndex) {
+		eDynamicSet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX, newDisplayIndex);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<ILabelProviderConfiguration> getOwnedLabelConfigurations() {
+		return (EList<ILabelProviderConfiguration>)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<IAxisConfiguration> getOwnedAxisConfigurations() {
+		return (EList<IAxisConfiguration>)eDynamicGet(NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS:
+				return ((InternalEList<?>)getOwnedLabelConfigurations()).basicRemove(otherEnd, msgs);
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS:
+				return ((InternalEList<?>)getOwnedAxisConfigurations()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE:
+				return getIndexStyle();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL:
+				return isDisplayLabel();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER:
+				return isDisplayFilter();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX:
+				return isDisplayIndex();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS:
+				return getOwnedLabelConfigurations();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS:
+				return getOwnedAxisConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE:
+				setIndexStyle((AxisIndexStyle)newValue);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL:
+				setDisplayLabel((Boolean)newValue);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER:
+				setDisplayFilter((Boolean)newValue);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX:
+				setDisplayIndex((Boolean)newValue);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS:
+				getOwnedLabelConfigurations().clear();
+				getOwnedLabelConfigurations().addAll((Collection<? extends ILabelProviderConfiguration>)newValue);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS:
+				getOwnedAxisConfigurations().clear();
+				getOwnedAxisConfigurations().addAll((Collection<? extends IAxisConfiguration>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE:
+				setIndexStyle(INDEX_STYLE_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL:
+				setDisplayLabel(DISPLAY_LABEL_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER:
+				setDisplayFilter(DISPLAY_FILTER_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX:
+				setDisplayIndex(DISPLAY_INDEX_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS:
+				getOwnedLabelConfigurations().clear();
+				return;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS:
+				getOwnedAxisConfigurations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__INDEX_STYLE:
+				return getIndexStyle() != INDEX_STYLE_EDEFAULT;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_LABEL:
+				return isDisplayLabel() != DISPLAY_LABEL_EDEFAULT;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_FILTER:
+				return isDisplayFilter() != DISPLAY_FILTER_EDEFAULT;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__DISPLAY_INDEX:
+				return isDisplayIndex() != DISPLAY_INDEX_EDEFAULT;
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_LABEL_CONFIGURATIONS:
+				return !getOwnedLabelConfigurations().isEmpty();
+			case NattableaxisconfigurationPackage.ABSTRACT_HEADER_AXIS_CONFIGURATION__OWNED_AXIS_CONFIGURATIONS:
+				return !getOwnedAxisConfigurations().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // AbstractHeaderAxisConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerConfigurationImpl.java
new file mode 100644
index 0000000..385e3ed
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerConfigurationImpl.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.IAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Axis Manager Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerConfigurationImpl#getLocalHeaderLabelConfiguration <em>Local Header Label Configuration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerConfigurationImpl#getAxisManager <em>Axis Manager</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerConfigurationImpl#getLocalSpecificConfigurations <em>Local Specific Configurations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AxisManagerConfigurationImpl extends StyledElementImpl implements AxisManagerConfiguration {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AxisManagerConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ILabelProviderConfiguration getLocalHeaderLabelConfiguration() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ILabelProviderConfiguration basicGetLocalHeaderLabelConfiguration() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLocalHeaderLabelConfiguration(ILabelProviderConfiguration newLocalHeaderLabelConfiguration) {
+		eDynamicSet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION, newLocalHeaderLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation getAxisManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisManagerRepresentation basicGetAxisManager() {
+		return (AxisManagerRepresentation)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAxisManager(AxisManagerRepresentation newAxisManager) {
+		eDynamicSet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER, newAxisManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<IAxisConfiguration> getLocalSpecificConfigurations() {
+		return (EList<IAxisConfiguration>)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION:
+				if (resolve) return getLocalHeaderLabelConfiguration();
+				return basicGetLocalHeaderLabelConfiguration();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER:
+				if (resolve) return getAxisManager();
+				return basicGetAxisManager();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS:
+				return getLocalSpecificConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION:
+				setLocalHeaderLabelConfiguration((ILabelProviderConfiguration)newValue);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER:
+				setAxisManager((AxisManagerRepresentation)newValue);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS:
+				getLocalSpecificConfigurations().clear();
+				getLocalSpecificConfigurations().addAll((Collection<? extends IAxisConfiguration>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION:
+				setLocalHeaderLabelConfiguration((ILabelProviderConfiguration)null);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER:
+				setAxisManager((AxisManagerRepresentation)null);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS:
+				getLocalSpecificConfigurations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_HEADER_LABEL_CONFIGURATION:
+				return basicGetLocalHeaderLabelConfiguration() != null;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__AXIS_MANAGER:
+				return basicGetAxisManager() != null;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION__LOCAL_SPECIFIC_CONFIGURATIONS:
+				return !getLocalSpecificConfigurations().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // AxisManagerConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerRepresentationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerRepresentationImpl.java
new file mode 100644
index 0000000..8803ace
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/AxisManagerRepresentationImpl.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.IAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Axis Manager Representation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerRepresentationImpl#getAxisManagerId <em>Axis Manager Id</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerRepresentationImpl#getLabelProviderContext <em>Label Provider Context</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerRepresentationImpl#getHeaderLabelConfiguration <em>Header Label Configuration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.AxisManagerRepresentationImpl#getSpecificAxisConfigurations <em>Specific Axis Configurations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AxisManagerRepresentationImpl extends StyledElementImpl implements AxisManagerRepresentation {
+
+	/**
+	 * The default value of the '{@link #getAxisManagerId() <em>Axis Manager Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxisManagerId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AXIS_MANAGER_ID_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getLabelProviderContext() <em>Label Provider Context</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabelProviderContext()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_PROVIDER_CONTEXT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AxisManagerRepresentationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getAxisManagerId() {
+		return (String)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAxisManagerId(String newAxisManagerId) {
+		eDynamicSet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID, newAxisManagerId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLabelProviderContext() {
+		return (String)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLabelProviderContext(String newLabelProviderContext) {
+		eDynamicSet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT, newLabelProviderContext);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ILabelProviderConfiguration getHeaderLabelConfiguration() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ILabelProviderConfiguration basicGetHeaderLabelConfiguration() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHeaderLabelConfiguration(ILabelProviderConfiguration newHeaderLabelConfiguration) {
+		eDynamicSet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION, newHeaderLabelConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<IAxisConfiguration> getSpecificAxisConfigurations() {
+		return (EList<IAxisConfiguration>)eDynamicGet(NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID:
+				return getAxisManagerId();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT:
+				return getLabelProviderContext();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION:
+				if (resolve) return getHeaderLabelConfiguration();
+				return basicGetHeaderLabelConfiguration();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS:
+				return getSpecificAxisConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID:
+				setAxisManagerId((String)newValue);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT:
+				setLabelProviderContext((String)newValue);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION:
+				setHeaderLabelConfiguration((ILabelProviderConfiguration)newValue);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS:
+				getSpecificAxisConfigurations().clear();
+				getSpecificAxisConfigurations().addAll((Collection<? extends IAxisConfiguration>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID:
+				setAxisManagerId(AXIS_MANAGER_ID_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT:
+				setLabelProviderContext(LABEL_PROVIDER_CONTEXT_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION:
+				setHeaderLabelConfiguration((ILabelProviderConfiguration)null);
+				return;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS:
+				getSpecificAxisConfigurations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__AXIS_MANAGER_ID:
+				return AXIS_MANAGER_ID_EDEFAULT == null ? getAxisManagerId() != null : !AXIS_MANAGER_ID_EDEFAULT.equals(getAxisManagerId());
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__LABEL_PROVIDER_CONTEXT:
+				return LABEL_PROVIDER_CONTEXT_EDEFAULT == null ? getLabelProviderContext() != null : !LABEL_PROVIDER_CONTEXT_EDEFAULT.equals(getLabelProviderContext());
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__HEADER_LABEL_CONFIGURATION:
+				return basicGetHeaderLabelConfiguration() != null;
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION__SPECIFIC_AXIS_CONFIGURATIONS:
+				return !getSpecificAxisConfigurations().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // AxisManagerRepresentationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/EStructuralFeatureValueFillingConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/EStructuralFeatureValueFillingConfigurationImpl.java
new file mode 100644
index 0000000..f63995f
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/EStructuralFeatureValueFillingConfigurationImpl.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.EStructuralFeatureValueFillingConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EStructural Feature Value Filling Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.EStructuralFeatureValueFillingConfigurationImpl#getListenFeature <em>Listen Feature</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EStructuralFeatureValueFillingConfigurationImpl extends StyledElementImpl implements EStructuralFeatureValueFillingConfiguration {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EStructuralFeatureValueFillingConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeature getListenFeature() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EStructuralFeature basicGetListenFeature() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setListenFeature(EStructuralFeature newListenFeature) {
+		eDynamicSet(NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE, newListenFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE:
+				if (resolve) return getListenFeature();
+				return basicGetListenFeature();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE:
+				setListenFeature((EStructuralFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE:
+				setListenFeature((EStructuralFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION__LISTEN_FEATURE:
+				return basicGetListenFeature() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // EStructuralFeatureValueFillingConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/FeatureAxisConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/FeatureAxisConfigurationImpl.java
new file mode 100644
index 0000000..fb94483
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/FeatureAxisConfigurationImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.FeatureAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Axis Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.FeatureAxisConfigurationImpl#isShowOnlyCommonFeature <em>Show Only Common Feature</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FeatureAxisConfigurationImpl extends StyledElementImpl implements FeatureAxisConfiguration {
+
+	/**
+	 * The default value of the '{@link #isShowOnlyCommonFeature() <em>Show Only Common Feature</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShowOnlyCommonFeature()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SHOW_ONLY_COMMON_FEATURE_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureAxisConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.FEATURE_AXIS_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isShowOnlyCommonFeature() {
+		return (Boolean)eDynamicGet(NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setShowOnlyCommonFeature(boolean newShowOnlyCommonFeature) {
+		eDynamicSet(NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE, newShowOnlyCommonFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE:
+				return isShowOnlyCommonFeature();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE:
+				setShowOnlyCommonFeature((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE:
+				setShowOnlyCommonFeature(SHOW_ONLY_COMMON_FEATURE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION__SHOW_ONLY_COMMON_FEATURE:
+				return isShowOnlyCommonFeature() != SHOW_ONLY_COMMON_FEATURE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // FeatureAxisConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/IPasteConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/IPasteConfigurationImpl.java
new file mode 100644
index 0000000..249992a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/IPasteConfigurationImpl.java
@@ -0,0 +1,170 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.IPasteConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>IPaste Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.IPasteConfigurationImpl#getPostActions <em>Post Actions</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.IPasteConfigurationImpl#isDetachedMode <em>Detached Mode</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IPasteConfigurationImpl extends StyledElementImpl implements IPasteConfiguration {
+
+	/**
+	 * The default value of the '{@link #isDetachedMode() <em>Detached Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDetachedMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DETACHED_MODE_EDEFAULT = true;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPasteConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.IPASTE_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<String> getPostActions() {
+		return (EList<String>)eDynamicGet(NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__POST_ACTIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.IPASTE_CONFIGURATION__POST_ACTIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDetachedMode() {
+		return (Boolean)eDynamicGet(NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.IPASTE_CONFIGURATION__DETACHED_MODE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDetachedMode(boolean newDetachedMode) {
+		eDynamicSet(NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.IPASTE_CONFIGURATION__DETACHED_MODE, newDetachedMode);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__POST_ACTIONS:
+				return getPostActions();
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE:
+				return isDetachedMode();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__POST_ACTIONS:
+				getPostActions().clear();
+				getPostActions().addAll((Collection<? extends String>)newValue);
+				return;
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE:
+				setDetachedMode((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__POST_ACTIONS:
+				getPostActions().clear();
+				return;
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE:
+				setDetachedMode(DETACHED_MODE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__POST_ACTIONS:
+				return !getPostActions().isEmpty();
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION__DETACHED_MODE:
+				return isDetachedMode() != DETACHED_MODE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // IPasteConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/LocalTableHeaderAxisConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/LocalTableHeaderAxisConfigurationImpl.java
new file mode 100644
index 0000000..bff0824
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/LocalTableHeaderAxisConfigurationImpl.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.LocalTableHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Local Table Header Axis Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.LocalTableHeaderAxisConfigurationImpl#getAxisManagerConfigurations <em>Axis Manager Configurations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LocalTableHeaderAxisConfigurationImpl extends AbstractHeaderAxisConfigurationImpl implements LocalTableHeaderAxisConfiguration {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LocalTableHeaderAxisConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AxisManagerConfiguration> getAxisManagerConfigurations() {
+		return (EList<AxisManagerConfiguration>)eDynamicGet(NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS:
+				return ((InternalEList<?>)getAxisManagerConfigurations()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS:
+				return getAxisManagerConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS:
+				getAxisManagerConfigurations().clear();
+				getAxisManagerConfigurations().addAll((Collection<? extends AxisManagerConfiguration>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS:
+				getAxisManagerConfigurations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGER_CONFIGURATIONS:
+				return !getAxisManagerConfigurations().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // LocalTableHeaderAxisConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/NattableaxisconfigurationFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/NattableaxisconfigurationFactoryImpl.java
new file mode 100644
index 0000000..ae659ac
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/NattableaxisconfigurationFactoryImpl.java
@@ -0,0 +1,264 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisIndexStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.EStructuralFeatureValueFillingConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.FeatureAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.IPasteConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.LocalTableHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.PasteEObjectConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.TableHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.TreeFillingConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattableaxisconfigurationFactoryImpl extends EFactoryImpl implements NattableaxisconfigurationFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattableaxisconfigurationFactory init() {
+		try {
+			NattableaxisconfigurationFactory theNattableaxisconfigurationFactory = (NattableaxisconfigurationFactory)EPackage.Registry.INSTANCE.getEFactory(NattableaxisconfigurationPackage.eNS_URI);
+			if (theNattableaxisconfigurationFactory != null) {
+				return theNattableaxisconfigurationFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableaxisconfigurationFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattableaxisconfigurationFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_REPRESENTATION: return createAxisManagerRepresentation();
+			case NattableaxisconfigurationPackage.AXIS_MANAGER_CONFIGURATION: return createAxisManagerConfiguration();
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION: return createTableHeaderAxisConfiguration();
+			case NattableaxisconfigurationPackage.LOCAL_TABLE_HEADER_AXIS_CONFIGURATION: return createLocalTableHeaderAxisConfiguration();
+			case NattableaxisconfigurationPackage.FEATURE_AXIS_CONFIGURATION: return createFeatureAxisConfiguration();
+			case NattableaxisconfigurationPackage.ESTRUCTURAL_FEATURE_VALUE_FILLING_CONFIGURATION: return createEStructuralFeatureValueFillingConfiguration();
+			case NattableaxisconfigurationPackage.IPASTE_CONFIGURATION: return createIPasteConfiguration();
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION: return createPasteEObjectConfiguration();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION: return createTreeFillingConfiguration();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattableaxisconfigurationPackage.AXIS_INDEX_STYLE:
+				return createAxisIndexStyleFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattableaxisconfigurationPackage.AXIS_INDEX_STYLE:
+				return convertAxisIndexStyleToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerRepresentation createAxisManagerRepresentation() {
+		AxisManagerRepresentationImpl axisManagerRepresentation = new AxisManagerRepresentationImpl();
+		return axisManagerRepresentation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AxisManagerConfiguration createAxisManagerConfiguration() {
+		AxisManagerConfigurationImpl axisManagerConfiguration = new AxisManagerConfigurationImpl();
+		return axisManagerConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableHeaderAxisConfiguration createTableHeaderAxisConfiguration() {
+		TableHeaderAxisConfigurationImpl tableHeaderAxisConfiguration = new TableHeaderAxisConfigurationImpl();
+		return tableHeaderAxisConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LocalTableHeaderAxisConfiguration createLocalTableHeaderAxisConfiguration() {
+		LocalTableHeaderAxisConfigurationImpl localTableHeaderAxisConfiguration = new LocalTableHeaderAxisConfigurationImpl();
+		return localTableHeaderAxisConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureAxisConfiguration createFeatureAxisConfiguration() {
+		FeatureAxisConfigurationImpl featureAxisConfiguration = new FeatureAxisConfigurationImpl();
+		return featureAxisConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeatureValueFillingConfiguration createEStructuralFeatureValueFillingConfiguration() {
+		EStructuralFeatureValueFillingConfigurationImpl eStructuralFeatureValueFillingConfiguration = new EStructuralFeatureValueFillingConfigurationImpl();
+		return eStructuralFeatureValueFillingConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IPasteConfiguration createIPasteConfiguration() {
+		IPasteConfigurationImpl iPasteConfiguration = new IPasteConfigurationImpl();
+		return iPasteConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PasteEObjectConfiguration createPasteEObjectConfiguration() {
+		PasteEObjectConfigurationImpl pasteEObjectConfiguration = new PasteEObjectConfigurationImpl();
+		return pasteEObjectConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TreeFillingConfiguration createTreeFillingConfiguration() {
+		TreeFillingConfigurationImpl treeFillingConfiguration = new TreeFillingConfigurationImpl();
+		return treeFillingConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisIndexStyle createAxisIndexStyleFromString(EDataType eDataType, String initialValue) {
+		AxisIndexStyle result = AxisIndexStyle.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertAxisIndexStyleToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattableaxisconfigurationPackage getNattableaxisconfigurationPackage() {
+		return (NattableaxisconfigurationPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattableaxisconfigurationPackage getPackage() {
+		return NattableaxisconfigurationPackage.eINSTANCE;
+	}
+} // NattableaxisconfigurationFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/PasteEObjectConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/PasteEObjectConfigurationImpl.java
new file mode 100644
index 0000000..7033d46
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/PasteEObjectConfigurationImpl.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.PasteEObjectConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Paste EObject Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.PasteEObjectConfigurationImpl#getPastedElementId <em>Pasted Element Id</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.PasteEObjectConfigurationImpl#getPasteElementContainementFeature <em>Paste Element Containement Feature</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.PasteEObjectConfigurationImpl#getAxisIdentifier <em>Axis Identifier</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PasteEObjectConfigurationImpl extends IPasteConfigurationImpl implements PasteEObjectConfiguration {
+
+	/**
+	 * The default value of the '{@link #getPastedElementId() <em>Pasted Element Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPastedElementId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PASTED_ELEMENT_ID_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PasteEObjectConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPastedElementId() {
+		return (String)eDynamicGet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPastedElementId(String newPastedElementId) {
+		eDynamicSet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID, newPastedElementId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EStructuralFeature getPasteElementContainementFeature() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EStructuralFeature basicGetPasteElementContainementFeature() {
+		return (EStructuralFeature)eDynamicGet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPasteElementContainementFeature(EStructuralFeature newPasteElementContainementFeature) {
+		eDynamicSet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE, newPasteElementContainementFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IAxis getAxisIdentifier() {
+		return (IAxis)eDynamicGet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAxisIdentifier(IAxis newAxisIdentifier, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newAxisIdentifier, NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAxisIdentifier(IAxis newAxisIdentifier) {
+		eDynamicSet(NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER, newAxisIdentifier);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER:
+				return basicSetAxisIdentifier(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID:
+				return getPastedElementId();
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE:
+				if (resolve) return getPasteElementContainementFeature();
+				return basicGetPasteElementContainementFeature();
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER:
+				return getAxisIdentifier();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID:
+				setPastedElementId((String)newValue);
+				return;
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE:
+				setPasteElementContainementFeature((EStructuralFeature)newValue);
+				return;
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER:
+				setAxisIdentifier((IAxis)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID:
+				setPastedElementId(PASTED_ELEMENT_ID_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE:
+				setPasteElementContainementFeature((EStructuralFeature)null);
+				return;
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER:
+				setAxisIdentifier((IAxis)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTED_ELEMENT_ID:
+				return PASTED_ELEMENT_ID_EDEFAULT == null ? getPastedElementId() != null : !PASTED_ELEMENT_ID_EDEFAULT.equals(getPastedElementId());
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__PASTE_ELEMENT_CONTAINEMENT_FEATURE:
+				return basicGetPasteElementContainementFeature() != null;
+			case NattableaxisconfigurationPackage.PASTE_EOBJECT_CONFIGURATION__AXIS_IDENTIFIER:
+				return getAxisIdentifier() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // PasteEObjectConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TableHeaderAxisConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TableHeaderAxisConfigurationImpl.java
new file mode 100644
index 0000000..f066631
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TableHeaderAxisConfigurationImpl.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.AxisManagerRepresentation;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.TableHeaderAxisConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Header Axis Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TableHeaderAxisConfigurationImpl#getAxisManagers <em>Axis Managers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableHeaderAxisConfigurationImpl extends AbstractHeaderAxisConfigurationImpl implements TableHeaderAxisConfiguration {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableHeaderAxisConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.TABLE_HEADER_AXIS_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AxisManagerRepresentation> getAxisManagers() {
+		return (EList<AxisManagerRepresentation>)eDynamicGet(NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS:
+				return ((InternalEList<?>)getAxisManagers()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS:
+				return getAxisManagers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS:
+				getAxisManagers().clear();
+				getAxisManagers().addAll((Collection<? extends AxisManagerRepresentation>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS:
+				getAxisManagers().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TABLE_HEADER_AXIS_CONFIGURATION__AXIS_MANAGERS:
+				return !getAxisManagers().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // TableHeaderAxisConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TreeFillingConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TreeFillingConfigurationImpl.java
new file mode 100644
index 0000000..c979798
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisconfiguration/impl/TreeFillingConfigurationImpl.java
@@ -0,0 +1,368 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.emf.expressions.booleanexpressions.IBooleanEObjectExpression;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.NattableaxisconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.PasteEObjectConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.TreeFillingConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ILabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tree Filling Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getAxisUsedAsAxisProvider <em>Axis Used As Axis Provider</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getPasteConfiguration <em>Paste Configuration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getDepth <em>Depth</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getLabelProvider <em>Label Provider</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getLabelProviderContext <em>Label Provider Context</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisconfiguration.impl.TreeFillingConfigurationImpl#getFilterRule <em>Filter Rule</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TreeFillingConfigurationImpl extends StyledElementImpl implements TreeFillingConfiguration {
+
+	/**
+	 * The default value of the '{@link #getDepth() <em>Depth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DEPTH_EDEFAULT = 0;
+
+	/**
+	 * The default value of the '{@link #getLabelProviderContext() <em>Label Provider Context</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabelProviderContext()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_PROVIDER_CONTEXT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeFillingConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IAxis getAxisUsedAsAxisProvider() {
+		return (IAxis)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAxisUsedAsAxisProvider(IAxis newAxisUsedAsAxisProvider, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newAxisUsedAsAxisProvider, NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAxisUsedAsAxisProvider(IAxis newAxisUsedAsAxisProvider) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER, newAxisUsedAsAxisProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PasteEObjectConfiguration getPasteConfiguration() {
+		return (PasteEObjectConfiguration)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PasteEObjectConfiguration basicGetPasteConfiguration() {
+		return (PasteEObjectConfiguration)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPasteConfiguration(PasteEObjectConfiguration newPasteConfiguration) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION, newPasteConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getDepth() {
+		return (Integer)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__DEPTH, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepth(int newDepth) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__DEPTH, newDepth);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ILabelProviderConfiguration getLabelProvider() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ILabelProviderConfiguration basicGetLabelProvider() {
+		return (ILabelProviderConfiguration)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLabelProvider(ILabelProviderConfiguration newLabelProvider) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER, newLabelProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLabelProviderContext() {
+		return (String)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLabelProviderContext(String newLabelProviderContext) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT, newLabelProviderContext);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IBooleanEObjectExpression getFilterRule() {
+		return (IBooleanEObjectExpression)eDynamicGet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__FILTER_RULE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFilterRule(IBooleanEObjectExpression newFilterRule, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newFilterRule, NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilterRule(IBooleanEObjectExpression newFilterRule) {
+		eDynamicSet(NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE - ESTATIC_FEATURE_COUNT, NattableaxisconfigurationPackage.Literals.TREE_FILLING_CONFIGURATION__FILTER_RULE, newFilterRule);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER:
+				return basicSetAxisUsedAsAxisProvider(null, msgs);
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE:
+				return basicSetFilterRule(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER:
+				return getAxisUsedAsAxisProvider();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION:
+				if (resolve) return getPasteConfiguration();
+				return basicGetPasteConfiguration();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH:
+				return getDepth();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER:
+				if (resolve) return getLabelProvider();
+				return basicGetLabelProvider();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT:
+				return getLabelProviderContext();
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE:
+				return getFilterRule();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER:
+				setAxisUsedAsAxisProvider((IAxis)newValue);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION:
+				setPasteConfiguration((PasteEObjectConfiguration)newValue);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH:
+				setDepth((Integer)newValue);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER:
+				setLabelProvider((ILabelProviderConfiguration)newValue);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT:
+				setLabelProviderContext((String)newValue);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE:
+				setFilterRule((IBooleanEObjectExpression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER:
+				setAxisUsedAsAxisProvider((IAxis)null);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION:
+				setPasteConfiguration((PasteEObjectConfiguration)null);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH:
+				setDepth(DEPTH_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER:
+				setLabelProvider((ILabelProviderConfiguration)null);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT:
+				setLabelProviderContext(LABEL_PROVIDER_CONTEXT_EDEFAULT);
+				return;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE:
+				setFilterRule((IBooleanEObjectExpression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__AXIS_USED_AS_AXIS_PROVIDER:
+				return getAxisUsedAsAxisProvider() != null;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__PASTE_CONFIGURATION:
+				return basicGetPasteConfiguration() != null;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__DEPTH:
+				return getDepth() != DEPTH_EDEFAULT;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER:
+				return basicGetLabelProvider() != null;
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__LABEL_PROVIDER_CONTEXT:
+				return LABEL_PROVIDER_CONTEXT_EDEFAULT == null ? getLabelProviderContext() != null : !LABEL_PROVIDER_CONTEXT_EDEFAULT.equals(getLabelProviderContext());
+			case NattableaxisconfigurationPackage.TREE_FILLING_CONFIGURATION__FILTER_RULE:
+				return getFilterRule() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // TreeFillingConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AbstractAxisProviderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AbstractAxisProviderImpl.java
new file mode 100644
index 0000000..aa921ea
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AbstractAxisProviderImpl.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableNamedElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.AbstractAxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Axis Provider</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class AbstractAxisProviderImpl extends TableNamedElementImpl implements AbstractAxisProvider {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AbstractAxisProviderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisproviderPackage.Literals.ABSTRACT_AXIS_PROVIDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<IAxis> getAxis() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattableaxisproviderPackage.ABSTRACT_AXIS_PROVIDER___GET_AXIS:
+				return getAxis();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // AbstractAxisProviderImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AxisProviderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AxisProviderImpl.java
new file mode 100644
index 0000000..eebd93c
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/AxisProviderImpl.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.AxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Axis Provider</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl.AxisProviderImpl#getAxis <em>Axis</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AxisProviderImpl extends AbstractAxisProviderImpl implements AxisProvider {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AxisProviderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisproviderPackage.Literals.AXIS_PROVIDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<IAxis> getAxis() {
+		return (EList<IAxis>)eDynamicGet(NattableaxisproviderPackage.AXIS_PROVIDER__AXIS - ESTATIC_FEATURE_COUNT, NattableaxisproviderPackage.Literals.AXIS_PROVIDER__AXIS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.AXIS_PROVIDER__AXIS:
+				return ((InternalEList<?>)getAxis()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.AXIS_PROVIDER__AXIS:
+				return getAxis();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.AXIS_PROVIDER__AXIS:
+				getAxis().clear();
+				getAxis().addAll((Collection<? extends IAxis>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.AXIS_PROVIDER__AXIS:
+				getAxis().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.AXIS_PROVIDER__AXIS:
+				return !getAxis().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // AxisProviderImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/MasterObjectAxisProviderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/MasterObjectAxisProviderImpl.java
new file mode 100644
index 0000000..26acf46
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/MasterObjectAxisProviderImpl.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.MasterObjectAxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.IWrapper;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Master Object Axis Provider</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl.MasterObjectAxisProviderImpl#isDisconnectSlave <em>Disconnect Slave</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl.MasterObjectAxisProviderImpl#getSources <em>Sources</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MasterObjectAxisProviderImpl extends AxisProviderImpl implements MasterObjectAxisProvider {
+
+	/**
+	 * The default value of the '{@link #isDisconnectSlave() <em>Disconnect Slave</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisconnectSlave()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISCONNECT_SLAVE_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MasterObjectAxisProviderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisproviderPackage.Literals.MASTER_OBJECT_AXIS_PROVIDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisconnectSlave() {
+		return (Boolean)eDynamicGet(NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE - ESTATIC_FEATURE_COUNT, NattableaxisproviderPackage.Literals.IMASTER_AXIS_PROVIDER__DISCONNECT_SLAVE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisconnectSlave(boolean newDisconnectSlave) {
+		eDynamicSet(NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE - ESTATIC_FEATURE_COUNT, NattableaxisproviderPackage.Literals.IMASTER_AXIS_PROVIDER__DISCONNECT_SLAVE, newDisconnectSlave);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<IWrapper> getSources() {
+		return (EList<IWrapper>)eDynamicGet(NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES - ESTATIC_FEATURE_COUNT, NattableaxisproviderPackage.Literals.IMASTER_AXIS_PROVIDER__SOURCES, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES:
+				return ((InternalEList<?>)getSources()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE:
+				return isDisconnectSlave();
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES:
+				return getSources();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE:
+				setDisconnectSlave((Boolean)newValue);
+				return;
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES:
+				getSources().clear();
+				getSources().addAll((Collection<? extends IWrapper>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE:
+				setDisconnectSlave(DISCONNECT_SLAVE_EDEFAULT);
+				return;
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES:
+				getSources().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__DISCONNECT_SLAVE:
+				return isDisconnectSlave() != DISCONNECT_SLAVE_EDEFAULT;
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER__SOURCES:
+				return !getSources().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // MasterObjectAxisProviderImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/NattableaxisproviderFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/NattableaxisproviderFactoryImpl.java
new file mode 100644
index 0000000..f5fe52c
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/NattableaxisproviderFactoryImpl.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.MasterObjectAxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.SlaveObjectAxisProvider;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattableaxisproviderFactoryImpl extends EFactoryImpl implements NattableaxisproviderFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattableaxisproviderFactory init() {
+		try {
+			NattableaxisproviderFactory theNattableaxisproviderFactory = (NattableaxisproviderFactory)EPackage.Registry.INSTANCE.getEFactory(NattableaxisproviderPackage.eNS_URI);
+			if (theNattableaxisproviderFactory != null) {
+				return theNattableaxisproviderFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableaxisproviderFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattableaxisproviderFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattableaxisproviderPackage.SLAVE_OBJECT_AXIS_PROVIDER: return createSlaveObjectAxisProvider();
+			case NattableaxisproviderPackage.MASTER_OBJECT_AXIS_PROVIDER: return createMasterObjectAxisProvider();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SlaveObjectAxisProvider createSlaveObjectAxisProvider() {
+		SlaveObjectAxisProviderImpl slaveObjectAxisProvider = new SlaveObjectAxisProviderImpl();
+		return slaveObjectAxisProvider;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MasterObjectAxisProvider createMasterObjectAxisProvider() {
+		MasterObjectAxisProviderImpl masterObjectAxisProvider = new MasterObjectAxisProviderImpl();
+		return masterObjectAxisProvider;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattableaxisproviderPackage getNattableaxisproviderPackage() {
+		return (NattableaxisproviderPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattableaxisproviderPackage getPackage() {
+		return NattableaxisproviderPackage.eINSTANCE;
+	}
+} // NattableaxisproviderFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/SlaveObjectAxisProviderImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/SlaveObjectAxisProviderImpl.java
new file mode 100644
index 0000000..da1a981
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableaxisprovider/impl/SlaveObjectAxisProviderImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableaxisprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.NattableaxisproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.SlaveObjectAxisProvider;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Slave Object Axis Provider</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SlaveObjectAxisProviderImpl extends AxisProviderImpl implements SlaveObjectAxisProvider {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SlaveObjectAxisProviderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableaxisproviderPackage.Literals.SLAVE_OBJECT_AXIS_PROVIDER;
+	}
+} // SlaveObjectAxisProviderImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/CellImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/CellImpl.java
new file mode 100644
index 0000000..c221641
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/CellImpl.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.Cell;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.ICellAxisWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.NattablecellPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.Problem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cell</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.CellImpl#getColumnWrapper <em>Column Wrapper</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.CellImpl#getRowWrapper <em>Row Wrapper</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.CellImpl#getProblems <em>Problems</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class CellImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements Cell {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CellImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablecellPackage.Literals.CELL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ICellAxisWrapper getColumnWrapper() {
+		return (ICellAxisWrapper) eDynamicGet(NattablecellPackage.CELL__COLUMN_WRAPPER - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.CELL__COLUMN_WRAPPER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetColumnWrapper(ICellAxisWrapper newColumnWrapper, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newColumnWrapper, NattablecellPackage.CELL__COLUMN_WRAPPER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setColumnWrapper(ICellAxisWrapper newColumnWrapper) {
+		eDynamicSet(NattablecellPackage.CELL__COLUMN_WRAPPER - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.CELL__COLUMN_WRAPPER, newColumnWrapper);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ICellAxisWrapper getRowWrapper() {
+		return (ICellAxisWrapper) eDynamicGet(NattablecellPackage.CELL__ROW_WRAPPER - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.CELL__ROW_WRAPPER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetRowWrapper(ICellAxisWrapper newRowWrapper, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newRowWrapper, NattablecellPackage.CELL__ROW_WRAPPER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setRowWrapper(ICellAxisWrapper newRowWrapper) {
+		eDynamicSet(NattablecellPackage.CELL__ROW_WRAPPER - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.CELL__ROW_WRAPPER, newRowWrapper);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Problem> getProblems() {
+		return (EList<Problem>) eDynamicGet(NattablecellPackage.CELL__PROBLEMS - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.CELL__PROBLEMS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case NattablecellPackage.CELL__COLUMN_WRAPPER:
+			return basicSetColumnWrapper(null, msgs);
+		case NattablecellPackage.CELL__ROW_WRAPPER:
+			return basicSetRowWrapper(null, msgs);
+		case NattablecellPackage.CELL__PROBLEMS:
+			return ((InternalEList<?>) getProblems()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablecellPackage.CELL__COLUMN_WRAPPER:
+			return getColumnWrapper();
+		case NattablecellPackage.CELL__ROW_WRAPPER:
+			return getRowWrapper();
+		case NattablecellPackage.CELL__PROBLEMS:
+			return getProblems();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablecellPackage.CELL__COLUMN_WRAPPER:
+			setColumnWrapper((ICellAxisWrapper) newValue);
+			return;
+		case NattablecellPackage.CELL__ROW_WRAPPER:
+			setRowWrapper((ICellAxisWrapper) newValue);
+			return;
+		case NattablecellPackage.CELL__PROBLEMS:
+			getProblems().clear();
+			getProblems().addAll((Collection<? extends Problem>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.CELL__COLUMN_WRAPPER:
+			setColumnWrapper((ICellAxisWrapper) null);
+			return;
+		case NattablecellPackage.CELL__ROW_WRAPPER:
+			setRowWrapper((ICellAxisWrapper) null);
+			return;
+		case NattablecellPackage.CELL__PROBLEMS:
+			getProblems().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.CELL__COLUMN_WRAPPER:
+			return getColumnWrapper() != null;
+		case NattablecellPackage.CELL__ROW_WRAPPER:
+			return getRowWrapper() != null;
+		case NattablecellPackage.CELL__PROBLEMS:
+			return !getProblems().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // CellImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/EObjectAxisWrapperImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/EObjectAxisWrapperImpl.java
new file mode 100644
index 0000000..ddc9092
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/EObjectAxisWrapperImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.EObjectAxisWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.NattablecellPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject Axis Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.EObjectAxisWrapperImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class EObjectAxisWrapperImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements EObjectAxisWrapper {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected EObjectAxisWrapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablecellPackage.Literals.EOBJECT_AXIS_WRAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject getElement() {
+		return (EObject) eDynamicGet(NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.EOBJECT_AXIS_WRAPPER__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EObject basicGetElement() {
+		return (EObject) eDynamicGet(NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.EOBJECT_AXIS_WRAPPER__ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setElement(EObject newElement) {
+		eDynamicSet(NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.EOBJECT_AXIS_WRAPPER__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT:
+			if (resolve) {
+				return getElement();
+			}
+			return basicGetElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT:
+			setElement((EObject) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT:
+			setElement((EObject) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.EOBJECT_AXIS_WRAPPER__ELEMENT:
+			return basicGetElement() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // EObjectAxisWrapperImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/IdAxisWrapperImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/IdAxisWrapperImpl.java
new file mode 100644
index 0000000..a99afbf
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/IdAxisWrapperImpl.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.IdAxisWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.NattablecellPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Id Axis Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl.IdAxisWrapperImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class IdAxisWrapperImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements IdAxisWrapper {
+
+	/**
+	 * The default value of the '{@link #getElement() <em>Element</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ELEMENT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected IdAxisWrapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablecellPackage.Literals.ID_AXIS_WRAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getElement() {
+		return (String) eDynamicGet(NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.ID_AXIS_WRAPPER__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setElement(String newElement) {
+		eDynamicSet(NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablecellPackage.Literals.ID_AXIS_WRAPPER__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT:
+			return getElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT:
+			setElement((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT:
+			setElement(ELEMENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablecellPackage.ID_AXIS_WRAPPER__ELEMENT:
+			return ELEMENT_EDEFAULT == null ? getElement() != null : !ELEMENT_EDEFAULT.equals(getElement());
+		}
+		return super.eIsSet(featureID);
+	}
+} // IdAxisWrapperImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/NattablecellFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/NattablecellFactoryImpl.java
new file mode 100644
index 0000000..429a29b
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecell/impl/NattablecellFactoryImpl.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecell.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.Cell;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.EObjectAxisWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.IdAxisWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.NattablecellFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecell.NattablecellPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class NattablecellFactoryImpl extends EFactoryImpl implements NattablecellFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static NattablecellFactory init() {
+		try {
+			NattablecellFactory theNattablecellFactory = (NattablecellFactory) EPackage.Registry.INSTANCE.getEFactory(NattablecellPackage.eNS_URI);
+			if (theNattablecellFactory != null) {
+				return theNattablecellFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattablecellFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NattablecellFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case NattablecellPackage.CELL:
+			return createCell();
+		case NattablecellPackage.EOBJECT_AXIS_WRAPPER:
+			return createEObjectAxisWrapper();
+		case NattablecellPackage.ID_AXIS_WRAPPER:
+			return createIdAxisWrapper();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Cell createCell() {
+		CellImpl cell = new CellImpl();
+		return cell;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObjectAxisWrapper createEObjectAxisWrapper() {
+		EObjectAxisWrapperImpl eObjectAxisWrapper = new EObjectAxisWrapperImpl();
+		return eObjectAxisWrapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public IdAxisWrapper createIdAxisWrapper() {
+		IdAxisWrapperImpl idAxisWrapper = new IdAxisWrapperImpl();
+		return idAxisWrapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NattablecellPackage getNattablecellPackage() {
+		return (NattablecellPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablecellPackage getPackage() {
+		return NattablecellPackage.eINSTANCE;
+	}
+} // NattablecellFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/GenericRelationshipMatrixCellEditorConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/GenericRelationshipMatrixCellEditorConfigurationImpl.java
new file mode 100644
index 0000000..25e5033
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/GenericRelationshipMatrixCellEditorConfigurationImpl.java
@@ -0,0 +1,401 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.infra.emf.expressions.booleanexpressions.IBooleanEObjectExpression;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxis.IAxis;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.GenericRelationshipMatrixCellEditorConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.MatrixRelationShipDirection;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.MatrixRelationShipOwnerStrategy;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.NattablecelleditorPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.IWrapper;
+import org.eclipse.papyrus.infra.types.ElementTypeConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Generic Relationship Matrix Cell Editor Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getCellEditorId <em>Cell Editor Id</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getDirection <em>Direction</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getCellContentsFilter <em>Cell Contents Filter</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getEditedElement <em>Edited Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getRelationshipOwnerStrategy <em>Relationship Owner Strategy</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getRelationshipOwner <em>Relationship Owner</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl.GenericRelationshipMatrixCellEditorConfigurationImpl#getRelationshipOwnerFeature <em>Relationship Owner Feature</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GenericRelationshipMatrixCellEditorConfigurationImpl extends StyledElementImpl implements GenericRelationshipMatrixCellEditorConfiguration {
+	/**
+	 * The default value of the '{@link #getCellEditorId() <em>Cell Editor Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellEditorId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CELL_EDITOR_ID_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final MatrixRelationShipDirection DIRECTION_EDEFAULT = MatrixRelationShipDirection.FROM_ROW_TO_COLUMN;
+
+	/**
+	 * The default value of the '{@link #getRelationshipOwnerStrategy() <em>Relationship Owner Strategy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRelationshipOwnerStrategy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final MatrixRelationShipOwnerStrategy RELATIONSHIP_OWNER_STRATEGY_EDEFAULT = MatrixRelationShipOwnerStrategy.DEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericRelationshipMatrixCellEditorConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getCellEditorId() {
+		return (String)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.ICELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCellEditorId(String newCellEditorId) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.ICELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID, newCellEditorId);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MatrixRelationShipDirection getDirection() {
+		return (MatrixRelationShipDirection)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirection(MatrixRelationShipDirection newDirection) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION, newDirection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IBooleanEObjectExpression getCellContentsFilter() {
+		return (IBooleanEObjectExpression)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCellContentsFilter(IBooleanEObjectExpression newCellContentsFilter, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newCellContentsFilter, NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCellContentsFilter(IBooleanEObjectExpression newCellContentsFilter) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER, newCellContentsFilter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElementTypeConfiguration getEditedElement() {
+		return (ElementTypeConfiguration)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ElementTypeConfiguration basicGetEditedElement() {
+		return (ElementTypeConfiguration)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEditedElement(ElementTypeConfiguration newEditedElement) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT, newEditedElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MatrixRelationShipOwnerStrategy getRelationshipOwnerStrategy() {
+		return (MatrixRelationShipOwnerStrategy)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRelationshipOwnerStrategy(MatrixRelationShipOwnerStrategy newRelationshipOwnerStrategy) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY, newRelationshipOwnerStrategy);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IWrapper getRelationshipOwner() {
+		return (IWrapper)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRelationshipOwner(IWrapper newRelationshipOwner, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newRelationshipOwner, NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRelationshipOwner(IWrapper newRelationshipOwner) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER, newRelationshipOwner);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IAxis getRelationshipOwnerFeature() {
+		return (IAxis)eDynamicGet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRelationshipOwnerFeature(IAxis newRelationshipOwnerFeature, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newRelationshipOwnerFeature, NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRelationshipOwnerFeature(IAxis newRelationshipOwnerFeature) {
+		eDynamicSet(NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE - ESTATIC_FEATURE_COUNT, NattablecelleditorPackage.Literals.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE, newRelationshipOwnerFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER:
+				return basicSetCellContentsFilter(null, msgs);
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER:
+				return basicSetRelationshipOwner(null, msgs);
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE:
+				return basicSetRelationshipOwnerFeature(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID:
+				return getCellEditorId();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION:
+				return getDirection();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER:
+				return getCellContentsFilter();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT:
+				if (resolve) return getEditedElement();
+				return basicGetEditedElement();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY:
+				return getRelationshipOwnerStrategy();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER:
+				return getRelationshipOwner();
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE:
+				return getRelationshipOwnerFeature();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID:
+				setCellEditorId((String)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION:
+				setDirection((MatrixRelationShipDirection)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER:
+				setCellContentsFilter((IBooleanEObjectExpression)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT:
+				setEditedElement((ElementTypeConfiguration)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY:
+				setRelationshipOwnerStrategy((MatrixRelationShipOwnerStrategy)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER:
+				setRelationshipOwner((IWrapper)newValue);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE:
+				setRelationshipOwnerFeature((IAxis)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID:
+				setCellEditorId(CELL_EDITOR_ID_EDEFAULT);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION:
+				setDirection(DIRECTION_EDEFAULT);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER:
+				setCellContentsFilter((IBooleanEObjectExpression)null);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT:
+				setEditedElement((ElementTypeConfiguration)null);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY:
+				setRelationshipOwnerStrategy(RELATIONSHIP_OWNER_STRATEGY_EDEFAULT);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER:
+				setRelationshipOwner((IWrapper)null);
+				return;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE:
+				setRelationshipOwnerFeature((IAxis)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_EDITOR_ID:
+				return CELL_EDITOR_ID_EDEFAULT == null ? getCellEditorId() != null : !CELL_EDITOR_ID_EDEFAULT.equals(getCellEditorId());
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__DIRECTION:
+				return getDirection() != DIRECTION_EDEFAULT;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__CELL_CONTENTS_FILTER:
+				return getCellContentsFilter() != null;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__EDITED_ELEMENT:
+				return basicGetEditedElement() != null;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_STRATEGY:
+				return getRelationshipOwnerStrategy() != RELATIONSHIP_OWNER_STRATEGY_EDEFAULT;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER:
+				return getRelationshipOwner() != null;
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION__RELATIONSHIP_OWNER_FEATURE:
+				return getRelationshipOwnerFeature() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //GenericRelationshipMatrixCellEditorConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/NattablecelleditorFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/NattablecelleditorFactoryImpl.java
new file mode 100644
index 0000000..862c663
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablecelleditor/impl/NattablecelleditorFactoryImpl.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablecelleditor.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.GenericRelationshipMatrixCellEditorConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.MatrixRelationShipDirection;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.MatrixRelationShipOwnerStrategy;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.NattablecelleditorFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.NattablecelleditorPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattablecelleditorFactoryImpl extends EFactoryImpl implements NattablecelleditorFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattablecelleditorFactory init() {
+		try {
+			NattablecelleditorFactory theNattablecelleditorFactory = (NattablecelleditorFactory)EPackage.Registry.INSTANCE.getEFactory(NattablecelleditorPackage.eNS_URI);
+			if (theNattablecelleditorFactory != null) {
+				return theNattablecelleditorFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattablecelleditorFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablecelleditorFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattablecelleditorPackage.GENERIC_RELATIONSHIP_MATRIX_CELL_EDITOR_CONFIGURATION: return createGenericRelationshipMatrixCellEditorConfiguration();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattablecelleditorPackage.MATRIX_RELATION_SHIP_DIRECTION:
+				return createMatrixRelationShipDirectionFromString(eDataType, initialValue);
+			case NattablecelleditorPackage.MATRIX_RELATION_SHIP_OWNER_STRATEGY:
+				return createMatrixRelationShipOwnerStrategyFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattablecelleditorPackage.MATRIX_RELATION_SHIP_DIRECTION:
+				return convertMatrixRelationShipDirectionToString(eDataType, instanceValue);
+			case NattablecelleditorPackage.MATRIX_RELATION_SHIP_OWNER_STRATEGY:
+				return convertMatrixRelationShipOwnerStrategyToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericRelationshipMatrixCellEditorConfiguration createGenericRelationshipMatrixCellEditorConfiguration() {
+		GenericRelationshipMatrixCellEditorConfigurationImpl genericRelationshipMatrixCellEditorConfiguration = new GenericRelationshipMatrixCellEditorConfigurationImpl();
+		return genericRelationshipMatrixCellEditorConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MatrixRelationShipDirection createMatrixRelationShipDirectionFromString(EDataType eDataType, String initialValue) {
+		MatrixRelationShipDirection result = MatrixRelationShipDirection.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertMatrixRelationShipDirectionToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MatrixRelationShipOwnerStrategy createMatrixRelationShipOwnerStrategyFromString(EDataType eDataType, String initialValue) {
+		MatrixRelationShipOwnerStrategy result = MatrixRelationShipOwnerStrategy.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertMatrixRelationShipOwnerStrategyToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablecelleditorPackage getNattablecelleditorPackage() {
+		return (NattablecelleditorPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablecelleditorPackage getPackage() {
+		return NattablecelleditorPackage.eINSTANCE;
+	}
+
+} //NattablecelleditorFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/NattableconfigurationFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/NattableconfigurationFactoryImpl.java
new file mode 100644
index 0000000..2ec4e4e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/NattableconfigurationFactoryImpl.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.CellEditorDeclaration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.NattableconfigurationFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.NattableconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.TableConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattableconfigurationFactoryImpl extends EFactoryImpl implements NattableconfigurationFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattableconfigurationFactory init() {
+		try {
+			NattableconfigurationFactory theNattableconfigurationFactory = (NattableconfigurationFactory)EPackage.Registry.INSTANCE.getEFactory(NattableconfigurationPackage.eNS_URI);
+			if (theNattableconfigurationFactory != null) {
+				return theNattableconfigurationFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableconfigurationFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattableconfigurationFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION: return createTableConfiguration();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattableconfigurationPackage.CELL_EDITOR_DECLARATION:
+				return createCellEditorDeclarationFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattableconfigurationPackage.CELL_EDITOR_DECLARATION:
+				return convertCellEditorDeclarationToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableConfiguration createTableConfiguration() {
+		TableConfigurationImpl tableConfiguration = new TableConfigurationImpl();
+		return tableConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CellEditorDeclaration createCellEditorDeclarationFromString(EDataType eDataType, String initialValue) {
+		CellEditorDeclaration result = CellEditorDeclaration.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCellEditorDeclarationToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattableconfigurationPackage getNattableconfigurationPackage() {
+		return (NattableconfigurationPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattableconfigurationPackage getPackage() {
+		return NattableconfigurationPackage.eINSTANCE;
+	}
+} // NattableconfigurationFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableConfigurationImpl.java
new file mode 100644
index 0000000..bfd2dff
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableConfigurationImpl.java
@@ -0,0 +1,550 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisconfiguration.TableHeaderAxisConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableaxisprovider.AbstractAxisProvider;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablecelleditor.ICellEditorConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.CellEditorDeclaration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.NattableconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.TableConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.AbstractTableTester;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getIconPath <em>Icon Path</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getCreationTester <em>Creation Tester</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getCellEditorDeclaration <em>Cell Editor Declaration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getRowHeaderAxisConfiguration <em>Row Header Axis Configuration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getColumnHeaderAxisConfiguration <em>Column Header Axis Configuration</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getColumnAxisProviders <em>Column Axis Providers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getRowAxisProviders <em>Row Axis Providers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getDefaultRowAxisProvider <em>Default Row Axis Provider</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getDefaultColumnAxisProvider <em>Default Column Axis Provider</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableConfigurationImpl#getOwnedCellEditorConfigurations <em>Owned Cell Editor Configurations</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableConfigurationImpl extends TableNamedElementImpl implements TableConfiguration {
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getIconPath() <em>Icon Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIconPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ICON_PATH_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getCellEditorDeclaration() <em>Cell Editor Declaration</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCellEditorDeclaration()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CellEditorDeclaration CELL_EDITOR_DECLARATION_EDEFAULT = CellEditorDeclaration.COLUMN;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableconfigurationPackage.Literals.TABLE_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getType() {
+		return (String)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__TYPE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setType(String newType) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__TYPE, newType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getIconPath() {
+		return (String)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__ICON_PATH, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIconPath(String newIconPath) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__ICON_PATH, newIconPath);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AbstractTableTester getCreationTester() {
+		return (AbstractTableTester)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__CREATION_TESTER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCreationTester(AbstractTableTester newCreationTester, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newCreationTester, NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCreationTester(AbstractTableTester newCreationTester) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__CREATION_TESTER, newCreationTester);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CellEditorDeclaration getCellEditorDeclaration() {
+		return (CellEditorDeclaration)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCellEditorDeclaration(CellEditorDeclaration newCellEditorDeclaration) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION, newCellEditorDeclaration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableHeaderAxisConfiguration getRowHeaderAxisConfiguration() {
+		return (TableHeaderAxisConfiguration)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRowHeaderAxisConfiguration(TableHeaderAxisConfiguration newRowHeaderAxisConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newRowHeaderAxisConfiguration, NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRowHeaderAxisConfiguration(TableHeaderAxisConfiguration newRowHeaderAxisConfiguration) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION, newRowHeaderAxisConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableHeaderAxisConfiguration getColumnHeaderAxisConfiguration() {
+		return (TableHeaderAxisConfiguration)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetColumnHeaderAxisConfiguration(TableHeaderAxisConfiguration newColumnHeaderAxisConfiguration, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newColumnHeaderAxisConfiguration, NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setColumnHeaderAxisConfiguration(TableHeaderAxisConfiguration newColumnHeaderAxisConfiguration) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION, newColumnHeaderAxisConfiguration);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AbstractAxisProvider> getColumnAxisProviders() {
+		return (EList<AbstractAxisProvider>)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<AbstractAxisProvider> getRowAxisProviders() {
+		return (EList<AbstractAxisProvider>)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AbstractAxisProvider getDefaultRowAxisProvider() {
+		return (AbstractAxisProvider)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AbstractAxisProvider basicGetDefaultRowAxisProvider() {
+		return (AbstractAxisProvider)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDefaultRowAxisProvider(AbstractAxisProvider newDefaultRowAxisProvider) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER, newDefaultRowAxisProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AbstractAxisProvider getDefaultColumnAxisProvider() {
+		return (AbstractAxisProvider)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AbstractAxisProvider basicGetDefaultColumnAxisProvider() {
+		return (AbstractAxisProvider)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDefaultColumnAxisProvider(AbstractAxisProvider newDefaultColumnAxisProvider) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER, newDefaultColumnAxisProvider);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ICellEditorConfiguration getOwnedCellEditorConfigurations() {
+		return (ICellEditorConfiguration)eDynamicGet(NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOwnedCellEditorConfigurations(ICellEditorConfiguration newOwnedCellEditorConfigurations, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject)newOwnedCellEditorConfigurations, NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOwnedCellEditorConfigurations(ICellEditorConfiguration newOwnedCellEditorConfigurations) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS, newOwnedCellEditorConfigurations);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER:
+				return basicSetCreationTester(null, msgs);
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION:
+				return basicSetRowHeaderAxisConfiguration(null, msgs);
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION:
+				return basicSetColumnHeaderAxisConfiguration(null, msgs);
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS:
+				return ((InternalEList<?>)getColumnAxisProviders()).basicRemove(otherEnd, msgs);
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS:
+				return ((InternalEList<?>)getRowAxisProviders()).basicRemove(otherEnd, msgs);
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS:
+				return basicSetOwnedCellEditorConfigurations(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE:
+				return getType();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH:
+				return getIconPath();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER:
+				return getCreationTester();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION:
+				return getCellEditorDeclaration();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION:
+				return getRowHeaderAxisConfiguration();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION:
+				return getColumnHeaderAxisConfiguration();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS:
+				return getColumnAxisProviders();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS:
+				return getRowAxisProviders();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER:
+				if (resolve) return getDefaultRowAxisProvider();
+				return basicGetDefaultRowAxisProvider();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER:
+				if (resolve) return getDefaultColumnAxisProvider();
+				return basicGetDefaultColumnAxisProvider();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS:
+				return getOwnedCellEditorConfigurations();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE:
+				setType((String)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH:
+				setIconPath((String)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER:
+				setCreationTester((AbstractTableTester)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION:
+				setCellEditorDeclaration((CellEditorDeclaration)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION:
+				setRowHeaderAxisConfiguration((TableHeaderAxisConfiguration)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION:
+				setColumnHeaderAxisConfiguration((TableHeaderAxisConfiguration)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS:
+				getColumnAxisProviders().clear();
+				getColumnAxisProviders().addAll((Collection<? extends AbstractAxisProvider>)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS:
+				getRowAxisProviders().clear();
+				getRowAxisProviders().addAll((Collection<? extends AbstractAxisProvider>)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER:
+				setDefaultRowAxisProvider((AbstractAxisProvider)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER:
+				setDefaultColumnAxisProvider((AbstractAxisProvider)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS:
+				setOwnedCellEditorConfigurations((ICellEditorConfiguration)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH:
+				setIconPath(ICON_PATH_EDEFAULT);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER:
+				setCreationTester((AbstractTableTester)null);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION:
+				setCellEditorDeclaration(CELL_EDITOR_DECLARATION_EDEFAULT);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION:
+				setRowHeaderAxisConfiguration((TableHeaderAxisConfiguration)null);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION:
+				setColumnHeaderAxisConfiguration((TableHeaderAxisConfiguration)null);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS:
+				getColumnAxisProviders().clear();
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS:
+				getRowAxisProviders().clear();
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER:
+				setDefaultRowAxisProvider((AbstractAxisProvider)null);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER:
+				setDefaultColumnAxisProvider((AbstractAxisProvider)null);
+				return;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS:
+				setOwnedCellEditorConfigurations((ICellEditorConfiguration)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__TYPE:
+				return TYPE_EDEFAULT == null ? getType() != null : !TYPE_EDEFAULT.equals(getType());
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ICON_PATH:
+				return ICON_PATH_EDEFAULT == null ? getIconPath() != null : !ICON_PATH_EDEFAULT.equals(getIconPath());
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CREATION_TESTER:
+				return getCreationTester() != null;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__CELL_EDITOR_DECLARATION:
+				return getCellEditorDeclaration() != CELL_EDITOR_DECLARATION_EDEFAULT;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_HEADER_AXIS_CONFIGURATION:
+				return getRowHeaderAxisConfiguration() != null;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_HEADER_AXIS_CONFIGURATION:
+				return getColumnHeaderAxisConfiguration() != null;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__COLUMN_AXIS_PROVIDERS:
+				return !getColumnAxisProviders().isEmpty();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__ROW_AXIS_PROVIDERS:
+				return !getRowAxisProviders().isEmpty();
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_ROW_AXIS_PROVIDER:
+				return basicGetDefaultRowAxisProvider() != null;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__DEFAULT_COLUMN_AXIS_PROVIDER:
+				return basicGetDefaultColumnAxisProvider() != null;
+			case NattableconfigurationPackage.TABLE_CONFIGURATION__OWNED_CELL_EDITOR_CONFIGURATIONS:
+				return getOwnedCellEditorConfigurations() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // TableConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableNamedElementImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableNamedElementImpl.java
new file mode 100644
index 0000000..cbc4919
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableconfiguration/impl/TableNamedElementImpl.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.NattableconfigurationPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableconfiguration.TableNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableNamedElementImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableNamedElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class TableNamedElementImpl extends StyledElementImpl implements TableNamedElement {
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableNamedElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableconfigurationPackage.Literals.TABLE_NAMED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return (String)eDynamicGet(NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_NAMED_ELEMENT__DESCRIPTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_NAMED_ELEMENT__DESCRIPTION, newDescription);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return (String)eDynamicGet(NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_NAMED_ELEMENT__NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		eDynamicSet(NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME - ESTATIC_FEATURE_COUNT, NattableconfigurationPackage.Literals.TABLE_NAMED_ELEMENT__NAME, newName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION:
+				return getDescription();
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
+			case NattableconfigurationPackage.TABLE_NAMED_ELEMENT__NAME:
+				return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+		}
+		return super.eIsSet(featureID);
+	}
+} // TableNamedElementImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/FeatureLabelProviderConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/FeatureLabelProviderConfigurationImpl.java
new file mode 100644
index 0000000..09f0b8d
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/FeatureLabelProviderConfigurationImpl.java
@@ -0,0 +1,265 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.FeatureLabelProviderConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.NattablelabelproviderPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Label Provider Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.FeatureLabelProviderConfigurationImpl#isDisplayIsDerived <em>Display Is Derived</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.FeatureLabelProviderConfigurationImpl#isDisplayType <em>Display Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.FeatureLabelProviderConfigurationImpl#isDisplayMultiplicity <em>Display Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.FeatureLabelProviderConfigurationImpl#isDisplayName <em>Display Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FeatureLabelProviderConfigurationImpl extends ObjectLabelProviderConfigurationImpl implements FeatureLabelProviderConfiguration {
+
+	/**
+	 * The default value of the '{@link #isDisplayIsDerived() <em>Display Is Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayIsDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_IS_DERIVED_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayType() <em>Display Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_TYPE_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayMultiplicity() <em>Display Multiplicity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_MULTIPLICITY_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_NAME_EDEFAULT = true;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FeatureLabelProviderConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayIsDerived() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayIsDerived(boolean newDisplayIsDerived) {
+		eDynamicSet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED, newDisplayIsDerived);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayType() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayType(boolean newDisplayType) {
+		eDynamicSet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE, newDisplayType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayMultiplicity() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayMultiplicity(boolean newDisplayMultiplicity) {
+		eDynamicSet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY, newDisplayMultiplicity);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayName() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayName(boolean newDisplayName) {
+		eDynamicSet(NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME, newDisplayName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED:
+				return isDisplayIsDerived();
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				return isDisplayType();
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				return isDisplayMultiplicity();
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				return isDisplayName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED:
+				setDisplayIsDerived((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				setDisplayType((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				setDisplayMultiplicity((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				setDisplayName((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED:
+				setDisplayIsDerived(DISPLAY_IS_DERIVED_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				setDisplayType(DISPLAY_TYPE_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				setDisplayMultiplicity(DISPLAY_MULTIPLICITY_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				setDisplayName(DISPLAY_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_IS_DERIVED:
+				return isDisplayIsDerived() != DISPLAY_IS_DERIVED_EDEFAULT;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				return isDisplayType() != DISPLAY_TYPE_EDEFAULT;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				return isDisplayMultiplicity() != DISPLAY_MULTIPLICITY_EDEFAULT;
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				return isDisplayName() != DISPLAY_NAME_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // FeatureLabelProviderConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/NattablelabelproviderFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/NattablelabelproviderFactoryImpl.java
new file mode 100644
index 0000000..4abe8ed
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/NattablelabelproviderFactoryImpl.java
@@ -0,0 +1,133 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.FeatureLabelProviderConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.NattablelabelproviderFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.NattablelabelproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ObjectLabelProviderConfiguration;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.OperationLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattablelabelproviderFactoryImpl extends EFactoryImpl implements NattablelabelproviderFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattablelabelproviderFactory init() {
+		try {
+			NattablelabelproviderFactory theNattablelabelproviderFactory = (NattablelabelproviderFactory)EPackage.Registry.INSTANCE.getEFactory(NattablelabelproviderPackage.eNS_URI);
+			if (theNattablelabelproviderFactory != null) {
+				return theNattablelabelproviderFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattablelabelproviderFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablelabelproviderFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattablelabelproviderPackage.FEATURE_LABEL_PROVIDER_CONFIGURATION: return createFeatureLabelProviderConfiguration();
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION: return createObjectLabelProviderConfiguration();
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION: return createOperationLabelProviderConfiguration();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FeatureLabelProviderConfiguration createFeatureLabelProviderConfiguration() {
+		FeatureLabelProviderConfigurationImpl featureLabelProviderConfiguration = new FeatureLabelProviderConfigurationImpl();
+		return featureLabelProviderConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ObjectLabelProviderConfiguration createObjectLabelProviderConfiguration() {
+		ObjectLabelProviderConfigurationImpl objectLabelProviderConfiguration = new ObjectLabelProviderConfigurationImpl();
+		return objectLabelProviderConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperationLabelProviderConfiguration createOperationLabelProviderConfiguration() {
+		OperationLabelProviderConfigurationImpl operationLabelProviderConfiguration = new OperationLabelProviderConfigurationImpl();
+		return operationLabelProviderConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattablelabelproviderPackage getNattablelabelproviderPackage() {
+		return (NattablelabelproviderPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablelabelproviderPackage getPackage() {
+		return NattablelabelproviderPackage.eINSTANCE;
+	}
+} // NattablelabelproviderFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/ObjectLabelProviderConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/ObjectLabelProviderConfigurationImpl.java
new file mode 100644
index 0000000..9c5b1f1
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/ObjectLabelProviderConfigurationImpl.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.NattablelabelproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.ObjectLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object Label Provider Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.ObjectLabelProviderConfigurationImpl#isDisplayIcon <em>Display Icon</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.ObjectLabelProviderConfigurationImpl#isDisplayLabel <em>Display Label</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ObjectLabelProviderConfigurationImpl extends StyledElementImpl implements ObjectLabelProviderConfiguration {
+
+	/**
+	 * The default value of the '{@link #isDisplayIcon() <em>Display Icon</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayIcon()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_ICON_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayLabel() <em>Display Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_LABEL_EDEFAULT = true;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ObjectLabelProviderConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablelabelproviderPackage.Literals.OBJECT_LABEL_PROVIDER_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayIcon() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayIcon(boolean newDisplayIcon) {
+		eDynamicSet(NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON, newDisplayIcon);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDisplayLabel() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDisplayLabel(boolean newDisplayLabel) {
+		eDynamicSet(NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL, newDisplayLabel);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON:
+				return isDisplayIcon();
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL:
+				return isDisplayLabel();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON:
+				setDisplayIcon((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL:
+				setDisplayLabel((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON:
+				setDisplayIcon(DISPLAY_ICON_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL:
+				setDisplayLabel(DISPLAY_LABEL_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_ICON:
+				return isDisplayIcon() != DISPLAY_ICON_EDEFAULT;
+			case NattablelabelproviderPackage.OBJECT_LABEL_PROVIDER_CONFIGURATION__DISPLAY_LABEL:
+				return isDisplayLabel() != DISPLAY_LABEL_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // ObjectLabelProviderConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/OperationLabelProviderConfigurationImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/OperationLabelProviderConfigurationImpl.java
new file mode 100644
index 0000000..0464834
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablelabelprovider/impl/OperationLabelProviderConfigurationImpl.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.NattablelabelproviderPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablelabelprovider.OperationLabelProviderConfiguration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operation Label Provider Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.OperationLabelProviderConfigurationImpl#isDisplayType <em>Display Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.OperationLabelProviderConfigurationImpl#isDisplayMultiplicity <em>Display Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablelabelprovider.impl.OperationLabelProviderConfigurationImpl#isDisplayName <em>Display Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OperationLabelProviderConfigurationImpl extends ObjectLabelProviderConfigurationImpl implements OperationLabelProviderConfiguration {
+	/**
+	 * The default value of the '{@link #isDisplayType() <em>Display Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_TYPE_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayMultiplicity() <em>Display Multiplicity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_MULTIPLICITY_EDEFAULT = true;
+
+	/**
+	 * The default value of the '{@link #isDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DISPLAY_NAME_EDEFAULT = true;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OperationLabelProviderConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDisplayType() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDisplayType(boolean newDisplayType) {
+		eDynamicSet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE, newDisplayType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDisplayMultiplicity() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDisplayMultiplicity(boolean newDisplayMultiplicity) {
+		eDynamicSet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY, newDisplayMultiplicity);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDisplayName() {
+		return (Boolean)eDynamicGet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDisplayName(boolean newDisplayName) {
+		eDynamicSet(NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME - ESTATIC_FEATURE_COUNT, NattablelabelproviderPackage.Literals.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME, newDisplayName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				return isDisplayType();
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				return isDisplayMultiplicity();
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				return isDisplayName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				setDisplayType((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				setDisplayMultiplicity((Boolean)newValue);
+				return;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				setDisplayName((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				setDisplayType(DISPLAY_TYPE_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				setDisplayMultiplicity(DISPLAY_MULTIPLICITY_EDEFAULT);
+				return;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				setDisplayName(DISPLAY_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_TYPE:
+				return isDisplayType() != DISPLAY_TYPE_EDEFAULT;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_MULTIPLICITY:
+				return isDisplayMultiplicity() != DISPLAY_MULTIPLICITY_EDEFAULT;
+			case NattablelabelproviderPackage.OPERATION_LABEL_PROVIDER_CONFIGURATION__DISPLAY_NAME:
+				return isDisplayName() != DISPLAY_NAME_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //OperationLabelProviderConfigurationImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/NattableproblemFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/NattableproblemFactoryImpl.java
new file mode 100644
index 0000000..20938b4
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/NattableproblemFactoryImpl.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.NattableproblemFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.NattableproblemPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.Problem;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.StringResolutionProblem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattableproblemFactoryImpl extends EFactoryImpl implements NattableproblemFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattableproblemFactory init() {
+		try {
+			NattableproblemFactory theNattableproblemFactory = (NattableproblemFactory)EPackage.Registry.INSTANCE.getEFactory(NattableproblemPackage.eNS_URI);
+			if (theNattableproblemFactory != null) {
+				return theNattableproblemFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattableproblemFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattableproblemFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattableproblemPackage.PROBLEM: return createProblem();
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM: return createStringResolutionProblem();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Problem createProblem() {
+		ProblemImpl problem = new ProblemImpl();
+		return problem;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public StringResolutionProblem createStringResolutionProblem() {
+		StringResolutionProblemImpl stringResolutionProblem = new StringResolutionProblemImpl();
+		return stringResolutionProblem;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattableproblemPackage getNattableproblemPackage() {
+		return (NattableproblemPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattableproblemPackage getPackage() {
+		return NattableproblemPackage.eINSTANCE;
+	}
+} // NattableproblemFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/ProblemImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/ProblemImpl.java
new file mode 100644
index 0000000..93d34cf
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/ProblemImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableconfiguration.impl.TableNamedElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.NattableproblemPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.Problem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Problem</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ProblemImpl extends TableNamedElementImpl implements Problem {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProblemImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableproblemPackage.Literals.PROBLEM;
+	}
+} // ProblemImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/StringResolutionProblemImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/StringResolutionProblemImpl.java
new file mode 100644
index 0000000..be20fd0
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattableproblem/impl/StringResolutionProblemImpl.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.NattableproblemPackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattableproblem.StringResolutionProblem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Resolution Problem</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl.StringResolutionProblemImpl#getValueAsString <em>Value As String</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattableproblem.impl.StringResolutionProblemImpl#getUnresolvedString <em>Unresolved String</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StringResolutionProblemImpl extends ProblemImpl implements StringResolutionProblem {
+
+	/**
+	 * The default value of the '{@link #getValueAsString() <em>Value As String</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValueAsString()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_AS_STRING_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringResolutionProblemImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattableproblemPackage.Literals.STRING_RESOLUTION_PROBLEM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getValueAsString() {
+		return (String)eDynamicGet(NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING - ESTATIC_FEATURE_COUNT, NattableproblemPackage.Literals.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setValueAsString(String newValueAsString) {
+		eDynamicSet(NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING - ESTATIC_FEATURE_COUNT, NattableproblemPackage.Literals.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING, newValueAsString);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<String> getUnresolvedString() {
+		return (EList<String>)eDynamicGet(NattableproblemPackage.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING - ESTATIC_FEATURE_COUNT, NattableproblemPackage.Literals.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING:
+				return getValueAsString();
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING:
+				return getUnresolvedString();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING:
+				setValueAsString((String)newValue);
+				return;
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING:
+				getUnresolvedString().clear();
+				getUnresolvedString().addAll((Collection<? extends String>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING:
+				setValueAsString(VALUE_AS_STRING_EDEFAULT);
+				return;
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING:
+				getUnresolvedString().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__VALUE_AS_STRING:
+				return VALUE_AS_STRING_EDEFAULT == null ? getValueAsString() != null : !VALUE_AS_STRING_EDEFAULT.equals(getValueAsString());
+			case NattableproblemPackage.STRING_RESOLUTION_PROBLEM__UNRESOLVED_STRING:
+				return !getUnresolvedString().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // StringResolutionProblemImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanListValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanListValueStyleImpl.java
new file mode 100644
index 0000000..9fef36a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanListValueStyleImpl.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.BooleanListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean List Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.BooleanListValueStyleImpl#getBooleanListValue <em>Boolean List Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BooleanListValueStyleImpl extends NamedStyleImpl implements BooleanListValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BooleanListValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.BOOLEAN_LIST_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Boolean> getBooleanListValue() {
+		return (EList<Boolean>)eDynamicGet(NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE:
+				return getBooleanListValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE:
+				getBooleanListValue().clear();
+				getBooleanListValue().addAll((Collection<? extends Boolean>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE:
+				getBooleanListValue().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE__BOOLEAN_LIST_VALUE:
+				return !getBooleanListValue().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // BooleanListValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanValueStyleImpl.java
new file mode 100644
index 0000000..99ae7db
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/BooleanValueStyleImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.BooleanValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.BooleanValueStyleImpl#isBooleanValue <em>Boolean Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BooleanValueStyleImpl extends NamedStyleImpl implements BooleanValueStyle {
+
+	/**
+	 * The default value of the '{@link #isBooleanValue() <em>Boolean Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBooleanValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BOOLEAN_VALUE_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BooleanValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.BOOLEAN_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBooleanValue() {
+		return (Boolean)eDynamicGet(NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBooleanValue(boolean newBooleanValue) {
+		eDynamicSet(NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE, newBooleanValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE:
+				return isBooleanValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE:
+				setBooleanValue((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE:
+				setBooleanValue(BOOLEAN_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.BOOLEAN_VALUE_STYLE__BOOLEAN_VALUE:
+				return isBooleanValue() != BOOLEAN_VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // BooleanValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/CellTextStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/CellTextStyleImpl.java
new file mode 100644
index 0000000..70890fe
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/CellTextStyleImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.CellTextAlignment;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.CellTextStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cell Text Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.CellTextStyleImpl#getAlignment <em>Alignment</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class CellTextStyleImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements CellTextStyle {
+
+	/**
+	 * The default value of the '{@link #getAlignment() <em>Alignment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getAlignment()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CellTextAlignment ALIGNMENT_EDEFAULT = CellTextAlignment.MIDDLE_LEFT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected CellTextStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.CELL_TEXT_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public CellTextAlignment getAlignment() {
+		return (CellTextAlignment) eDynamicGet(NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.CELL_TEXT_STYLE__ALIGNMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setAlignment(CellTextAlignment newAlignment) {
+		eDynamicSet(NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.CELL_TEXT_STYLE__ALIGNMENT, newAlignment);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT:
+			return getAlignment();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT:
+			setAlignment((CellTextAlignment) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT:
+			setAlignment(ALIGNMENT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.CELL_TEXT_STYLE__ALIGNMENT:
+			return getAlignment() != ALIGNMENT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // CellTextStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleListValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleListValueStyleImpl.java
new file mode 100644
index 0000000..c6bb565
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleListValueStyleImpl.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DoubleListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double List Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.DoubleListValueStyleImpl#getDoubleListValue <em>Double List Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DoubleListValueStyleImpl extends NamedStyleImpl implements DoubleListValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleListValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.DOUBLE_LIST_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Double> getDoubleListValue() {
+		return (EList<Double>)eDynamicGet(NattablestylePackage.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE:
+				return getDoubleListValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE:
+				getDoubleListValue().clear();
+				getDoubleListValue().addAll((Collection<? extends Double>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE:
+				getDoubleListValue().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_LIST_VALUE_STYLE__DOUBLE_LIST_VALUE:
+				return !getDoubleListValue().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // DoubleListValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleValueStyleImpl.java
new file mode 100644
index 0000000..d1afc73
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/DoubleValueStyleImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DoubleValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.DoubleValueStyleImpl#getDoubleValue <em>Double Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DoubleValueStyleImpl extends NamedStyleImpl implements DoubleValueStyle {
+
+	/**
+	 * The default value of the '{@link #getDoubleValue() <em>Double Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDoubleValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DOUBLE_VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.DOUBLE_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getDoubleValue() {
+		return (Double)eDynamicGet(NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.DOUBLE_VALUE_STYLE__DOUBLE_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDoubleValue(double newDoubleValue) {
+		eDynamicSet(NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.DOUBLE_VALUE_STYLE__DOUBLE_VALUE, newDoubleValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE:
+				return getDoubleValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE:
+				setDoubleValue((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE:
+				setDoubleValue(DOUBLE_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.DOUBLE_VALUE_STYLE__DOUBLE_VALUE:
+				return getDoubleValue() != DOUBLE_VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // DoubleValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectListValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectListValueStyleImpl.java
new file mode 100644
index 0000000..52b4e40
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectListValueStyleImpl.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.EObjectListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject List Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.EObjectListValueStyleImpl#getEObjectValue <em>EObject Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectListValueStyleImpl extends NamedStyleImpl implements EObjectListValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObjectListValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.EOBJECT_LIST_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<EObject> getEObjectValue() {
+		return (EList<EObject>)eDynamicGet(NattablestylePackage.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE:
+				return getEObjectValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE:
+				getEObjectValue().clear();
+				getEObjectValue().addAll((Collection<? extends EObject>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE:
+				getEObjectValue().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_LIST_VALUE_STYLE__EOBJECT_VALUE:
+				return !getEObjectValue().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // EObjectListValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectValueStyleImpl.java
new file mode 100644
index 0000000..8338760
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/EObjectValueStyleImpl.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.EObjectValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.EObjectValueStyleImpl#getEObjectValue <em>EObject Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectValueStyleImpl extends NamedStyleImpl implements EObjectValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObjectValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.EOBJECT_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject getEObjectValue() {
+		return (EObject)eDynamicGet(NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.EOBJECT_VALUE_STYLE__EOBJECT_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetEObjectValue() {
+		return (EObject)eDynamicGet(NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.EOBJECT_VALUE_STYLE__EOBJECT_VALUE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEObjectValue(EObject newEObjectValue) {
+		eDynamicSet(NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.EOBJECT_VALUE_STYLE__EOBJECT_VALUE, newEObjectValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE:
+				if (resolve) return getEObjectValue();
+				return basicGetEObjectValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE:
+				setEObjectValue((EObject)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE:
+				setEObjectValue((EObject)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.EOBJECT_VALUE_STYLE__EOBJECT_VALUE:
+				return basicGetEObjectValue() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+} // EObjectValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/FontStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/FontStyleImpl.java
new file mode 100644
index 0000000..42c675a
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/FontStyleImpl.java
@@ -0,0 +1,436 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.FontStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#getFontColor <em>Font Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#getFontName <em>Font Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#getFontHeight <em>Font Height</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#isBold <em>Bold</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#isItalic <em>Italic</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#isUnderline <em>Underline</em>}</li>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.FontStyleImpl#isStrikeThrough <em>Strike Through</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class FontStyleImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements FontStyle {
+
+	/**
+	 * The default value of the '{@link #getFontColor() <em>Font Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFontColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FONT_COLOR_EDEFAULT = 0;
+
+	/**
+	 * The default value of the '{@link #getFontName() <em>Font Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFontName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FONT_NAME_EDEFAULT = "Tahoma"; //$NON-NLS-1$
+
+	/**
+	 * The default value of the '{@link #getFontHeight() <em>Font Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFontHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FONT_HEIGHT_EDEFAULT = 9;
+
+	/**
+	 * The default value of the '{@link #isBold() <em>Bold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isBold()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BOLD_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #isItalic() <em>Italic</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isItalic()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ITALIC_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #isUnderline() <em>Underline</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isUnderline()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UNDERLINE_EDEFAULT = false;
+
+	/**
+	 * The default value of the '{@link #isStrikeThrough() <em>Strike Through</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isStrikeThrough()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean STRIKE_THROUGH_EDEFAULT = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected FontStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.FONT_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int getFontColor() {
+		return (Integer) eDynamicGet(NattablestylePackage.FONT_STYLE__FONT_COLOR - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_COLOR, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setFontColor(int newFontColor) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__FONT_COLOR - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_COLOR, newFontColor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getFontName() {
+		return (String) eDynamicGet(NattablestylePackage.FONT_STYLE__FONT_NAME - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setFontName(String newFontName) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__FONT_NAME - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_NAME, newFontName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public int getFontHeight() {
+		return (Integer) eDynamicGet(NattablestylePackage.FONT_STYLE__FONT_HEIGHT - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_HEIGHT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setFontHeight(int newFontHeight) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__FONT_HEIGHT - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__FONT_HEIGHT, newFontHeight);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isBold() {
+		return (Boolean) eDynamicGet(NattablestylePackage.FONT_STYLE__BOLD - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__BOLD, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setBold(boolean newBold) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__BOLD - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__BOLD, newBold);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isItalic() {
+		return (Boolean) eDynamicGet(NattablestylePackage.FONT_STYLE__ITALIC - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__ITALIC, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setItalic(boolean newItalic) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__ITALIC - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__ITALIC, newItalic);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isUnderline() {
+		return (Boolean) eDynamicGet(NattablestylePackage.FONT_STYLE__UNDERLINE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__UNDERLINE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setUnderline(boolean newUnderline) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__UNDERLINE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__UNDERLINE, newUnderline);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isStrikeThrough() {
+		return (Boolean) eDynamicGet(NattablestylePackage.FONT_STYLE__STRIKE_THROUGH - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__STRIKE_THROUGH, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setStrikeThrough(boolean newStrikeThrough) {
+		eDynamicSet(NattablestylePackage.FONT_STYLE__STRIKE_THROUGH - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.FONT_STYLE__STRIKE_THROUGH, newStrikeThrough);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablestylePackage.FONT_STYLE__FONT_COLOR:
+			return getFontColor();
+		case NattablestylePackage.FONT_STYLE__FONT_NAME:
+			return getFontName();
+		case NattablestylePackage.FONT_STYLE__FONT_HEIGHT:
+			return getFontHeight();
+		case NattablestylePackage.FONT_STYLE__BOLD:
+			return isBold();
+		case NattablestylePackage.FONT_STYLE__ITALIC:
+			return isItalic();
+		case NattablestylePackage.FONT_STYLE__UNDERLINE:
+			return isUnderline();
+		case NattablestylePackage.FONT_STYLE__STRIKE_THROUGH:
+			return isStrikeThrough();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablestylePackage.FONT_STYLE__FONT_COLOR:
+			setFontColor((Integer) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__FONT_NAME:
+			setFontName((String) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__FONT_HEIGHT:
+			setFontHeight((Integer) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__BOLD:
+			setBold((Boolean) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__ITALIC:
+			setItalic((Boolean) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__UNDERLINE:
+			setUnderline((Boolean) newValue);
+			return;
+		case NattablestylePackage.FONT_STYLE__STRIKE_THROUGH:
+			setStrikeThrough((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.FONT_STYLE__FONT_COLOR:
+			setFontColor(FONT_COLOR_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__FONT_NAME:
+			setFontName(FONT_NAME_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__FONT_HEIGHT:
+			setFontHeight(FONT_HEIGHT_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__BOLD:
+			setBold(BOLD_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__ITALIC:
+			setItalic(ITALIC_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__UNDERLINE:
+			setUnderline(UNDERLINE_EDEFAULT);
+			return;
+		case NattablestylePackage.FONT_STYLE__STRIKE_THROUGH:
+			setStrikeThrough(STRIKE_THROUGH_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.FONT_STYLE__FONT_COLOR:
+			return getFontColor() != FONT_COLOR_EDEFAULT;
+		case NattablestylePackage.FONT_STYLE__FONT_NAME:
+			return FONT_NAME_EDEFAULT == null ? getFontName() != null : !FONT_NAME_EDEFAULT.equals(getFontName());
+		case NattablestylePackage.FONT_STYLE__FONT_HEIGHT:
+			return getFontHeight() != FONT_HEIGHT_EDEFAULT;
+		case NattablestylePackage.FONT_STYLE__BOLD:
+			return isBold() != BOLD_EDEFAULT;
+		case NattablestylePackage.FONT_STYLE__ITALIC:
+			return isItalic() != ITALIC_EDEFAULT;
+		case NattablestylePackage.FONT_STYLE__UNDERLINE:
+			return isUnderline() != UNDERLINE_EDEFAULT;
+		case NattablestylePackage.FONT_STYLE__STRIKE_THROUGH:
+			return isStrikeThrough() != STRIKE_THROUGH_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // FontStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntListValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntListValueStyleImpl.java
new file mode 100644
index 0000000..6641c66
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntListValueStyleImpl.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.IntListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int List Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.IntListValueStyleImpl#getIntListValue <em>Int List Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntListValueStyleImpl extends NamedStyleImpl implements IntListValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntListValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.INT_LIST_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Integer> getIntListValue() {
+		return (EList<Integer>)eDynamicGet(NattablestylePackage.INT_LIST_VALUE_STYLE__INT_LIST_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.INT_LIST_VALUE_STYLE__INT_LIST_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.INT_LIST_VALUE_STYLE__INT_LIST_VALUE:
+				return getIntListValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.INT_LIST_VALUE_STYLE__INT_LIST_VALUE:
+				getIntListValue().clear();
+				getIntListValue().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.INT_LIST_VALUE_STYLE__INT_LIST_VALUE:
+				getIntListValue().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.INT_LIST_VALUE_STYLE__INT_LIST_VALUE:
+				return !getIntListValue().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // IntListValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntValueStyleImpl.java
new file mode 100644
index 0000000..0c129e0
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/IntValueStyleImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.IntValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.IntValueStyleImpl#getIntValue <em>Int Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntValueStyleImpl extends NamedStyleImpl implements IntValueStyle {
+
+	/**
+	 * The default value of the '{@link #getIntValue() <em>Int Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIntValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INT_VALUE_EDEFAULT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.INT_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIntValue() {
+		return (Integer)eDynamicGet(NattablestylePackage.INT_VALUE_STYLE__INT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.INT_VALUE_STYLE__INT_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIntValue(int newIntValue) {
+		eDynamicSet(NattablestylePackage.INT_VALUE_STYLE__INT_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.INT_VALUE_STYLE__INT_VALUE, newIntValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.INT_VALUE_STYLE__INT_VALUE:
+				return getIntValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.INT_VALUE_STYLE__INT_VALUE:
+				setIntValue((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.INT_VALUE_STYLE__INT_VALUE:
+				setIntValue(INT_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.INT_VALUE_STYLE__INT_VALUE:
+				return getIntValue() != INT_VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // IntValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NamedStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NamedStyleImpl.java
new file mode 100644
index 0000000..210b756
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NamedStyleImpl.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NamedStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.NamedStyleImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class NamedStyleImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements NamedStyle {
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected NamedStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.NAMED_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return (String) eDynamicGet(NattablestylePackage.NAMED_STYLE__NAME - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.NAMED_STYLE__NAME, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		eDynamicSet(NattablestylePackage.NAMED_STYLE__NAME - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.NAMED_STYLE__NAME, newName);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablestylePackage.NAMED_STYLE__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablestylePackage.NAMED_STYLE__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.NAMED_STYLE__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.NAMED_STYLE__NAME:
+			return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+		}
+		return super.eIsSet(featureID);
+	}
+} // NamedStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NattablestyleFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NattablestyleFactoryImpl.java
new file mode 100644
index 0000000..022f943
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/NattablestyleFactoryImpl.java
@@ -0,0 +1,354 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.BooleanListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.BooleanValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.CellTextAlignment;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.CellTextStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DisplayStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DoubleListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DoubleValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.EObjectListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.EObjectValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.FontStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.IntListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.IntValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NamedStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestyleFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.StringListValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.StringValueStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.TableDisplayStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattablestyleFactoryImpl extends EFactoryImpl implements NattablestyleFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattablestyleFactory init() {
+		try {
+			NattablestyleFactory theNattablestyleFactory = (NattablestyleFactory)EPackage.Registry.INSTANCE.getEFactory(NattablestylePackage.eNS_URI);
+			if (theNattablestyleFactory != null) {
+				return theNattablestyleFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattablestyleFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablestyleFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattablestylePackage.NAMED_STYLE: return createNamedStyle();
+			case NattablestylePackage.FONT_STYLE: return createFontStyle();
+			case NattablestylePackage.CELL_TEXT_STYLE: return createCellTextStyle();
+			case NattablestylePackage.INT_VALUE_STYLE: return createIntValueStyle();
+			case NattablestylePackage.INT_LIST_VALUE_STYLE: return createIntListValueStyle();
+			case NattablestylePackage.BOOLEAN_VALUE_STYLE: return createBooleanValueStyle();
+			case NattablestylePackage.BOOLEAN_LIST_VALUE_STYLE: return createBooleanListValueStyle();
+			case NattablestylePackage.DOUBLE_VALUE_STYLE: return createDoubleValueStyle();
+			case NattablestylePackage.DOUBLE_LIST_VALUE_STYLE: return createDoubleListValueStyle();
+			case NattablestylePackage.STRING_VALUE_STYLE: return createStringValueStyle();
+			case NattablestylePackage.STRING_LIST_VALUE_STYLE: return createStringListValueStyle();
+			case NattablestylePackage.TABLE_DISPLAY_STYLE: return createTableDisplayStyle();
+			case NattablestylePackage.EOBJECT_VALUE_STYLE: return createEObjectValueStyle();
+			case NattablestylePackage.EOBJECT_LIST_VALUE_STYLE: return createEObjectListValueStyle();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattablestylePackage.CELL_TEXT_ALIGNMENT:
+				return createCellTextAlignmentFromString(eDataType, initialValue);
+			case NattablestylePackage.DISPLAY_STYLE:
+				return createDisplayStyleFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case NattablestylePackage.CELL_TEXT_ALIGNMENT:
+				return convertCellTextAlignmentToString(eDataType, instanceValue);
+			case NattablestylePackage.DISPLAY_STYLE:
+				return convertDisplayStyleToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NamedStyle createNamedStyle() {
+		NamedStyleImpl namedStyle = new NamedStyleImpl();
+		return namedStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FontStyle createFontStyle() {
+		FontStyleImpl fontStyle = new FontStyleImpl();
+		return fontStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CellTextStyle createCellTextStyle() {
+		CellTextStyleImpl cellTextStyle = new CellTextStyleImpl();
+		return cellTextStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntValueStyle createIntValueStyle() {
+		IntValueStyleImpl intValueStyle = new IntValueStyleImpl();
+		return intValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public IntListValueStyle createIntListValueStyle() {
+		IntListValueStyleImpl intListValueStyle = new IntListValueStyleImpl();
+		return intListValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BooleanValueStyle createBooleanValueStyle() {
+		BooleanValueStyleImpl booleanValueStyle = new BooleanValueStyleImpl();
+		return booleanValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BooleanListValueStyle createBooleanListValueStyle() {
+		BooleanListValueStyleImpl booleanListValueStyle = new BooleanListValueStyleImpl();
+		return booleanListValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DoubleValueStyle createDoubleValueStyle() {
+		DoubleValueStyleImpl doubleValueStyle = new DoubleValueStyleImpl();
+		return doubleValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DoubleListValueStyle createDoubleListValueStyle() {
+		DoubleListValueStyleImpl doubleListValueStyle = new DoubleListValueStyleImpl();
+		return doubleListValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public StringValueStyle createStringValueStyle() {
+		StringValueStyleImpl stringValueStyle = new StringValueStyleImpl();
+		return stringValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public StringListValueStyle createStringListValueStyle() {
+		StringListValueStyleImpl stringListValueStyle = new StringListValueStyleImpl();
+		return stringListValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TableDisplayStyle createTableDisplayStyle() {
+		TableDisplayStyleImpl tableDisplayStyle = new TableDisplayStyleImpl();
+		return tableDisplayStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObjectValueStyle createEObjectValueStyle() {
+		EObjectValueStyleImpl eObjectValueStyle = new EObjectValueStyleImpl();
+		return eObjectValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObjectListValueStyle createEObjectListValueStyle() {
+		EObjectListValueStyleImpl eObjectListValueStyle = new EObjectListValueStyleImpl();
+		return eObjectListValueStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CellTextAlignment createCellTextAlignmentFromString(EDataType eDataType, String initialValue) {
+		CellTextAlignment result = CellTextAlignment.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCellTextAlignmentToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DisplayStyle createDisplayStyleFromString(EDataType eDataType, String initialValue) {
+		DisplayStyle result = DisplayStyle.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDisplayStyleToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattablestylePackage getNattablestylePackage() {
+		return (NattablestylePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablestylePackage getPackage() {
+		return NattablestylePackage.eINSTANCE;
+	}
+} // NattablestyleFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringListValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringListValueStyleImpl.java
new file mode 100644
index 0000000..ca2d755
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringListValueStyleImpl.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.StringListValueStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String List Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StringListValueStyleImpl#getStringListValue <em>String List Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StringListValueStyleImpl extends NamedStyleImpl implements StringListValueStyle {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringListValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.STRING_LIST_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<String> getStringListValue() {
+		return (EList<String>)eDynamicGet(NattablestylePackage.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE:
+				return getStringListValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE:
+				getStringListValue().clear();
+				getStringListValue().addAll((Collection<? extends String>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE:
+				getStringListValue().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_LIST_VALUE_STYLE__STRING_LIST_VALUE:
+				return !getStringListValue().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+} // StringListValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringValueStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringValueStyleImpl.java
new file mode 100644
index 0000000..c221823
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StringValueStyleImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.StringValueStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Value Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StringValueStyleImpl#getStringValue <em>String Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class StringValueStyleImpl extends NamedStyleImpl implements StringValueStyle {
+
+	/**
+	 * The default value of the '{@link #getStringValue() <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStringValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String STRING_VALUE_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StringValueStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.STRING_VALUE_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getStringValue() {
+		return (String)eDynamicGet(NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.STRING_VALUE_STYLE__STRING_VALUE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setStringValue(String newStringValue) {
+		eDynamicSet(NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.STRING_VALUE_STYLE__STRING_VALUE, newStringValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE:
+				return getStringValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE:
+				setStringValue((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE:
+				setStringValue(STRING_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablestylePackage.STRING_VALUE_STYLE__STRING_VALUE:
+				return STRING_VALUE_EDEFAULT == null ? getStringValue() != null : !STRING_VALUE_EDEFAULT.equals(getStringValue());
+		}
+		return super.eIsSet(featureID);
+	}
+} // StringValueStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StyledElementImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StyledElementImpl.java
new file mode 100644
index 0000000..ec7807d
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/StyledElementImpl.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NamedStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.Style;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.StyledElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Styled Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl#getStyles <em>Styles</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public abstract class StyledElementImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements StyledElement {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StyledElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.STYLED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public EList<Style> getStyles() {
+		return (EList<Style>) eDynamicGet(NattablestylePackage.STYLED_ELEMENT__STYLES - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.STYLED_ELEMENT__STYLES, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public NamedStyle getNamedStyle(EClass eClass, String name) {
+		if (eClass != null && eIsSet(NattablestylePackage.Literals.STYLED_ELEMENT__STYLES) && NattablestylePackage.eINSTANCE.getNamedStyle().isSuperTypeOf(eClass)) {
+			for (Iterator i = getStyles().iterator(); i.hasNext();) {
+				Style style = (Style) i.next();
+				if (style.eClass() == eClass || eClass.isInstance(style)) {
+					if (style.eGet(NattablestylePackage.eINSTANCE.getNamedStyle_Name()).equals(name)) {
+						return (NamedStyle) style;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Style getStyle(EClass eClass) {
+		if (eClass != null && NattablestylePackage.eINSTANCE.getStyle().isSuperTypeOf(eClass)) {
+			if (eClass.isSuperTypeOf(eClass())) {
+				return (Style) this;
+			}
+			if (eIsSet(NattablestylePackage.Literals.STYLED_ELEMENT__STYLES)) {
+				for (Iterator<?> i = getStyles().iterator(); i.hasNext();) {
+					Style style = (Style) i.next();
+					if (style.eClass() == eClass || eClass.isInstance(style)) {
+						return style;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Style createStyle(EClass eClass) {
+		Style newStyle = (Style) eClass.getEPackage().getEFactoryInstance().create(eClass);
+		getStyles().add(newStyle);
+		return newStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case NattablestylePackage.STYLED_ELEMENT__STYLES:
+			return ((InternalEList<?>) getStyles()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablestylePackage.STYLED_ELEMENT__STYLES:
+			return getStyles();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablestylePackage.STYLED_ELEMENT__STYLES:
+			getStyles().clear();
+			getStyles().addAll((Collection<? extends Style>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.STYLED_ELEMENT__STYLES:
+			getStyles().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.STYLED_ELEMENT__STYLES:
+			return !getStyles().isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case NattablestylePackage.STYLED_ELEMENT___GET_NAMED_STYLE__ECLASS_STRING:
+			return getNamedStyle((EClass) arguments.get(0), (String) arguments.get(1));
+		case NattablestylePackage.STYLED_ELEMENT___GET_STYLE__ECLASS:
+			return getStyle((EClass) arguments.get(0));
+		case NattablestylePackage.STYLED_ELEMENT___CREATE_STYLE__ECLASS:
+			return createStyle((EClass) arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // StyledElementImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/TableDisplayStyleImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/TableDisplayStyleImpl.java
new file mode 100644
index 0000000..789394b
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablestyle/impl/TableDisplayStyleImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.DisplayStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.NattablestylePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablestyle.TableDisplayStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Display Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.TableDisplayStyleImpl#getDisplayStyle <em>Display Style</em>}</li>
+ * </ul>
+ *
+ * @generated not
+ */
+public class TableDisplayStyleImpl extends org.eclipse.emf.cdo.ecore.impl.EModelElementImpl implements TableDisplayStyle {
+
+	/**
+	 * The default value of the '{@link #getDisplayStyle() <em>Display Style</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDisplayStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final DisplayStyle DISPLAY_STYLE_EDEFAULT = DisplayStyle.NORMAL;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TableDisplayStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablestylePackage.Literals.TABLE_DISPLAY_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Decrease the generated ESTATIC_FEATURE_COUNT from 1 to 0 because the inherited
+	 * EModelElement.eAnnotations feature is implemented dynamically, too.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected static final int ESTATIC_FEATURE_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return ESTATIC_FEATURE_COUNT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public DisplayStyle getDisplayStyle() {
+		return (DisplayStyle) eDynamicGet(NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.TABLE_DISPLAY_STYLE__DISPLAY_STYLE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDisplayStyle(DisplayStyle newDisplayStyle) {
+		eDynamicSet(NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE - ESTATIC_FEATURE_COUNT, NattablestylePackage.Literals.TABLE_DISPLAY_STYLE__DISPLAY_STYLE, newDisplayStyle);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE:
+			return getDisplayStyle();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE:
+			setDisplayStyle((DisplayStyle) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE:
+			setDisplayStyle(DISPLAY_STYLE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case NattablestylePackage.TABLE_DISPLAY_STYLE__DISPLAY_STYLE:
+			return getDisplayStyle() != DISPLAY_STYLE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+} // TableDisplayStyleImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/AbstractTableTesterImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/AbstractTableTesterImpl.java
new file mode 100644
index 0000000..d4e4823
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/AbstractTableTesterImpl.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.AbstractTableTester;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.NattabletesterPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Table Tester</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class AbstractTableTesterImpl extends StyledElementImpl implements AbstractTableTester {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AbstractTableTesterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattabletesterPackage.Literals.ABSTRACT_TABLE_TESTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getTester() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case NattabletesterPackage.ABSTRACT_TABLE_TESTER___GET_TESTER:
+				return getTester();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // AbstractTableTesterImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/JavaTableTesterImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/JavaTableTesterImpl.java
new file mode 100644
index 0000000..3195e46
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/JavaTableTesterImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.JavaTableTester;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.NattabletesterPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Table Tester</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl.JavaTableTesterImpl#getTester <em>Tester</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class JavaTableTesterImpl extends AbstractTableTesterImpl implements JavaTableTester {
+
+	/**
+	 * The default value of the '{@link #getTester() <em>Tester</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTester()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TESTER_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected JavaTableTesterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattabletesterPackage.Literals.JAVA_TABLE_TESTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getTester() {
+		return (String)eDynamicGet(NattabletesterPackage.JAVA_TABLE_TESTER__TESTER - ESTATIC_FEATURE_COUNT, NattabletesterPackage.Literals.JAVA_TABLE_TESTER__TESTER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTester(String newTester) {
+		eDynamicSet(NattabletesterPackage.JAVA_TABLE_TESTER__TESTER - ESTATIC_FEATURE_COUNT, NattabletesterPackage.Literals.JAVA_TABLE_TESTER__TESTER, newTester);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattabletesterPackage.JAVA_TABLE_TESTER__TESTER:
+				return getTester();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattabletesterPackage.JAVA_TABLE_TESTER__TESTER:
+				setTester((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattabletesterPackage.JAVA_TABLE_TESTER__TESTER:
+				setTester(TESTER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattabletesterPackage.JAVA_TABLE_TESTER__TESTER:
+				return TESTER_EDEFAULT == null ? getTester() != null : !TESTER_EDEFAULT.equals(getTester());
+		}
+		return super.eIsSet(featureID);
+	}
+} // JavaTableTesterImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/NattabletesterFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/NattabletesterFactoryImpl.java
new file mode 100644
index 0000000..4630d17
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattabletester/impl/NattabletesterFactoryImpl.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattabletester.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.JavaTableTester;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.NattabletesterFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattabletester.NattabletesterPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattabletesterFactoryImpl extends EFactoryImpl implements NattabletesterFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattabletesterFactory init() {
+		try {
+			NattabletesterFactory theNattabletesterFactory = (NattabletesterFactory)EPackage.Registry.INSTANCE.getEFactory(NattabletesterPackage.eNS_URI);
+			if (theNattabletesterFactory != null) {
+				return theNattabletesterFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattabletesterFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattabletesterFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattabletesterPackage.JAVA_TABLE_TESTER: return createJavaTableTester();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public JavaTableTester createJavaTableTester() {
+		JavaTableTesterImpl javaTableTester = new JavaTableTesterImpl();
+		return javaTableTester;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NattabletesterPackage getNattabletesterPackage() {
+		return (NattabletesterPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattabletesterPackage getPackage() {
+		return NattabletesterPackage.eINSTANCE;
+	}
+} // NattabletesterFactoryImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/EObjectWrapperImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/EObjectWrapperImpl.java
new file mode 100644
index 0000000..468149e
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/EObjectWrapperImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.EObjectWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.NattablewrapperPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EObject Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl.EObjectWrapperImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EObjectWrapperImpl extends StyledElementImpl implements EObjectWrapper {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObjectWrapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablewrapperPackage.Literals.EOBJECT_WRAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getElement() {
+		return (EObject)eDynamicGet(NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablewrapperPackage.Literals.EOBJECT_WRAPPER__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetElement() {
+		return (EObject)eDynamicGet(NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablewrapperPackage.Literals.EOBJECT_WRAPPER__ELEMENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setElement(EObject newElement) {
+		eDynamicSet(NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablewrapperPackage.Literals.EOBJECT_WRAPPER__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT:
+				if (resolve) return getElement();
+				return basicGetElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT:
+				setElement((EObject)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT:
+				setElement((EObject)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablewrapperPackage.EOBJECT_WRAPPER__ELEMENT:
+				return basicGetElement() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //EObjectWrapperImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/IdWrapperImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/IdWrapperImpl.java
new file mode 100644
index 0000000..1720caa
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/IdWrapperImpl.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablestyle.impl.StyledElementImpl;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.IdWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.NattablewrapperPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Id Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl.IdWrapperImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IdWrapperImpl extends StyledElementImpl implements IdWrapper {
+	/**
+	 * The default value of the '{@link #getElement() <em>Element</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ELEMENT_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IdWrapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NattablewrapperPackage.Literals.ID_WRAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getElement() {
+		return (String)eDynamicGet(NattablewrapperPackage.ID_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablewrapperPackage.Literals.ID_WRAPPER__ELEMENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setElement(String newElement) {
+		eDynamicSet(NattablewrapperPackage.ID_WRAPPER__ELEMENT - ESTATIC_FEATURE_COUNT, NattablewrapperPackage.Literals.ID_WRAPPER__ELEMENT, newElement);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NattablewrapperPackage.ID_WRAPPER__ELEMENT:
+				return getElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NattablewrapperPackage.ID_WRAPPER__ELEMENT:
+				setElement((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NattablewrapperPackage.ID_WRAPPER__ELEMENT:
+				setElement(ELEMENT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NattablewrapperPackage.ID_WRAPPER__ELEMENT:
+				return ELEMENT_EDEFAULT == null ? getElement() != null : !ELEMENT_EDEFAULT.equals(getElement());
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //IdWrapperImpl
diff --git a/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/NattablewrapperFactoryImpl.java b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/NattablewrapperFactoryImpl.java
new file mode 100644
index 0000000..3954534
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.infra.nattable.model.cdo/src/org/eclipse/papyrus/infra/nattable/model/cdo/nattable/nattablewrapper/impl/NattablewrapperFactoryImpl.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2013 CEA LIST.
+ * 
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ * 	Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.infra.nattable.model.cdo.nattable.nattablewrapper.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.EObjectWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.IdWrapper;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.NattablewrapperFactory;
+import org.eclipse.papyrus.infra.nattable.model.nattable.nattablewrapper.NattablewrapperPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NattablewrapperFactoryImpl extends EFactoryImpl implements NattablewrapperFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NattablewrapperFactory init() {
+		try {
+			NattablewrapperFactory theNattablewrapperFactory = (NattablewrapperFactory)EPackage.Registry.INSTANCE.getEFactory(NattablewrapperPackage.eNS_URI);
+			if (theNattablewrapperFactory != null) {
+				return theNattablewrapperFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NattablewrapperFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablewrapperFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NattablewrapperPackage.EOBJECT_WRAPPER: return createEObjectWrapper();
+			case NattablewrapperPackage.ID_WRAPPER: return createIdWrapper();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObjectWrapper createEObjectWrapper() {
+		EObjectWrapperImpl eObjectWrapper = new EObjectWrapperImpl();
+		return eObjectWrapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IdWrapper createIdWrapper() {
+		IdWrapperImpl idWrapper = new IdWrapperImpl();
+		return idWrapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NattablewrapperPackage getNattablewrapperPackage() {
+		return (NattablewrapperPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NattablewrapperPackage getPackage() {
+		return NattablewrapperPackage.eINSTANCE;
+	}
+
+} //NattablewrapperFactoryImpl
diff --git a/cdo/bundles/pom.xml b/cdo/bundles/pom.xml
index bb79c5a..16a5086 100755
--- a/cdo/bundles/pom.xml
+++ b/cdo/bundles/pom.xml
@@ -31,8 +31,10 @@
  
 		<module>org.eclipse.papyrus.infra.gmfdiag.css.cdo</module>
 		<module>org.eclipse.papyrus.infra.gmfdiag.style.cdo</module>
+		<module>org.eclipse.papyrus.infra.core.architecture.cdo</module>
+		<module>org.eclipse.papyrus.infra.nattable.model.cdo</module>
+    
 		<module>uml</module>
-				
 	</modules>
 	
 </project>
\ No newline at end of file
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/migrate.ant b/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/migrate.ant
index 32718a6..215e05a 100644
--- a/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/migrate.ant
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.cdo/migrate.ant
@@ -88,6 +88,7 @@
 		<copy todir="${impl}">
 			<fileset dir="${uml.tmp}/src/org/eclipse/uml2/uml/internal/impl">
 				<include name="*.java" />
+        <exclude name="UMLPackageImpl.java" />
 			</fileset>
 
 			<!--
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.classpath b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.gitignore b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.gitignore
new file mode 100644
index 0000000..8000a78
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.gitignore
@@ -0,0 +1,2 @@
+bin
+/target/
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.project b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.project
new file mode 100644
index 0000000..04fe44c
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.uml2.uml.profile.standard.cdo</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.core.prefs b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..af0f20f
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.ui.prefs b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..9aa3e72
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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.number_suffix=false
+cleanup.organize_imports=false
+cleanup.push_down_negation=false
+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=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_type_arguments=false
+cleanup.remove_trailing_whitespaces=false
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_array_creation=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=true
+cleanup.remove_unused_private_types=true
+cleanup.simplify_lambda_expression_and_method_ref=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_autoboxing=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_directly_map_method=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_unboxing=false
+cleanup_profile=org.eclipse.jdt.ui.default.eclipse_clean_up_profile
+cleanup_settings_version=2
+eclipse.preferences.version=1
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/META-INF/MANIFEST.MF b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bd0d26e
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.uml2.uml.profile.standard.cdo;singleton:=true
+Bundle-Version: 1.5.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.uml2.uml.profile.standard.cdo
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";resolution:=optional;x-installation:=greedy,
+ org.eclipse.uml2.uml.profile.standard;bundle-version="1.5.0";visibility:=reexport,
+ org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)"
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.uml2.uml.profile.standard.cdo
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/Migrate UML2 Standard Profile.launch b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/Migrate UML2 Standard Profile.launch
new file mode 100644
index 0000000..f4c364c
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/Migrate UML2 Standard Profile.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.uml2.uml.profile.standard.cdo&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.uml2.uml.profile.standard.cdo/migrate.ant"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uml2.uml.profile.standard.cdo"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.uml2.uml.profile.standard.cdo/migrate.ant}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dgit.clone.uml2=${git.clone.uml2}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/about.html b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/about.html
new file mode 100644
index 0000000..1a90f7e
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/about.html
@@ -0,0 +1,28 @@
+<!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>May 12, 2008</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-v20.html">http://www.eclipse.org/legal/epl-v20.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/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/build.properties b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/build.properties
new file mode 100644
index 0000000..8c22674
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/build.properties
@@ -0,0 +1,24 @@
+# Copyright (c) 2014, 2018 CEA and others.
+# All rights reserved.   This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#   Kenn Hussey (CEA) - initial API and implementation
+#   Kenn Hussey - 535301
+#
+source.. = src/
+output.. = bin/
+bin.includes = about.html,\
+               plugin.*,\
+               .,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+src.includes = about.html,\
+               Migrate UML2 Standard Profile.launch,\
+               migrate.ant
+exclude.. = **/doc-files/**
+javacSource = 1.5
+javacTarget = 1.5
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/migrate.ant b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/migrate.ant
new file mode 100644
index 0000000..3772b18
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/migrate.ant
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<!--
+  Copyright (c) 2020 CEA LIST and others.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License 2.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-2.0/
+  
+  SPDX-License-Identifier: EPL-2.0
+
+  Contributors:
+    Eike Stepper - initial API and implementation
+-->
+<project name="migrate" default="migrate">
+
+	<!--
+	  The migration of the UML2 model to CDO is completely automated.
+	  The following preconditions must be met before executing the 'migrate.ant' script:
+	 
+	  1. A recent 'EMF SDK' feature must be installed into the Eclipse IDE.
+	  
+	  2. The 'org.eclipse.emf.cdo.migrator' plugin must be installed into the Eclipse IDE.
+	 
+	  3. UML2's Git repository must be cloned from 
+	     https://git.eclipse.org/r/uml2/org.eclipse.uml2
+	     to the local disk. Its disk location must then be passed into this script
+	     through the 'git.clone.uml2' property.
+	    
+    4. This Ant script must be executed in the JRE of the running IDE!
+    
+    Ideally this script is executed via the accompanying 'Migrate UML2.launch'.
+    
+    Do NOT apply hand-written changes to the classes in the 
+    org.eclipse.uml2.uml.cdo.internal.impl package. 
+    This script will eventually overwrite them!
+    Rather modify the underlying UML2 code or this script.
+  -->
+	<target name="migrate">
+		<property name="project.name" value="org.eclipse.uml2.uml.profile.standard" />
+
+		<!--
+		  Ensure that UML2's Git clone exists and is reachable.
+	  -->
+		<fail unless="git.clone.uml2" message="Property 'git.clone.uml2' is undefined!" />
+		<property name="standard" location="${git.clone.uml2}/plugins/${project.name}" />
+		<fail message="The directory '${standard}' does not exist!">
+			<condition>
+				<not>
+					<available file="${standard}" type="dir" />
+				</not>
+			</condition>
+		</fail>
+
+		<property name="standard.tmp" location="${basedir}/target/${project.name}" />
+		<echo message="Migrating in ${standard.tmp} ..." />
+
+		<cdo.automaticBuild enable="false" />
+		<cdo.deleteProject projectname=".JETEmitters" deletecontent="true" />
+		<backup.project project.name="${project.name}" />
+
+		<!--
+		  Migrate the 'Standard.genmodel' to CDO and regenerate the model within the
+		  imported 'org.eclipse.uml2.uml.profile.standard' project.
+		-->
+		<property name="model.path" value="/${project.name}/model/Standard.genmodel" />
+		<cdo.migrateModel modelpath="${model.path}" dynamicfeaturedelegation="true" />
+		<cdo.generateModel modelpath="${model.path}" />
+
+		<!--
+		  Copy all Java files from the generated 'impl' folder to the
+		  'org.eclipse.uml2.uml.profile.standard.cdo' project. 
+		-->
+		<property name="impl" location="${basedir}/src/org/eclipse/uml2/uml/profile/standard/cdo" />
+		<delete>
+			<fileset dir="${impl}">
+				<include name="*.java" />
+			</fileset>
+		</delete>
+		<copy todir="${impl}">
+			<fileset dir="${standard.tmp}/src/org/eclipse/uml2/uml/profile/standard/internal/impl">
+				<include name="*.java" />
+				<exclude name="StandardPackageImpl.java" />
+			</fileset>
+
+			<!--
+			 Apply the following refactorings:
+			-->
+			<filterchain>
+				<!--
+	  		  Rename the Java package to 'org.eclipse.uml2.uml.profile.standard.cdo'.
+				-->
+				<replacestring from="org.eclipse.uml2.uml.profile.standard.internal.impl" to="org.eclipse.uml2.uml.profile.standard.cdo" />
+			</filterchain>
+		</copy>
+
+		<restore.project project.name="${project.name}" />
+
+		<!--
+		  Apply source cleanup to the 'org.eclipse.uml2.uml.profile.standard.cdo' project.
+		  This ensures that only relevant changes appear in the Git history.
+		-->
+		<cdo.cleanupProject projectname="org.eclipse.uml2.uml.profile.standard.cdo" />
+		<cdo.automaticBuild enable="true" />
+	</target>
+
+
+	<!--
+	  This macro copies a project from the UML2 Git repository to the 
+	  'target' folder of the 'org.eclipse.uml2.uml.profile.standard.cdo' project and then
+	  re-imports it from the new, temporary location into the workspace.
+	-->
+	<macrodef name="backup.project">
+		<attribute name="project.name" />
+		<sequential>
+			<echo message="Backing up project @{project.name}" />
+			<delete failonerror="false" includeemptydirs="true">
+				<fileset dir="${basedir}/target/@{project.name}">
+					<include name="**" />
+				</fileset>
+			</delete>
+			<copy todir="${basedir}/target/@{project.name}" verbose="false" failonerror="true" overwrite="true" includeemptydirs="false">
+				<fileset dir="${git.clone.uml2}/plugins/@{project.name}" defaultexcludes="true">
+					<include name="**/*" />
+					<exclude name="bin/**" />
+				</fileset>
+			</copy>
+			<replace dir="${basedir}/target/@{project.name}" token="@generated NOT_CDO" value="@generated">
+				<include name="**/*.java" />
+			</replace>
+			<cdo.deleteProject projectname="@{project.name}" />
+			<cdo.importProject projectname="@{project.name}" fromlocation="${basedir}/target/@{project.name}" />
+		</sequential>
+	</macrodef>
+
+	<!--
+	  This macro reverts the effect of the "backup.project" macro for
+	  the given workspace project, i.e., it re-imports the project from
+	  its original location in the UML2 Git repository.
+	-->
+	<macrodef name="restore.project">
+		<attribute name="project.name" />
+		<sequential>
+			<echo message="Restoring project @{project.name}" />
+			<cdo.deleteProject projectname="@{project.name}" />
+			<cdo.importProject projectname="@{project.name}" fromlocation="${git.clone.uml2}/plugins/@{project.name}" />
+		</sequential>
+	</macrodef>
+
+</project>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.properties b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.properties
new file mode 100644
index 0000000..4d85961
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.properties
@@ -0,0 +1,35 @@
+# Copyright (c) 2011, 2018 CEA and others.
+# All rights reserved.   This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#   Kenn Hussey (CEA) - initial API and implementation
+#   Kenn Hussey - 535301
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = UML2 Standard Profile (CDO Version)
+providerName = Eclipse Modeling Project
+
+_UI_Call_ClientAndSupplierAreOperations_diagnostic = Call ''{0}'' has a client or supplier that is not an operation.
+
+_UI_Create_ClientAndSupplierAreClassifiers_diagnostic = Create ''{0}'' has a client or supplier that is not a classifier.
+
+_UI_ImplementationClass_CannotBeRealization_diagnostic = Implementation class ''{0}'' cannot also be a realization.
+
+_UI_Implement_ImplementsSpecification_diagnostic = Implement ''{0}'' does not have a supplier specification.
+
+_UI_Instantiate_ClientAndSupplierAreClassifiers_diagnostic = Instantiate ''{0}'' has a client or supplier that is not a classifier.
+
+_UI_Realization_CannotBeImplementationClass_diagnostic = Realization ''{0}'' cannot also be an implementation class.
+
+_UI_Send_ClientOperationSendsSupplierSignal_diagnostic = Send ''{0}'' has a client that is not an operation or a supplier that is not a signal.
+
+_UI_Specification_CannotBeType_diagnostic = Specification ''{0}'' cannot also be a type.
+
+_UI_Type_CannotBeSpecification_diagnostic = Type ''{0}'' cannot also be a specification.
+
+_UI_Utility_IsUtility_diagnostic = Utility ''{0}'' has one or more non-static features.
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.xml b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.xml
new file mode 100644
index 0000000..21e972b
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/plugin.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2020 CEA and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v2.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v20.html
+
+ Contributors:
+   Eike Stepper - initial API and implementation
+
+-->
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.factory_override">
+    <factory 
+       uri = "http://www.eclipse.org/uml2/schemas/Standard/1" 
+       class = "org.eclipse.uml2.uml.profile.standard.cdo.StandardFactoryImpl" /> 
+  </extension>
+
+  <extension point="org.eclipse.emf.ecore.factory_override">
+    <factory
+       uri="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2"
+       class="org.eclipse.uml2.uml.profile.standard.cdo.StandardFactoryImpl" />
+  </extension>
+
+  <extension point="org.eclipse.emf.ecore.factory_override">
+    <factory
+       uri="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3"
+       class="org.eclipse.uml2.uml.profile.standard.cdo.StandardFactoryImpl" />
+  </extension>
+
+  <extension point="org.eclipse.emf.ecore.factory_override">
+    <factory
+       uri="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard"
+       class="org.eclipse.uml2.uml.profile.standard.cdo.StandardFactoryImpl" />
+  </extension>
+
+</plugin>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/pom.xml b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/pom.xml
new file mode 100644
index 0000000..1049510
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<artifactId>uml</artifactId>
+		<groupId>org.eclipse.papyrus.cdo</groupId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.uml2.uml.profile.standard.cdo</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<version>1.5.0-SNAPSHOT</version>
+</project>
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/AuxiliaryImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/AuxiliaryImpl.java
new file mode 100644
index 0000000..ba7ff1e
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/AuxiliaryImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.Auxiliary;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Auxiliary</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.AuxiliaryImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AuxiliaryImpl extends CDOObjectImpl implements Auxiliary {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AuxiliaryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.AUXILIARY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.AUXILIARY__BASE_CLASS,
+				StandardPackage.Literals.AUXILIARY__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.AUXILIARY__BASE_CLASS,
+				StandardPackage.Literals.AUXILIARY__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.AUXILIARY__BASE_CLASS, StandardPackage.Literals.AUXILIARY__BASE_CLASS,
+				newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.AUXILIARY__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.AUXILIARY__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.AUXILIARY__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.AUXILIARY__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //AuxiliaryImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/BuildComponentImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/BuildComponentImpl.java
new file mode 100644
index 0000000..e4c64a5
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/BuildComponentImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.BuildComponent;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Build Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.BuildComponentImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BuildComponentImpl extends CDOObjectImpl implements BuildComponent {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BuildComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.BUILD_COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.BUILD_COMPONENT__BASE_COMPONENT,
+				StandardPackage.Literals.BUILD_COMPONENT__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.BUILD_COMPONENT__BASE_COMPONENT,
+				StandardPackage.Literals.BUILD_COMPONENT__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.BUILD_COMPONENT__BASE_COMPONENT,
+				StandardPackage.Literals.BUILD_COMPONENT__BASE_COMPONENT, newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.BUILD_COMPONENT__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.BUILD_COMPONENT__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.BUILD_COMPONENT__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.BUILD_COMPONENT__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //BuildComponentImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CallImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CallImpl.java
new file mode 100644
index 0000000..8feae6e
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CallImpl.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.profile.standard.Call;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.CallOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Call</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.CallImpl#getBase_Usage <em>Base Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CallImpl extends CDOObjectImpl implements Call {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CallImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.CALL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage getBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.CALL__BASE_USAGE, StandardPackage.Literals.CALL__BASE_USAGE, true,
+				true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage basicGetBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.CALL__BASE_USAGE, StandardPackage.Literals.CALL__BASE_USAGE, false,
+				true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Usage(Usage newBase_Usage) {
+		eDynamicSet(StandardPackage.CALL__BASE_USAGE, StandardPackage.Literals.CALL__BASE_USAGE, newBase_Usage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateClientAndSupplierAreOperations(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return CallOperations.validateClientAndSupplierAreOperations(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.CALL__BASE_USAGE:
+			if (resolve)
+				return getBase_Usage();
+			return basicGetBase_Usage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.CALL__BASE_USAGE:
+			setBase_Usage((Usage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.CALL__BASE_USAGE:
+			setBase_Usage((Usage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.CALL__BASE_USAGE:
+			return basicGetBase_Usage() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.CALL___VALIDATE_CLIENT_AND_SUPPLIER_ARE_OPERATIONS__DIAGNOSTICCHAIN_MAP:
+			return validateClientAndSupplierAreOperations((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //CallImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CreateImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CreateImpl.java
new file mode 100644
index 0000000..7e4711a
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/CreateImpl.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.profile.standard.Create;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.CreateOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Create</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.CreateImpl#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.CreateImpl#getBase_Usage <em>Base Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CreateImpl extends CDOObjectImpl implements Create {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CreateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.CREATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BehavioralFeature getBase_BehavioralFeature() {
+		return (BehavioralFeature) eDynamicGet(StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.CREATE__BASE_BEHAVIORAL_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BehavioralFeature basicGetBase_BehavioralFeature() {
+		return (BehavioralFeature) eDynamicGet(StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.CREATE__BASE_BEHAVIORAL_FEATURE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_BehavioralFeature(BehavioralFeature newBase_BehavioralFeature) {
+		eDynamicSet(StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.CREATE__BASE_BEHAVIORAL_FEATURE, newBase_BehavioralFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage getBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.CREATE__BASE_USAGE, StandardPackage.Literals.CREATE__BASE_USAGE,
+				true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage basicGetBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.CREATE__BASE_USAGE, StandardPackage.Literals.CREATE__BASE_USAGE,
+				false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Usage(Usage newBase_Usage) {
+		eDynamicSet(StandardPackage.CREATE__BASE_USAGE, StandardPackage.Literals.CREATE__BASE_USAGE, newBase_Usage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateClientAndSupplierAreClassifiers(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return CreateOperations.validateClientAndSupplierAreClassifiers(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE:
+			if (resolve)
+				return getBase_BehavioralFeature();
+			return basicGetBase_BehavioralFeature();
+		case StandardPackage.CREATE__BASE_USAGE:
+			if (resolve)
+				return getBase_Usage();
+			return basicGetBase_Usage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE:
+			setBase_BehavioralFeature((BehavioralFeature) newValue);
+			return;
+		case StandardPackage.CREATE__BASE_USAGE:
+			setBase_Usage((Usage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE:
+			setBase_BehavioralFeature((BehavioralFeature) null);
+			return;
+		case StandardPackage.CREATE__BASE_USAGE:
+			setBase_Usage((Usage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.CREATE__BASE_BEHAVIORAL_FEATURE:
+			return basicGetBase_BehavioralFeature() != null;
+		case StandardPackage.CREATE__BASE_USAGE:
+			return basicGetBase_Usage() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.CREATE___VALIDATE_CLIENT_AND_SUPPLIER_ARE_CLASSIFIERS__DIAGNOSTICCHAIN_MAP:
+			return validateClientAndSupplierAreClassifiers((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //CreateImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DeriveImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DeriveImpl.java
new file mode 100644
index 0000000..5269c98
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DeriveImpl.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.ValueSpecification;
+import org.eclipse.uml2.uml.profile.standard.Derive;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Derive</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.DeriveImpl#getComputation <em>Computation</em>}</li>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.DeriveImpl#getBase_Abstraction <em>Base Abstraction</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DeriveImpl extends CDOObjectImpl implements Derive {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeriveImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.DERIVE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueSpecification getComputation() {
+		return (ValueSpecification) eDynamicGet(StandardPackage.DERIVE__COMPUTATION,
+				StandardPackage.Literals.DERIVE__COMPUTATION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueSpecification basicGetComputation() {
+		return (ValueSpecification) eDynamicGet(StandardPackage.DERIVE__COMPUTATION,
+				StandardPackage.Literals.DERIVE__COMPUTATION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetComputation(ValueSpecification newComputation, NotificationChain msgs) {
+		msgs = eDynamicInverseAdd((InternalEObject) newComputation, StandardPackage.DERIVE__COMPUTATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComputation(ValueSpecification newComputation) {
+		eDynamicSet(StandardPackage.DERIVE__COMPUTATION, StandardPackage.Literals.DERIVE__COMPUTATION, newComputation);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction getBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.DERIVE__BASE_ABSTRACTION,
+				StandardPackage.Literals.DERIVE__BASE_ABSTRACTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction basicGetBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.DERIVE__BASE_ABSTRACTION,
+				StandardPackage.Literals.DERIVE__BASE_ABSTRACTION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Abstraction(Abstraction newBase_Abstraction) {
+		eDynamicSet(StandardPackage.DERIVE__BASE_ABSTRACTION, StandardPackage.Literals.DERIVE__BASE_ABSTRACTION,
+				newBase_Abstraction);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case StandardPackage.DERIVE__COMPUTATION:
+			return basicSetComputation(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.DERIVE__COMPUTATION:
+			if (resolve)
+				return getComputation();
+			return basicGetComputation();
+		case StandardPackage.DERIVE__BASE_ABSTRACTION:
+			if (resolve)
+				return getBase_Abstraction();
+			return basicGetBase_Abstraction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.DERIVE__COMPUTATION:
+			setComputation((ValueSpecification) newValue);
+			return;
+		case StandardPackage.DERIVE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.DERIVE__COMPUTATION:
+			setComputation((ValueSpecification) null);
+			return;
+		case StandardPackage.DERIVE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.DERIVE__COMPUTATION:
+			return basicGetComputation() != null;
+		case StandardPackage.DERIVE__BASE_ABSTRACTION:
+			return basicGetBase_Abstraction() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DeriveImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DestroyImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DestroyImpl.java
new file mode 100644
index 0000000..2bb312c
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DestroyImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.profile.standard.Destroy;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Destroy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.DestroyImpl#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DestroyImpl extends CDOObjectImpl implements Destroy {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DestroyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.DESTROY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BehavioralFeature getBase_BehavioralFeature() {
+		return (BehavioralFeature) eDynamicGet(StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.DESTROY__BASE_BEHAVIORAL_FEATURE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BehavioralFeature basicGetBase_BehavioralFeature() {
+		return (BehavioralFeature) eDynamicGet(StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.DESTROY__BASE_BEHAVIORAL_FEATURE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_BehavioralFeature(BehavioralFeature newBase_BehavioralFeature) {
+		eDynamicSet(StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE,
+				StandardPackage.Literals.DESTROY__BASE_BEHAVIORAL_FEATURE, newBase_BehavioralFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE:
+			if (resolve)
+				return getBase_BehavioralFeature();
+			return basicGetBase_BehavioralFeature();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE:
+			setBase_BehavioralFeature((BehavioralFeature) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE:
+			setBase_BehavioralFeature((BehavioralFeature) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.DESTROY__BASE_BEHAVIORAL_FEATURE:
+			return basicGetBase_BehavioralFeature() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DestroyImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DocumentImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DocumentImpl.java
new file mode 100644
index 0000000..ca0238f
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/DocumentImpl.java
@@ -0,0 +1,111 @@
+/*8
+ * Copyright (c) 2014, 201 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.Document;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.DocumentImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DocumentImpl extends FileImpl implements Document {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DocumentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.DOCUMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.DOCUMENT__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.DOCUMENT__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.DOCUMENT__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_Artifact() {
+		return basicGetBase_Artifact() != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.DOCUMENT__BASE_ARTIFACT:
+			return isSetBase_Artifact();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DocumentImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/EntityImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/EntityImpl.java
new file mode 100644
index 0000000..af19a9c
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/EntityImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.Entity;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.EntityImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EntityImpl extends CDOObjectImpl implements Entity {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.ENTITY__BASE_COMPONENT,
+				StandardPackage.Literals.ENTITY__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.ENTITY__BASE_COMPONENT,
+				StandardPackage.Literals.ENTITY__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.ENTITY__BASE_COMPONENT, StandardPackage.Literals.ENTITY__BASE_COMPONENT,
+				newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.ENTITY__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.ENTITY__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.ENTITY__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.ENTITY__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //EntityImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ExecutableImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ExecutableImpl.java
new file mode 100644
index 0000000..6ed2d42
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ExecutableImpl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.Executable;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Executable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ExecutableImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ExecutableImpl extends FileImpl implements Executable {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExecutableImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.EXECUTABLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.EXECUTABLE__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.EXECUTABLE__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.EXECUTABLE__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_Artifact() {
+		return basicGetBase_Artifact() != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.EXECUTABLE__BASE_ARTIFACT:
+			return isSetBase_Artifact();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ExecutableImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FileImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FileImpl.java
new file mode 100644
index 0000000..b4c3151
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FileImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.File;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>File</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.FileImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class FileImpl extends CDOObjectImpl implements File {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FileImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.FILE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.FILE__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.FILE__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.FILE__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.FILE__BASE_ARTIFACT:
+			if (resolve)
+				return getBase_Artifact();
+			return basicGetBase_Artifact();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.FILE__BASE_ARTIFACT:
+			setBase_Artifact((Artifact) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FILE__BASE_ARTIFACT:
+			setBase_Artifact((Artifact) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FILE__BASE_ARTIFACT:
+			return basicGetBase_Artifact() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FileImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FocusImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FocusImpl.java
new file mode 100644
index 0000000..55b7b4c
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FocusImpl.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.Focus;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Focus</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.FocusImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FocusImpl extends CDOObjectImpl implements Focus {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FocusImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.FOCUS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.FOCUS__BASE_CLASS,
+				StandardPackage.Literals.FOCUS__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.FOCUS__BASE_CLASS,
+				StandardPackage.Literals.FOCUS__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.FOCUS__BASE_CLASS, StandardPackage.Literals.FOCUS__BASE_CLASS, newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.FOCUS__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.FOCUS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FOCUS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FOCUS__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FocusImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FrameworkImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FrameworkImpl.java
new file mode 100644
index 0000000..3727221
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/FrameworkImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.Framework;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Framework</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.FrameworkImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FrameworkImpl extends CDOObjectImpl implements Framework {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FrameworkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.FRAMEWORK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Package getBase_Package() {
+		return (org.eclipse.uml2.uml.Package) eDynamicGet(StandardPackage.FRAMEWORK__BASE_PACKAGE,
+				StandardPackage.Literals.FRAMEWORK__BASE_PACKAGE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+		return (org.eclipse.uml2.uml.Package) eDynamicGet(StandardPackage.FRAMEWORK__BASE_PACKAGE,
+				StandardPackage.Literals.FRAMEWORK__BASE_PACKAGE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+		eDynamicSet(StandardPackage.FRAMEWORK__BASE_PACKAGE, StandardPackage.Literals.FRAMEWORK__BASE_PACKAGE,
+				newBase_Package);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.FRAMEWORK__BASE_PACKAGE:
+			if (resolve)
+				return getBase_Package();
+			return basicGetBase_Package();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.FRAMEWORK__BASE_PACKAGE:
+			setBase_Package((org.eclipse.uml2.uml.Package) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FRAMEWORK__BASE_PACKAGE:
+			setBase_Package((org.eclipse.uml2.uml.Package) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.FRAMEWORK__BASE_PACKAGE:
+			return basicGetBase_Package() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FrameworkImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementImpl.java
new file mode 100644
index 0000000..6c25766
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementImpl.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.Implement;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.ImplementOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Implement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ImplementImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ImplementImpl extends CDOObjectImpl implements Implement {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImplementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.IMPLEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.IMPLEMENT__BASE_COMPONENT,
+				StandardPackage.Literals.IMPLEMENT__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.IMPLEMENT__BASE_COMPONENT,
+				StandardPackage.Literals.IMPLEMENT__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.IMPLEMENT__BASE_COMPONENT, StandardPackage.Literals.IMPLEMENT__BASE_COMPONENT,
+				newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateImplementsSpecification(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ImplementOperations.validateImplementsSpecification(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENT__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENT__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENT__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENT__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.IMPLEMENT___VALIDATE_IMPLEMENTS_SPECIFICATION__DIAGNOSTICCHAIN_MAP:
+			return validateImplementsSpecification((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //ImplementImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementationClassImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementationClassImpl.java
new file mode 100644
index 0000000..19ecaa3
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ImplementationClassImpl.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.ImplementationClass;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.ImplementationClassOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Implementation Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ImplementationClassImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ImplementationClassImpl extends CDOObjectImpl implements ImplementationClass {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImplementationClassImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.IMPLEMENTATION_CLASS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS,
+				StandardPackage.Literals.IMPLEMENTATION_CLASS__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS,
+				StandardPackage.Literals.IMPLEMENTATION_CLASS__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS,
+				StandardPackage.Literals.IMPLEMENTATION_CLASS__BASE_CLASS, newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateCannotBeRealization(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return ImplementationClassOperations.validateCannotBeRealization(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.IMPLEMENTATION_CLASS__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.IMPLEMENTATION_CLASS___VALIDATE_CANNOT_BE_REALIZATION__DIAGNOSTICCHAIN_MAP:
+			return validateCannotBeRealization((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //ImplementationClassImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/InstantiateImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/InstantiateImpl.java
new file mode 100644
index 0000000..da9a6f8
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/InstantiateImpl.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.profile.standard.Instantiate;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.InstantiateOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instantiate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.InstantiateImpl#getBase_Usage <em>Base Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class InstantiateImpl extends CDOObjectImpl implements Instantiate {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InstantiateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.INSTANTIATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage getBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.INSTANTIATE__BASE_USAGE,
+				StandardPackage.Literals.INSTANTIATE__BASE_USAGE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage basicGetBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.INSTANTIATE__BASE_USAGE,
+				StandardPackage.Literals.INSTANTIATE__BASE_USAGE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Usage(Usage newBase_Usage) {
+		eDynamicSet(StandardPackage.INSTANTIATE__BASE_USAGE, StandardPackage.Literals.INSTANTIATE__BASE_USAGE,
+				newBase_Usage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateClientAndSupplierAreClassifiers(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return InstantiateOperations.validateClientAndSupplierAreClassifiers(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.INSTANTIATE__BASE_USAGE:
+			if (resolve)
+				return getBase_Usage();
+			return basicGetBase_Usage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.INSTANTIATE__BASE_USAGE:
+			setBase_Usage((Usage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.INSTANTIATE__BASE_USAGE:
+			setBase_Usage((Usage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.INSTANTIATE__BASE_USAGE:
+			return basicGetBase_Usage() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.INSTANTIATE___VALIDATE_CLIENT_AND_SUPPLIER_ARE_CLASSIFIERS__DIAGNOSTICCHAIN_MAP:
+			return validateClientAndSupplierAreClassifiers((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //InstantiateImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/LibraryImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/LibraryImpl.java
new file mode 100644
index 0000000..109de62
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/LibraryImpl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.Library;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.LibraryImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LibraryImpl extends FileImpl implements Library {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LibraryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.LIBRARY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.LIBRARY__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.LIBRARY__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.LIBRARY__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_Artifact() {
+		return basicGetBase_Artifact() != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.LIBRARY__BASE_ARTIFACT:
+			return isSetBase_Artifact();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LibraryImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetaclassImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetaclassImpl.java
new file mode 100644
index 0000000..3852527
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetaclassImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.Metaclass;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metaclass</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.MetaclassImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MetaclassImpl extends CDOObjectImpl implements Metaclass {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MetaclassImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.METACLASS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.METACLASS__BASE_CLASS,
+				StandardPackage.Literals.METACLASS__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.METACLASS__BASE_CLASS,
+				StandardPackage.Literals.METACLASS__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.METACLASS__BASE_CLASS, StandardPackage.Literals.METACLASS__BASE_CLASS,
+				newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.METACLASS__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.METACLASS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.METACLASS__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.METACLASS__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //MetaclassImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetamodelImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetamodelImpl.java
new file mode 100644
index 0000000..64143f9
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/MetamodelImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.profile.standard.Metamodel;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.MetamodelImpl#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MetamodelImpl extends CDOObjectImpl implements Metamodel {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MetamodelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.METAMODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Model getBase_Model() {
+		return (Model) eDynamicGet(StandardPackage.METAMODEL__BASE_MODEL,
+				StandardPackage.Literals.METAMODEL__BASE_MODEL, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Model basicGetBase_Model() {
+		return (Model) eDynamicGet(StandardPackage.METAMODEL__BASE_MODEL,
+				StandardPackage.Literals.METAMODEL__BASE_MODEL, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Model(Model newBase_Model) {
+		eDynamicSet(StandardPackage.METAMODEL__BASE_MODEL, StandardPackage.Literals.METAMODEL__BASE_MODEL,
+				newBase_Model);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.METAMODEL__BASE_MODEL:
+			if (resolve)
+				return getBase_Model();
+			return basicGetBase_Model();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.METAMODEL__BASE_MODEL:
+			setBase_Model((Model) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.METAMODEL__BASE_MODEL:
+			setBase_Model((Model) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.METAMODEL__BASE_MODEL:
+			return basicGetBase_Model() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //MetamodelImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ModelLibraryImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ModelLibraryImpl.java
new file mode 100644
index 0000000..d0b221d
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ModelLibraryImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.ModelLibrary;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ModelLibraryImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ModelLibraryImpl extends CDOObjectImpl implements ModelLibrary {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModelLibraryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.MODEL_LIBRARY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Package getBase_Package() {
+		return (org.eclipse.uml2.uml.Package) eDynamicGet(StandardPackage.MODEL_LIBRARY__BASE_PACKAGE,
+				StandardPackage.Literals.MODEL_LIBRARY__BASE_PACKAGE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+		return (org.eclipse.uml2.uml.Package) eDynamicGet(StandardPackage.MODEL_LIBRARY__BASE_PACKAGE,
+				StandardPackage.Literals.MODEL_LIBRARY__BASE_PACKAGE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+		eDynamicSet(StandardPackage.MODEL_LIBRARY__BASE_PACKAGE, StandardPackage.Literals.MODEL_LIBRARY__BASE_PACKAGE,
+				newBase_Package);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.MODEL_LIBRARY__BASE_PACKAGE:
+			if (resolve)
+				return getBase_Package();
+			return basicGetBase_Package();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.MODEL_LIBRARY__BASE_PACKAGE:
+			setBase_Package((org.eclipse.uml2.uml.Package) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.MODEL_LIBRARY__BASE_PACKAGE:
+			setBase_Package((org.eclipse.uml2.uml.Package) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.MODEL_LIBRARY__BASE_PACKAGE:
+			return basicGetBase_Package() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ModelLibraryImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ProcessImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ProcessImpl.java
new file mode 100644
index 0000000..f146291
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ProcessImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Process</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ProcessImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ProcessImpl extends CDOObjectImpl implements org.eclipse.uml2.uml.profile.standard.Process {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProcessImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.PROCESS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.PROCESS__BASE_COMPONENT,
+				StandardPackage.Literals.PROCESS__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.PROCESS__BASE_COMPONENT,
+				StandardPackage.Literals.PROCESS__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.PROCESS__BASE_COMPONENT, StandardPackage.Literals.PROCESS__BASE_COMPONENT,
+				newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.PROCESS__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.PROCESS__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.PROCESS__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.PROCESS__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProcessImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RealizationImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RealizationImpl.java
new file mode 100644
index 0000000..e944c6a
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RealizationImpl.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.profile.standard.Realization;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.RealizationOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Realization</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.RealizationImpl#getBase_Classifier <em>Base Classifier</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RealizationImpl extends CDOObjectImpl implements Realization {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RealizationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.REALIZATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classifier getBase_Classifier() {
+		return (Classifier) eDynamicGet(StandardPackage.REALIZATION__BASE_CLASSIFIER,
+				StandardPackage.Literals.REALIZATION__BASE_CLASSIFIER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classifier basicGetBase_Classifier() {
+		return (Classifier) eDynamicGet(StandardPackage.REALIZATION__BASE_CLASSIFIER,
+				StandardPackage.Literals.REALIZATION__BASE_CLASSIFIER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Classifier(Classifier newBase_Classifier) {
+		eDynamicSet(StandardPackage.REALIZATION__BASE_CLASSIFIER, StandardPackage.Literals.REALIZATION__BASE_CLASSIFIER,
+				newBase_Classifier);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateCannotBeImplementationClass(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return RealizationOperations.validateCannotBeImplementationClass(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.REALIZATION__BASE_CLASSIFIER:
+			if (resolve)
+				return getBase_Classifier();
+			return basicGetBase_Classifier();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.REALIZATION__BASE_CLASSIFIER:
+			setBase_Classifier((Classifier) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.REALIZATION__BASE_CLASSIFIER:
+			setBase_Classifier((Classifier) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.REALIZATION__BASE_CLASSIFIER:
+			return basicGetBase_Classifier() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.REALIZATION___VALIDATE_CANNOT_BE_IMPLEMENTATION_CLASS__DIAGNOSTICCHAIN_MAP:
+			return validateCannotBeImplementationClass((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //RealizationImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RefineImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RefineImpl.java
new file mode 100644
index 0000000..14393d5
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/RefineImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.profile.standard.Refine;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Refine</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.RefineImpl#getBase_Abstraction <em>Base Abstraction</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RefineImpl extends CDOObjectImpl implements Refine {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RefineImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.REFINE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction getBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.REFINE__BASE_ABSTRACTION,
+				StandardPackage.Literals.REFINE__BASE_ABSTRACTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction basicGetBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.REFINE__BASE_ABSTRACTION,
+				StandardPackage.Literals.REFINE__BASE_ABSTRACTION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Abstraction(Abstraction newBase_Abstraction) {
+		eDynamicSet(StandardPackage.REFINE__BASE_ABSTRACTION, StandardPackage.Literals.REFINE__BASE_ABSTRACTION,
+				newBase_Abstraction);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.REFINE__BASE_ABSTRACTION:
+			if (resolve)
+				return getBase_Abstraction();
+			return basicGetBase_Abstraction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.REFINE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.REFINE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.REFINE__BASE_ABSTRACTION:
+			return basicGetBase_Abstraction() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //RefineImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ResponsibilityImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ResponsibilityImpl.java
new file mode 100644
index 0000000..943fca5
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ResponsibilityImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.profile.standard.Responsibility;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Responsibility</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ResponsibilityImpl#getBase_Usage <em>Base Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ResponsibilityImpl extends CDOObjectImpl implements Responsibility {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResponsibilityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.RESPONSIBILITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage getBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.RESPONSIBILITY__BASE_USAGE,
+				StandardPackage.Literals.RESPONSIBILITY__BASE_USAGE, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage basicGetBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.RESPONSIBILITY__BASE_USAGE,
+				StandardPackage.Literals.RESPONSIBILITY__BASE_USAGE, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Usage(Usage newBase_Usage) {
+		eDynamicSet(StandardPackage.RESPONSIBILITY__BASE_USAGE, StandardPackage.Literals.RESPONSIBILITY__BASE_USAGE,
+				newBase_Usage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.RESPONSIBILITY__BASE_USAGE:
+			if (resolve)
+				return getBase_Usage();
+			return basicGetBase_Usage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.RESPONSIBILITY__BASE_USAGE:
+			setBase_Usage((Usage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.RESPONSIBILITY__BASE_USAGE:
+			setBase_Usage((Usage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.RESPONSIBILITY__BASE_USAGE:
+			return basicGetBase_Usage() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ResponsibilityImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ScriptImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ScriptImpl.java
new file mode 100644
index 0000000..b76533e
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ScriptImpl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.Script;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Script</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ScriptImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ScriptImpl extends FileImpl implements Script {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ScriptImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SCRIPT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.SCRIPT__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.SCRIPT__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.SCRIPT__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_Artifact() {
+		return basicGetBase_Artifact() != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SCRIPT__BASE_ARTIFACT:
+			return isSetBase_Artifact();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ScriptImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SendImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SendImpl.java
new file mode 100644
index 0000000..b504c51
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SendImpl.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Usage;
+import org.eclipse.uml2.uml.profile.standard.Send;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.SendOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Send</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.SendImpl#getBase_Usage <em>Base Usage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SendImpl extends CDOObjectImpl implements Send {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SendImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SEND;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage getBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.SEND__BASE_USAGE, StandardPackage.Literals.SEND__BASE_USAGE, true,
+				true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Usage basicGetBase_Usage() {
+		return (Usage) eDynamicGet(StandardPackage.SEND__BASE_USAGE, StandardPackage.Literals.SEND__BASE_USAGE, false,
+				true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Usage(Usage newBase_Usage) {
+		eDynamicSet(StandardPackage.SEND__BASE_USAGE, StandardPackage.Literals.SEND__BASE_USAGE, newBase_Usage);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateClientOperationSendsSupplierSignal(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
+		return SendOperations.validateClientOperationSendsSupplierSignal(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.SEND__BASE_USAGE:
+			if (resolve)
+				return getBase_Usage();
+			return basicGetBase_Usage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.SEND__BASE_USAGE:
+			setBase_Usage((Usage) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SEND__BASE_USAGE:
+			setBase_Usage((Usage) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SEND__BASE_USAGE:
+			return basicGetBase_Usage() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.SEND___VALIDATE_CLIENT_OPERATION_SENDS_SUPPLIER_SIGNAL__DIAGNOSTICCHAIN_MAP:
+			return validateClientOperationSendsSupplierSignal((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //SendImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ServiceImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ServiceImpl.java
new file mode 100644
index 0000000..75dd2b3
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/ServiceImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.Service;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.ServiceImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ServiceImpl extends CDOObjectImpl implements Service {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.SERVICE__BASE_COMPONENT,
+				StandardPackage.Literals.SERVICE__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.SERVICE__BASE_COMPONENT,
+				StandardPackage.Literals.SERVICE__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.SERVICE__BASE_COMPONENT, StandardPackage.Literals.SERVICE__BASE_COMPONENT,
+				newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.SERVICE__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.SERVICE__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SERVICE__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SERVICE__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ServiceImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SourceImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SourceImpl.java
new file mode 100644
index 0000000..6ffa603
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SourceImpl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.profile.standard.Source;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Source</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.SourceImpl#getBase_Artifact <em>Base Artifact</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SourceImpl extends FileImpl implements Source {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SourceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SOURCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact getBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.SOURCE__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Artifact basicGetBase_Artifact() {
+		return (Artifact) eDynamicGet(StandardPackage.SOURCE__BASE_ARTIFACT,
+				StandardPackage.Literals.FILE__BASE_ARTIFACT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Artifact(Artifact newBase_Artifact) {
+		eDynamicSet(StandardPackage.SOURCE__BASE_ARTIFACT, StandardPackage.Literals.FILE__BASE_ARTIFACT,
+				newBase_Artifact);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_Artifact() {
+		return basicGetBase_Artifact() != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SOURCE__BASE_ARTIFACT:
+			return isSetBase_Artifact();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SourceImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SpecificationImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SpecificationImpl.java
new file mode 100644
index 0000000..be8bb6f
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SpecificationImpl.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.profile.standard.Specification;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.SpecificationOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Specification</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.SpecificationImpl#getBase_Classifier <em>Base Classifier</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SpecificationImpl extends CDOObjectImpl implements Specification {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SpecificationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SPECIFICATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classifier getBase_Classifier() {
+		return (Classifier) eDynamicGet(StandardPackage.SPECIFICATION__BASE_CLASSIFIER,
+				StandardPackage.Literals.SPECIFICATION__BASE_CLASSIFIER, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classifier basicGetBase_Classifier() {
+		return (Classifier) eDynamicGet(StandardPackage.SPECIFICATION__BASE_CLASSIFIER,
+				StandardPackage.Literals.SPECIFICATION__BASE_CLASSIFIER, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Classifier(Classifier newBase_Classifier) {
+		eDynamicSet(StandardPackage.SPECIFICATION__BASE_CLASSIFIER,
+				StandardPackage.Literals.SPECIFICATION__BASE_CLASSIFIER, newBase_Classifier);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateCannotBeType(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return SpecificationOperations.validateCannotBeType(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.SPECIFICATION__BASE_CLASSIFIER:
+			if (resolve)
+				return getBase_Classifier();
+			return basicGetBase_Classifier();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.SPECIFICATION__BASE_CLASSIFIER:
+			setBase_Classifier((Classifier) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SPECIFICATION__BASE_CLASSIFIER:
+			setBase_Classifier((Classifier) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SPECIFICATION__BASE_CLASSIFIER:
+			return basicGetBase_Classifier() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.SPECIFICATION___VALIDATE_CANNOT_BE_TYPE__DIAGNOSTICCHAIN_MAP:
+			return validateCannotBeType((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //SpecificationImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/StandardFactoryImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/StandardFactoryImpl.java
new file mode 100644
index 0000000..6b385d0
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/StandardFactoryImpl.java
@@ -0,0 +1,508 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.uml2.uml.profile.standard.Auxiliary;
+import org.eclipse.uml2.uml.profile.standard.BuildComponent;
+import org.eclipse.uml2.uml.profile.standard.Call;
+import org.eclipse.uml2.uml.profile.standard.Create;
+import org.eclipse.uml2.uml.profile.standard.Derive;
+import org.eclipse.uml2.uml.profile.standard.Destroy;
+import org.eclipse.uml2.uml.profile.standard.Document;
+import org.eclipse.uml2.uml.profile.standard.Entity;
+import org.eclipse.uml2.uml.profile.standard.Executable;
+import org.eclipse.uml2.uml.profile.standard.Focus;
+import org.eclipse.uml2.uml.profile.standard.Framework;
+import org.eclipse.uml2.uml.profile.standard.Implement;
+import org.eclipse.uml2.uml.profile.standard.ImplementationClass;
+import org.eclipse.uml2.uml.profile.standard.Instantiate;
+import org.eclipse.uml2.uml.profile.standard.Library;
+import org.eclipse.uml2.uml.profile.standard.Metaclass;
+import org.eclipse.uml2.uml.profile.standard.Metamodel;
+import org.eclipse.uml2.uml.profile.standard.ModelLibrary;
+import org.eclipse.uml2.uml.profile.standard.Realization;
+import org.eclipse.uml2.uml.profile.standard.Refine;
+import org.eclipse.uml2.uml.profile.standard.Responsibility;
+import org.eclipse.uml2.uml.profile.standard.Script;
+import org.eclipse.uml2.uml.profile.standard.Send;
+import org.eclipse.uml2.uml.profile.standard.Service;
+import org.eclipse.uml2.uml.profile.standard.Source;
+import org.eclipse.uml2.uml.profile.standard.Specification;
+import org.eclipse.uml2.uml.profile.standard.StandardFactory;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.Subsystem;
+import org.eclipse.uml2.uml.profile.standard.SystemModel;
+import org.eclipse.uml2.uml.profile.standard.Trace;
+import org.eclipse.uml2.uml.profile.standard.Type;
+import org.eclipse.uml2.uml.profile.standard.Utility;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StandardFactoryImpl extends EFactoryImpl implements StandardFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static StandardFactory init() {
+		try {
+			StandardFactory theStandardFactory = (StandardFactory) EPackage.Registry.INSTANCE
+					.getEFactory(StandardPackage.eNS_URI);
+			if (theStandardFactory != null) {
+				return theStandardFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new StandardFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StandardFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case StandardPackage.AUXILIARY:
+			return (EObject) createAuxiliary();
+		case StandardPackage.CALL:
+			return (EObject) createCall();
+		case StandardPackage.CREATE:
+			return (EObject) createCreate();
+		case StandardPackage.DERIVE:
+			return (EObject) createDerive();
+		case StandardPackage.DESTROY:
+			return (EObject) createDestroy();
+		case StandardPackage.DOCUMENT:
+			return (EObject) createDocument();
+		case StandardPackage.ENTITY:
+			return (EObject) createEntity();
+		case StandardPackage.EXECUTABLE:
+			return (EObject) createExecutable();
+		case StandardPackage.FOCUS:
+			return (EObject) createFocus();
+		case StandardPackage.FRAMEWORK:
+			return (EObject) createFramework();
+		case StandardPackage.IMPLEMENT:
+			return (EObject) createImplement();
+		case StandardPackage.IMPLEMENTATION_CLASS:
+			return (EObject) createImplementationClass();
+		case StandardPackage.INSTANTIATE:
+			return (EObject) createInstantiate();
+		case StandardPackage.LIBRARY:
+			return (EObject) createLibrary();
+		case StandardPackage.METACLASS:
+			return (EObject) createMetaclass();
+		case StandardPackage.MODEL_LIBRARY:
+			return (EObject) createModelLibrary();
+		case StandardPackage.PROCESS:
+			return (EObject) createProcess();
+		case StandardPackage.REALIZATION:
+			return (EObject) createRealization();
+		case StandardPackage.REFINE:
+			return (EObject) createRefine();
+		case StandardPackage.RESPONSIBILITY:
+			return (EObject) createResponsibility();
+		case StandardPackage.SCRIPT:
+			return (EObject) createScript();
+		case StandardPackage.SEND:
+			return (EObject) createSend();
+		case StandardPackage.SERVICE:
+			return (EObject) createService();
+		case StandardPackage.SOURCE:
+			return (EObject) createSource();
+		case StandardPackage.SPECIFICATION:
+			return (EObject) createSpecification();
+		case StandardPackage.SUBSYSTEM:
+			return (EObject) createSubsystem();
+		case StandardPackage.TRACE:
+			return (EObject) createTrace();
+		case StandardPackage.TYPE:
+			return (EObject) createType();
+		case StandardPackage.UTILITY:
+			return (EObject) createUtility();
+		case StandardPackage.BUILD_COMPONENT:
+			return (EObject) createBuildComponent();
+		case StandardPackage.METAMODEL:
+			return (EObject) createMetamodel();
+		case StandardPackage.SYSTEM_MODEL:
+			return (EObject) createSystemModel();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Auxiliary createAuxiliary() {
+		AuxiliaryImpl auxiliary = new AuxiliaryImpl();
+		return auxiliary;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Call createCall() {
+		CallImpl call = new CallImpl();
+		return call;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Create createCreate() {
+		CreateImpl create = new CreateImpl();
+		return create;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Derive createDerive() {
+		DeriveImpl derive = new DeriveImpl();
+		return derive;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Destroy createDestroy() {
+		DestroyImpl destroy = new DestroyImpl();
+		return destroy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Document createDocument() {
+		DocumentImpl document = new DocumentImpl();
+		return document;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Entity createEntity() {
+		EntityImpl entity = new EntityImpl();
+		return entity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Executable createExecutable() {
+		ExecutableImpl executable = new ExecutableImpl();
+		return executable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Focus createFocus() {
+		FocusImpl focus = new FocusImpl();
+		return focus;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Framework createFramework() {
+		FrameworkImpl framework = new FrameworkImpl();
+		return framework;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Implement createImplement() {
+		ImplementImpl implement = new ImplementImpl();
+		return implement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImplementationClass createImplementationClass() {
+		ImplementationClassImpl implementationClass = new ImplementationClassImpl();
+		return implementationClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Instantiate createInstantiate() {
+		InstantiateImpl instantiate = new InstantiateImpl();
+		return instantiate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Library createLibrary() {
+		LibraryImpl library = new LibraryImpl();
+		return library;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Metaclass createMetaclass() {
+		MetaclassImpl metaclass = new MetaclassImpl();
+		return metaclass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModelLibrary createModelLibrary() {
+		ModelLibraryImpl modelLibrary = new ModelLibraryImpl();
+		return modelLibrary;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.profile.standard.Process createProcess() {
+		ProcessImpl process = new ProcessImpl();
+		return process;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Realization createRealization() {
+		RealizationImpl realization = new RealizationImpl();
+		return realization;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Refine createRefine() {
+		RefineImpl refine = new RefineImpl();
+		return refine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Responsibility createResponsibility() {
+		ResponsibilityImpl responsibility = new ResponsibilityImpl();
+		return responsibility;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Script createScript() {
+		ScriptImpl script = new ScriptImpl();
+		return script;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Send createSend() {
+		SendImpl send = new SendImpl();
+		return send;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Service createService() {
+		ServiceImpl service = new ServiceImpl();
+		return service;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Source createSource() {
+		SourceImpl source = new SourceImpl();
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Specification createSpecification() {
+		SpecificationImpl specification = new SpecificationImpl();
+		return specification;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Subsystem createSubsystem() {
+		SubsystemImpl subsystem = new SubsystemImpl();
+		return subsystem;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Trace createTrace() {
+		TraceImpl trace = new TraceImpl();
+		return trace;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Type createType() {
+		TypeImpl type = new TypeImpl();
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Utility createUtility() {
+		UtilityImpl utility = new UtilityImpl();
+		return utility;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BuildComponent createBuildComponent() {
+		BuildComponentImpl buildComponent = new BuildComponentImpl();
+		return buildComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Metamodel createMetamodel() {
+		MetamodelImpl metamodel = new MetamodelImpl();
+		return metamodel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemModel createSystemModel() {
+		SystemModelImpl systemModel = new SystemModelImpl();
+		return systemModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StandardPackage getStandardPackage() {
+		return (StandardPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static StandardPackage getPackage() {
+		return StandardPackage.eINSTANCE;
+	}
+
+} //StandardFactoryImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SubsystemImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SubsystemImpl.java
new file mode 100644
index 0000000..fa790fd
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SubsystemImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.Subsystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Subsystem</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.SubsystemImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SubsystemImpl extends CDOObjectImpl implements Subsystem {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SubsystemImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SUBSYSTEM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.SUBSYSTEM__BASE_COMPONENT,
+				StandardPackage.Literals.SUBSYSTEM__BASE_COMPONENT, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetBase_Component() {
+		return (Component) eDynamicGet(StandardPackage.SUBSYSTEM__BASE_COMPONENT,
+				StandardPackage.Literals.SUBSYSTEM__BASE_COMPONENT, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Component(Component newBase_Component) {
+		eDynamicSet(StandardPackage.SUBSYSTEM__BASE_COMPONENT, StandardPackage.Literals.SUBSYSTEM__BASE_COMPONENT,
+				newBase_Component);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.SUBSYSTEM__BASE_COMPONENT:
+			if (resolve)
+				return getBase_Component();
+			return basicGetBase_Component();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.SUBSYSTEM__BASE_COMPONENT:
+			setBase_Component((Component) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SUBSYSTEM__BASE_COMPONENT:
+			setBase_Component((Component) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SUBSYSTEM__BASE_COMPONENT:
+			return basicGetBase_Component() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SubsystemImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SystemModelImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SystemModelImpl.java
new file mode 100644
index 0000000..12c4016
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/SystemModelImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.SystemModel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>System Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.SystemModelImpl#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SystemModelImpl extends CDOObjectImpl implements SystemModel {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.SYSTEM_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Model getBase_Model() {
+		return (Model) eDynamicGet(StandardPackage.SYSTEM_MODEL__BASE_MODEL,
+				StandardPackage.Literals.SYSTEM_MODEL__BASE_MODEL, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Model basicGetBase_Model() {
+		return (Model) eDynamicGet(StandardPackage.SYSTEM_MODEL__BASE_MODEL,
+				StandardPackage.Literals.SYSTEM_MODEL__BASE_MODEL, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Model(Model newBase_Model) {
+		eDynamicSet(StandardPackage.SYSTEM_MODEL__BASE_MODEL, StandardPackage.Literals.SYSTEM_MODEL__BASE_MODEL,
+				newBase_Model);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.SYSTEM_MODEL__BASE_MODEL:
+			if (resolve)
+				return getBase_Model();
+			return basicGetBase_Model();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.SYSTEM_MODEL__BASE_MODEL:
+			setBase_Model((Model) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SYSTEM_MODEL__BASE_MODEL:
+			setBase_Model((Model) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.SYSTEM_MODEL__BASE_MODEL:
+			return basicGetBase_Model() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SystemModelImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TraceImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TraceImpl.java
new file mode 100644
index 0000000..14184b3
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TraceImpl.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.Trace;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trace</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.TraceImpl#getBase_Abstraction <em>Base Abstraction</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TraceImpl extends CDOObjectImpl implements Trace {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TraceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.TRACE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction getBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.TRACE__BASE_ABSTRACTION,
+				StandardPackage.Literals.TRACE__BASE_ABSTRACTION, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Abstraction basicGetBase_Abstraction() {
+		return (Abstraction) eDynamicGet(StandardPackage.TRACE__BASE_ABSTRACTION,
+				StandardPackage.Literals.TRACE__BASE_ABSTRACTION, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Abstraction(Abstraction newBase_Abstraction) {
+		eDynamicSet(StandardPackage.TRACE__BASE_ABSTRACTION, StandardPackage.Literals.TRACE__BASE_ABSTRACTION,
+				newBase_Abstraction);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.TRACE__BASE_ABSTRACTION:
+			if (resolve)
+				return getBase_Abstraction();
+			return basicGetBase_Abstraction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.TRACE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.TRACE__BASE_ABSTRACTION:
+			setBase_Abstraction((Abstraction) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.TRACE__BASE_ABSTRACTION:
+			return basicGetBase_Abstraction() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TraceImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TypeImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TypeImpl.java
new file mode 100644
index 0000000..aa99a57
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/TypeImpl.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.Type;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.TypeOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.TypeImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TypeImpl extends CDOObjectImpl implements Type {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.TYPE__BASE_CLASS,
+				StandardPackage.Literals.TYPE__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.TYPE__BASE_CLASS,
+				StandardPackage.Literals.TYPE__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.TYPE__BASE_CLASS, StandardPackage.Literals.TYPE__BASE_CLASS, newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateCannotBeSpecification(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return TypeOperations.validateCannotBeSpecification(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.TYPE__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.TYPE__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.TYPE__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.TYPE__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.TYPE___VALIDATE_CANNOT_BE_SPECIFICATION__DIAGNOSTICCHAIN_MAP:
+			return validateCannotBeSpecification((DiagnosticChain) arguments.get(0),
+					(Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //TypeImpl
diff --git a/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/UtilityImpl.java b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/UtilityImpl.java
new file mode 100644
index 0000000..0b7d10d
--- /dev/null
+++ b/cdo/bundles/uml/org.eclipse.uml2.uml.profile.standard.cdo/src/org/eclipse/uml2/uml/profile/standard/cdo/UtilityImpl.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2014, 2018 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *   Kenn Hussey (CEA) - initial API and implementation
+ *   Kenn Hussey (CEA) - 451350
+ *   Kenn Hussey - 535301
+ *
+ */
+package org.eclipse.uml2.uml.profile.standard.cdo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+import org.eclipse.uml2.uml.profile.standard.Utility;
+import org.eclipse.uml2.uml.profile.standard.internal.operations.UtilityOperations;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Utility</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.uml2.uml.profile.standard.cdo.UtilityImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class UtilityImpl extends CDOObjectImpl implements Utility {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UtilityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return StandardPackage.Literals.UTILITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.UTILITY__BASE_CLASS,
+				StandardPackage.Literals.UTILITY__BASE_CLASS, true, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return (org.eclipse.uml2.uml.Class) eDynamicGet(StandardPackage.UTILITY__BASE_CLASS,
+				StandardPackage.Literals.UTILITY__BASE_CLASS, false, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		eDynamicSet(StandardPackage.UTILITY__BASE_CLASS, StandardPackage.Literals.UTILITY__BASE_CLASS, newBase_Class);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateIsUtility(DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return UtilityOperations.validateIsUtility(this, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case StandardPackage.UTILITY__BASE_CLASS:
+			if (resolve)
+				return getBase_Class();
+			return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case StandardPackage.UTILITY__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case StandardPackage.UTILITY__BASE_CLASS:
+			setBase_Class((org.eclipse.uml2.uml.Class) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case StandardPackage.UTILITY__BASE_CLASS:
+			return basicGetBase_Class() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case StandardPackage.UTILITY___VALIDATE_IS_UTILITY__DIAGNOSTICCHAIN_MAP:
+			return validateIsUtility((DiagnosticChain) arguments.get(0), (Map<Object, Object>) arguments.get(1));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //UtilityImpl
diff --git a/cdo/bundles/uml/pom.xml b/cdo/bundles/uml/pom.xml
index 437fca6..0acf89d 100755
--- a/cdo/bundles/uml/pom.xml
+++ b/cdo/bundles/uml/pom.xml
@@ -14,6 +14,7 @@
 	
 	<modules>
 		<module>org.eclipse.uml2.uml.cdo</module>
+		<module>org.eclipse.uml2.uml.profile.standard.cdo</module>
 	</modules>
 	
 	<packaging>pom</packaging>
diff --git a/cdo/features/org.eclipse.papyrus.cdo.models.feature/feature.xml b/cdo/features/org.eclipse.papyrus.cdo.models.feature/feature.xml
index 955d136..dc1d2b5 100755
--- a/cdo/features/org.eclipse.papyrus.cdo.models.feature/feature.xml
+++ b/cdo/features/org.eclipse.papyrus.cdo.models.feature/feature.xml
@@ -56,4 +56,26 @@
          install-size="0"
          version="0.0.0"
          unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.infra.core.architecture.cdo"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.infra.nattable.model.cdo"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.uml2.uml.profile.standard.cdo"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>